我正在使用Python,我有一些数据,我想将其放入树格式并分配代码.这是一些示例数据:
Africa North Africa Algeria
Africa North Africa Morocco
Africa West Africa Ghana
Africa West Africa Sierra Leone
Run Code Online (Sandbox Code Playgroud)
这些数据的适当树结构是什么?
另外,有没有办法可以从这个树结构中检索数字代码,这样我就可以查询数据并获得如下例子的代码?
def get_code(place_name):
# Python magic query to my tree structure
return code
get_code("Africa") # returns 1
get_code("North Africa") # returns 1.1
get_code("Morocco") # returns 1.1.2
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助 - 我还有很多东西需要学习Python :)
我是perl的新手,但想知道是否有人知道一个类似于以下PHP版本的脚本,效果很好!
private function resolve_href ( $base, $href ) {
if (!$href)
return $base;
$rel_parsed = parse_url($href);
if (array_key_exists('scheme', $rel_parsed))
return $href;
$base_parsed = parse_url("$base ");
if (!array_key_exists('path', $base_parsed))
$base_parsed = parse_url("$base/ ");
if ($href{0} === "/")
$path = $href;
else
$path = dirname($base_parsed['path']) . "/$href";
$path = preg_replace('~/\./~', '/', $path);
$parts = array();
foreach ( explode('/', preg_replace('~/+~', '/', $path)) as $part ) {
if ($part === "..")
array_pop($parts);
elseif ($part!="")
$parts[] = $part;
}
$dir = ( ( array_key_exists('scheme', $base_parsed)) …Run Code Online (Sandbox Code Playgroud) 我正在阅读一本书,我尝试运行这个例子,但是我收到了一个分段错误 - gdb说它是在设置argv [0] = filename时;
此代码直接从本书的可下载代码示例中复制/粘贴.
#include <unistd.h>
int main() {
char filename[] = "/bin/sh\x00";
char **argv, **envp; // arrays that contain char pointers
argv[0] = filename; // only argument is filename - segmentation fault here
argv[1] = 0; // null terminate the argument array
envp[0] = 0; // null terminate the environment array
execve(filename, argv, envp);
}
Run Code Online (Sandbox Code Playgroud)
编辑:这本书是黑客:Jon Erickson的剥削艺术,它有很好的评论.此特定示例用作将shell转换为shellcode部分中的机器代码的第一个教程,特别是它是exec_shell.c,可以从http://nostarch.com/hacking2/htm下载.我想一些有关使用此代码的上下文是必要的,以避免下面的一些负面评论,抱歉留下详细信息,并感谢您的帮助.
在Railcasts上,我注意到了一个非常有趣的功能"转到符号"窗口.它的工作方式与Command-T类似,但显示当前文件中的可用类和方法.如何在vim中获取它?
如何删除动物园系列的最后100个元素?
我知道名字[-element]符号,但我不能让它减去一个完整的部分
我想确保选定的ListViewItem的非聚焦背景与聚焦背景相同.我知道这样做的常用方法如下:
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Blue"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Blue"/>
Run Code Online (Sandbox Code Playgroud)
但是,问题是我不想指定颜色,我只想要其键为ControlBrushKey的静态资源返回的Brush与HighlightBrushKey的刷子相同.
我正在尝试创建一个CustomActivity,以便在每次成功构建后运行.
我已经按照几个教程的确切步骤进行了操作
所有这些都导致我得到相同的结果 - 几秒钟后构建失败并出现此错误:
TF215097: An error occurred while initializing a build for build definition
\MyCompany\Dev - Client: Cannot create unknown type '{clr-
namespace:BuildTasks.Activities;assembly=BuildTasks}TFSBuildLocalizer'.
Run Code Online (Sandbox Code Playgroud)
我发现我删除了CodeActivity项目中的所有自定义引用,并注释掉了所有代码.
我已将输出dll添加到TFS,并且我在项目的属性中有以下post构建脚本:
"$(DevEnvDir)\TF.exe" checkout "$/MyCompany/Development/Djenne/Dev/Tools/BuildProcess/Output/$(TargetFileName)"
copy /Y "$(TargetPath)" "C:\tfs2010\MyCompany\Dev\Tools\BuildProcess\Output\$(TargetFileName)"
"$(DevEnvDir)\TF.exe" checkin "$/MyCompany/Development/Djenne/Dev/Tools/BuildProcess/Output/$(TargetFileName)"
Run Code Online (Sandbox Code Playgroud)
我确保工作流xaml中的命名空间对于自定义CodeActivity是正确的.
我不知道我还能尝试什么,
请帮忙!
谢谢,
编辑:我正在添加更多关于我已经尝试过的内容的描述:
CodeActivity类已经具有以下属性:
[BuildActivity(HostEnvironmentOption.All)]
Run Code Online (Sandbox Code Playgroud)
CodeActivity类包含在Activity Library项目中.这是csproj文件中的ProjectTypeGuids标记:
<ProjectTypeGuids>{32f31d43-81cc-4c15-9de6-3fc5453562b6};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)
在自定义工作流xaml中,我在"获取受影响的测试,索引源和发布符号"之后立即添加了我的CodeActivity
我目前在CodeActivity中没有任何InArgument或OutArgument.
这些是我的CodeActivity项目中的引用:
在"构建控制器属性"中,我将"自定义程序集的版本控制路径"设置为与我的后构建脚本具有相同的TFS路径:$/MyCompany/Development/Djenne/DEV/Tools/BuildProcess/Output
在我的构建定义中,我使用自定义工作流xaml设置了"构建流程模板".
谢谢你们的答案,你还有什么想法吗?谢谢
我正在尝试使用此线程中找到的方法拆分字符串,但我正在尝试将其调整为wstring.但是,我偶然发现了一个奇怪的错误.检查代码:
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main(void)
{
wstring str(L"Börk börk");
wistringstream iss(str);
vector<wstring> tokens;
copy(istream_iterator<wstring>(iss), // I GET THE ERROR HERE
istream_iterator<wstring>(),
back_inserter< vector<wstring> >(tokens));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
确切的错误消息是:
error: no matching function for call to 'std::istream_iterator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, char, std::char_traits<char>, int>::istream_iterator(std::wistringstream&)'
Run Code Online (Sandbox Code Playgroud)
我认为它说它不能使用传递的实例化istream_iterator iss(这是一个w istringstream而不是istringstream).这是在使用XCode和GCC 4.2的Mac上.和AFAIK没有wistring_iterator或类似的东西.
当我使用非wstring版本时它完美地工作.正如您可能看到我已经更改了要使用的声明wstring,wistringstreams和vector<wstring>,只是将所有内容替换为使用宽版本.
什么可能导致这个,为什么它不接受wstring-version?
我有一个复选框,以及一个ItemsControl,通过以下方式填充几个DataGrids:
<Checkbox Content="Birthday Column Visible" x:Name="UI_BirthdayVisibleCB" />
<ItemsControl ItemsSource="{Binding Path=ParentsCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Children}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Birthday" Width="120" Visibility="{Binding IsChecked, ElementName=UI_BirthdayVisibleCB, Converter={StaticResource BoolToVis}}" >
...
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Rest of closing tags>
Run Code Online (Sandbox Code Playgroud)
这会在尝试在DataGridTemplateColumn上查找IsChecked时创建绑定输出错误.如果我尝试搜索相对祖先,我会收到异常:
Binding.RelativeSource cannot be set while using Binding.ElementName.
Run Code Online (Sandbox Code Playgroud)
我有一个ViewModel,并且主要坚持MVVM,但在这种情况下,我真的想在View层上保持列可见性.请注意,BoolToVis只需将布尔值转换为可见性.
编辑
这是我正在尝试做的一个例子:
<DataGridTemplateColumn Header="Birthday" Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MyView} }, Path=IsChecked, ElementName=UI_BirthdayVisibleCB, Converter={StaticResource BoolToVis}}" />
Run Code Online (Sandbox Code Playgroud)
它编译但不运行,它抛出上面的异常.
我有以下C代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int a;
}node;
int main()
{
node * n;
printf("\n%d\n",n->a);
n = (node *) malloc ( sizeof( node ));
printf("\n%d\n",n->a);
n->a = 6;
printf("\n%d\n",n->a);
free(n);
printf("\n%d\n",n->a);
n->a = 4;
printf("\n%d\n",n->a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
获得的输出是:
1314172
0
6
0
4
我的问题是即使在free(n)之后,为什么n-> a = 0,我们如何将它重新分配给任何值,如n-> a = 4?
不自由使n指向的内存块无效吗?