我需要编写一个查询,它接受行并将其转换为列 - 这是我的表:
Count fname lname id
-----------------------------
1 abc def 20
2 pqr 20
3 abc xyz 20
4 xyz xyz 20
1 abc def 21
1 pqr xyz 22
2 abc abc 22
Run Code Online (Sandbox Code Playgroud)
这是我想要产生的输出:
id fname lname fname lname fname lname fname lname
-------------------------------------------------------------
20 abc def pqr NULL abc xyz xyz xyz
21 abc def NULL NULL NULL NULL NULL NULL
22 abc abc NULL NULL NULL NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
每个id的最大计数值是4.我正在使用Oracle 9i.
我有两个PNG文件,"red.png"和"blue.png"; 它们都是透明的,但在不同的地方有一些像素的红色或蓝色斑点.
我想制作一个融合两者的PHP脚本; 它应该像以下一样简单:
$original = getPNG('red.png');
$overlay = getPNG('blue.png');
imagecopymerge($original, $overlay, 0,0, 0,0, imagesx($original), imagesy($original), 100);
header('Content-Type: image/png');
imagepng($original);
Run Code Online (Sandbox Code Playgroud)
当我运行这个脚本时,我得到的只是蓝点 - 透明度丢失了.我看到我应该添加这些:
imagealphablending($original, false);
imagesavealpha($original, true);
Run Code Online (Sandbox Code Playgroud)
(在原始和重叠上?)这似乎没有任何帮助.
我在PHP.net上看到了一些解决方法,可以解决这个问题:
$throwAway = imagecreatefrompng($filename);
imagealphablending($throwAway, false);
imagesavealpha($throwAway, true);
$dstImage = imagecreatetruecolor(imagesx($throwAway), imagesy($throwAway));
imagecopyresampled($dstImage, $throwAway,0,0,0,0, imagesx($throwAway), imagesy($throwAway), imagesx($throwAway), imagesy($throwAway));
Run Code Online (Sandbox Code Playgroud)
,它应该将PNG转换为"真彩色"图像并保持透明度.它确实似乎这样做了,但现在我看到的只是黑色背景上的蓝色.
我该怎么办?!
一位朋友告诉我关于Pylint的事情,出于好奇,我对一些标准库模块进行了操作.令我惊讶的是,收视率很低.这里有几个运行:
os.py
Your code has been rated at 3.55/10
random.py
Your code has been rated at 4.74/10
Run Code Online (Sandbox Code Playgroud)
我在一些模块上运行它,发现评级为~6 - 7.
我想知道这背后的原因?Pylint是否破损或评级的因素多于我所知的?我问这个问题特别是因为我是Python的新手,并依赖于Pylint来帮助我改进我的编码风格:)
什么是最简洁的方法来确定是否@hash[:key1][:key2]已定义,如果@hash或@hash[:key1]为零,则不会抛出错误?
defined?(@hash[:key1][:key2])如果@hash[:key1]存在则返回True (它不确定是否:key2已定义)
如何在运行时获取自己的程序名称?什么是Go等同于C/C++的argv [0]?对我来说,使用正确的名称生成用法很有用.
更新:添加了一些代码.
package main
import (
"flag"
"fmt"
"os"
)
func usage() {
fmt.Fprintf(os.Stderr, "usage: myprog [inputfile]\n")
flag.PrintDefaults()
os.Exit(2)
}
func main() {
flag.Usage = usage
flag.Parse()
args := flag.Args()
if len(args) < 1 {
fmt.Println("Input file is missing.");
os.Exit(1);
}
fmt.Printf("opening %s\n", args[0]);
// ...
}
Run Code Online (Sandbox Code Playgroud) 我15岁的小弟弟正在开始编程,他写了一个简洁的小程序,输出六位数或更少的字母和数字的所有组合.他的代码是一个六元组嵌套的for循环,它更新了六级char数组的元素.它看起来很糟糕,但肯定很快!我向他展示了如何进行简单计数,并将这些数字转换为36.
最大的问题是由于我所做的分工,我的代码比他慢得多.有没有办法可以简单地假设基数为36并输出从1到36 ^ 6的计数?
理想情况下,我希望做类似的事情
[base 36]
for(int i = 0; i < 1000000; i++)
SaveForLaterFileOutput(i);
Run Code Online (Sandbox Code Playgroud) "考虑一个典型的Windows x86或AMD64架构,内存分为无法写入的可执行部分和可写入但无法执行的数据部分(想想DEP)."
"JIT编译内存中的方法,(通常)不会将任何内容存储到磁盘,而是将其移动到下一个指令指针可以到达的位置,更改当前指令指针(指向JIT)以指向新生成的代码,然后执行它."
这两段虽然有点过于简单,但我基本上理解JIT和Windows的内存模型.我也知道当我尝试手动复制内存中的一些可执行代码并尝试执行它时,我通常无法做到(除非使用DLL注入).
JIT设计师是如何克服这一障碍的?他们使用ring-0驱动程序还是在用户模式下完成所有操作?
我正在尝试从字符串返回强类型的枚举值.我确信有更好的方法可以做到这一点.对于像这样的简单事情,这看起来像是太多的代码:
public static DeviceType DefaultDeviceType
{
get
{
var deviceTypeString = GetSetting("DefaultDeviceType");
if (deviceTypeString.Equals(DeviceType.IPhone.ToString()))
return DeviceType.IPhone;
if (deviceTypeString.Equals(DeviceType.Android.ToString()))
return DeviceType.Android;
if (deviceTypeString.Equals(DeviceType.BlackBerry.ToString()))
return DeviceType.BlackBerry;
if (deviceTypeString.Equals(DeviceType.Other.ToString()))
return DeviceType.Other;
return DeviceType.IPhone; // If no default is provided, use this default.
}
}
Run Code Online (Sandbox Code Playgroud)
想法?
根据我从社会得到了反馈,我决定使用一个字符串转换为一个枚举的方法扩展.它需要一个参数(默认枚举值).该默认还提供了类型,所以一般可以推断,不需要使用<>被明确指定.该方法现在缩短为:
public static DeviceType DefaultDeviceType
{
get
{
return GetSetting("DefaultDeviceType").ToEnum(DeviceType.IPhone);
}
}
Run Code Online (Sandbox Code Playgroud)
非常酷的解决方案,可以在将来重用.
我有一个显示文字的窗口.文本分为两部分:第一部分是固定的,第二部分需要是窗口上声明的DependencyProperty的内容.
我考虑使用包含两个Spans的TextBlock,其中第一个包含固定内容,第二个包含变量内容,但我在Span类中看不到任何明显允许我绑定到上述DependencyProperty的内容.
我目前正在使用并排堆叠的两个标签,但这很难看,如果我想检索整个文本块的内容,就无法帮助我(正如我在窗口太窄时显示工具提示时所做的那样)显示整个文本块).
任何人都可以帮我解决这个看似简单的问题吗?谢谢.