1.window.open()
2.面试成功宝典之 Window 深入源码分析
3.win10 + CUDA 9.0 + cuDNN 7.0 + tensorflow源码编译安装
4.本人是源码学程序设计的,想了解下最基本的源码程序源码,怎样变成像WINDOWS上这样窗口化的源码软件?
window.open()
ã1ãæåºæ¬çå¼¹åºçªå£ä»£ç ã
<SCRIPT LANGUAGE="javascript">
<!--
window.open ('page.html')
-->
</SCRIPT>
å 为çæ¯ä¸æ®µjavascripts代ç ï¼æ以å®ä»¬åºè¯¥æ¾å¨<SCRIPT LANGUAGE="javascript">æ ç¾å</script>ä¹é´ã<!-- å -->æ¯å¯¹ä¸äºçæ¬ä½çæµè§å¨èµ·ä½ç¨ï¼å¨è¿äºèæµè§å¨ä¸ä¸ä¼å°æ ç¾ä¸ç代ç ä½ä¸ºææ¬æ¾ç¤ºåºæ¥ãè¦å »æè¿ä¸ªå¥½ä¹ æ¯åãwindow.open ('page.html') ç¨äºæ§å¶å¼¹åºæ°ççªå£page.htmlï¼å¦æpage.htmlä¸ä¸ä¸»çªå£å¨åä¸è·¯å¾ä¸ï¼åé¢åºåæè·¯å¾ï¼ç»å¯¹è·¯å¾(http://)åç¸å¯¹è·¯å¾(../)åå¯ãç¨åå¼å·ååå¼å·é½å¯ä»¥ï¼åªæ¯ä¸è¦æ··ç¨ãè¿ä¸æ®µä»£ç å¯ä»¥å å ¥HTMLçä»»æä½ç½®ï¼<head>å</head>ä¹é´å¯ä»¥ï¼<body>é´</body>ä¹å¯ä»¥ï¼è¶åè¶æ©æ§è¡ï¼å°¤å ¶æ¯é¡µé¢ä»£ç é¿ï¼åæ³ä½¿é¡µé¢æ©ç¹å¼¹åºå°±å°½éå¾åæ¾ã
ã2ãç»è¿è®¾ç½®åçå¼¹åºçªå£ã
ä¸é¢å说ä¸è¯´å¼¹åºçªå£ç设置ãåªè¦åå¾ä¸é¢ç代ç ä¸å ä¸ç¹ä¸è¥¿å°±å¯ä»¥äºã æ们æ¥å®å¶è¿ä¸ªå¼¹åºççªå£çå¤è§ï¼å°ºå¯¸å¤§å°ï¼å¼¹åºçä½ç½®ä»¥éåºè¯¥é¡µé¢çå ·ä½æ åµã
<SCRIPT LANGUAGE="javascript">
<!--
window.open ('page.html', 'newwindow', 'height=, width=, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //è¿å¥è¦åæä¸è¡
-->
</SCRIPT>
åæ°è§£éï¼
<SCRIPT LANGUAGE="javascript"> jsèæ¬å¼å§ï¼
window.open å¼¹åºæ°çªå£çå½ä»¤ï¼
'page.html' å¼¹åºçªå£çæ件åï¼
'newwindow' å¼¹åºçªå£çååï¼ä¸æ¯æ件åï¼ï¼éå¿ é¡»ï¼å¯ç¨ç©º''代æ¿ï¼
height= çªå£é«åº¦ï¼
width= çªå£å®½åº¦ï¼
top=0 çªå£è·ç¦»å±å¹ä¸æ¹çè±¡ç´ å¼ï¼
left=0 çªå£è·ç¦»å±å¹å·¦ä¾§çè±¡ç´ å¼ï¼
toolbar=no æ¯å¦æ¾ç¤ºå·¥å ·æ ï¼yes为æ¾ç¤ºï¼
menubarï¼scrollbars 表示èåæ åæ»å¨æ ã
resizable=no æ¯å¦å 许æ¹åçªå£å¤§å°ï¼yes为å 许ï¼
location=no æ¯å¦æ¾ç¤ºå°åæ ï¼yes为å 许ï¼
status=no æ¯å¦æ¾ç¤ºç¶ææ å çä¿¡æ¯ï¼é常æ¯æ件已ç»æå¼ï¼ï¼yes为å 许ï¼
</SCRIPT> jsèæ¬ç»æ
ã3ãç¨å½æ°æ§å¶å¼¹åºçªå£ã
ä¸é¢æ¯ä¸ä¸ªå®æ´ç代ç ã
<html>
<head>
<script LANGUAGE="JavaScript">
<!--
function openwin() {
window.open ("page.html", "newwindow", "height=, width=, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") //åæä¸è¡
}
//-->
</script>
</head>
<body onload="openwin()">
ä»»æç页é¢å 容...
</body>
</html>
è¿éå®ä¹äºä¸ä¸ªå½æ°openwin(),å½æ°å 容就æ¯æå¼ä¸ä¸ªçªå£ãå¨è°ç¨å®ä¹å没æä»»ä½ç¨éãæä¹è°ç¨å¢ï¼
æ¹æ³ä¸ï¼<body onload="openwin()"> æµè§å¨è¯»é¡µé¢æ¶å¼¹åºçªå£ï¼
æ¹æ³äºï¼<body onunload="openwin()"> æµè§å¨ç¦»å¼é¡µé¢æ¶å¼¹åºçªå£ï¼
æ¹æ³ä¸ï¼ç¨ä¸ä¸ªè¿æ¥è°ç¨ï¼
<a href="#" onclick="openwin()">æå¼ä¸ä¸ªçªå£</a>
注æï¼ä½¿ç¨çâ#âæ¯èè¿æ¥ã
æ¹æ³åï¼ç¨ä¸ä¸ªæé®è°ç¨ï¼
<input type="button" onclick="openwin()" value="æå¼çªå£">
ã4ãåæ¶å¼¹åº2个çªå£ã
对æºä»£ç ç¨å¾®æ¹å¨ä¸ä¸ï¼
<script LANGUAGE="JavaScript">
<!--
function openwin() {
window.open ("page.html", "newwindow", "height=, width=, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=n o, status=no")//åæä¸è¡
window.open ("page2.html", "newwindow2", "height=, width=, top=1 , left=,toolbar=no, menubar=no, scrollbars=no, resizable=no, loca tion=no, status=no")//åæä¸è¡
}
//-->
</script>
为é¿å å¼¹åºç2个çªå£è¦çï¼ç¨topåleftæ§å¶ä¸ä¸å¼¹åºçä½ç½®ä¸è¦ç¸äºè¦çå³å¯ ãæåç¨ä¸é¢è¯´è¿çåç§æ¹æ³è°ç¨å³å¯ã
注æï¼2个çªå£çname(newwindowsånewwindow2)ä¸è¦ç¸åï¼æè å¹²èå ¨é¨ä¸ºç©ºã
ã5ã主çªå£æå¼æ件1.htmï¼åæ¶å¼¹åºå°çªå£page.htmlã
å¦ä¸ä»£ç å å ¥ä¸»çªå£<head>åºï¼
<script language="javascript">
<!--
function openwin() {
window.open("page.html","","width=,height=")
}
//-->
</script>
å å ¥<body>åºï¼
<a href="1.htm" onclick="openwin()">open</a>å³å¯ã
ã6ãå¼¹åºççªå£ä¹å®æ¶å ³éæ§å¶ã
ä¸é¢æ们å对弹åºççªå£è¿è¡ä¸äºæ§å¶ï¼ææå°±æ´å¥½äºãå¦ææ们åå°ä¸å°æ®µ 代ç å å ¥å¼¹åºç页é¢(注ææ¯å å ¥page.htmlçHTMLä¸ï¼å¯ä¸æ¯ä¸»é¡µé¢ä¸ï¼å¦å ...)ï¼è®©å®ç§åèªå¨å ³éæ¯ä¸æ¯æ´é ·äºï¼
é¦å ï¼å°å¦ä¸ä»£ç å å ¥page.htmlæ件ç<head>åºï¼
<script language="JavaScript">
function closeit()
{
setTimeout("self.close()",) //毫ç§
}
</script>
ç¶åï¼åç¨<body onload="closeit()"> è¿ä¸å¥è¯ä»£æ¿page.htmlä¸åæç<BODY>è¿ä¸å¥å°±å¯ä»¥äºã(è¿ä¸å¥è¯åä¸ä¸è¦å¿è®°ååï¼è¿ä¸å¥çä½ç¨æ¯è°ç¨å ³éçª å£ç代ç ï¼ç§éåå°±èªè¡å ³é该çªå£ã)
ã7ãå¨å¼¹åºçªå£ä¸å ä¸ä¸ä¸ªå ³éæé®ã
<FORM>
<INPUT TYPE='BUTTON' VALUE='å ³é' ){
openwin()
document.cookie="popped=yes"
}
}
</script>
ç¶åï¼ç¨<body onload="loadpopup()">ï¼æ³¨æä¸æ¯openwinèæ¯loadpopåï¼ï¼æ¿æ¢ä¸»é¡µé¢ä¸åæç<BODY>è¿ä¸å¥å³å¯ãä½ å¯ä»¥è¯çå·æ°ä¸ä¸è¿ä¸ªé¡µé¢æéæ°è¿ å ¥è¯¥é¡µé¢ï¼çªå£åä¹ä¸ä¼å¼¹åºäºãçæ£çPop-Only-Onceï¼
åå°è¿éå¼¹åºçªå£çå¶ä½ååºç¨æå·§åºæ¬ä¸ç®æ¯å®æäº!
面试成功宝典之 Window 深入源码分析
Window 是Android系统中至关重要的组件,它作为抽象基类,源码用于构建视图树和定义布局参数。源码PhoneWindow是源码照片投票系统源码其具体实现,常见于Activity、源码Dialog和Toast中。源码在Activity的源码attach()函数中,会创建一个新的源码PhoneWindow实例。
Window与视图的源码交互是通过ViewRootImpl中介,它连接View和WindowManager,源码而WindowManager本身是源码蛛网评分源码一个接口,实际操作由WindowManagerImpl实现。源码添加Window的源码过程涉及WindowManagerImpl的addView方法,这个过程采用线程安全策略,包含了初始化、设置View、布局调整及View绘制检查等步骤,最终通过WindowSession的Binder通信实现。
Window的更新是通过updateViewLayout方法,更新View的布局参数,替换旧的LayoutParams。删除过程则调用removeView方法,区分同步和异步删除,spice源码编译异步删除会通过handler消息和die方法逐步执行,最终在dispatchDetachedFromWindow中完成真正的删除操作。
win + CUDA 9.0 + cuDNN 7.0 + tensorflow源码编译安装
在配置个人深度学习主机后,安装必备软件环境成为首要任务。使用Anaconda5.0.0 python3.6版本管理Win python环境,新建基于python3.5的tensorflow-gpu-py conda环境。直接使用conda安装tensorflow,会默认安装tensorflow-gpu 1.1.0并主动安装cudatoolkit8.0 + cudnn6.0。若需配置CUDA环境,需自行下载并安装cuda9.0 + cudnn7.0,配置环境变量。pip安装tensorflow,dot指标源码会默认安装最新版本tensorflow-gpu 1.3.0。配置不当导致import tensorflow时报错:'ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'。尝试源码编译tensorflow解决此问题。
查阅tensorflow官网文档,了解cmake window build tensorflow方法。文档中提到,tensorflow源代码目录下有详细网页介绍Windows环境编译方法,包含重要信息。发现安装tensorflow-gpu版本、配置CUDA8.0 + cuDNN6.0/cuDNN5.1或CUDA9.0 + cuDNN7.0时,import tensorflow时报错。查阅错误信息,网页源码恢复网上解答提及需要配置正确的CUDA和cuDNN版本。然而,尝试安装和配置后依然报错。安装tensorflow cpu版本无问题,确认CUDA环境配置错误。
决定源码编译tensorflow-gpu以解决问题。查阅文档,执行编译操作。在window环境下编译tensorflow源码,需要准备的软件包括Git、tensorflow源码、anaconda、swig、CMake、CUDA、cuDNN、Visual Studio 。在百度网盘下载相关软件。
配置过程中,修改CMakeLists.txt以适应CUDA 9.0 + cuDNN 7.0。在cmake目录下新建build文件夹,执行命令配置tensorflow。配置后进行编译,遇到问题如:cudnnSetRNNDescriptor参数不匹配、网络访问问题、编码问题、protobuf库下载问题、zlib.h文件不存在、下载链接失败、无法解决的错误等。
为解决这些问题,采取相应措施,如修改cuda_dnn.cc文件、网络代理设置、文件编码转换、忽略警告信息、多次尝试下载、修改cmake配置文件等。遇到无法解决的问题,如CUDA编译器问题、特定源代码文件问题,提交至github tensorflow进行讨论。
完成源码编译后,安装tensorflow-gpu并进行验证。在下一步中继续讨论验证过程和可能遇到的后续问题。整个编译过程耗时、复杂,需要耐心和细心,希望未来能有官方解决方案以简化编译过程。
本人是学程序设计的,想了解下最基本的程序源码,怎样变成像WINDOWS上这样窗口化的软件?
呵呵,一年半前我和你一样,也处于这个状态,如果你做windows的程序设计的话,编程像windows这样的窗口化的软件,你必须接触VS,旗下的VC++或VC#,你学完c和c++先接触VC++的MFC较为容易,使用MFC APP向导可以直接生成你所说的windows这样窗口程序,刚开始你是不知道如何生成的,为此你需要边学windows程序设计,建议使用《windows程序设计》,里面介绍了一个基本窗体生成的原理和步骤。如果你要学VC#,那你得先学C#,离做一个windows这样窗口程序比较远,而且也不知道它生成的原理,当然既然c和c++学的不错的话,c#入门也不难。如下是一个窗体生成的windows源码:
/*--------------------------------------
CLOCK.C -- Analog Clock Program
(c) Charles Petzold,
--------------------------------------*/
#include <windows.h>
#include <math.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Clock") ;
HWND hwnd;
MSG msg;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = NULL ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("Program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, TEXT ("GDI Test"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HDC hdc;
static PAINTSTRUCT ps;
static COLORREF color;
static UINT ixClient,iyClient;
static RECT rtWindow , rtClient;
switch (message)
{
case WM_CREATE :
GetWindowRect( hwnd , &rtWindow );
GetClientRect( hwnd , &rtClient );
return 0 ;
case WM_NCPAINT:
hdc = GetWindowDC( hwnd );
color = GetPixel( hdc , , 5 );
SetBkColor( hdc , color );
SetTextColor( hdc , RGB(,0,0) );
TextOut( hdc , , ,
"Editor : CM" , strlen("Editor : CM") );
ReleaseDC( hwnd , hdc );
return 0;
case WM_SIZE :
ixClient = LOWORD( wParam );
iyClient = HIWORD( wParam );
return 0 ;
case WM_TIMER :
return 0 ;
case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;
TextOut( hdc , , , "Editor : CM" , strlen("Editor : CM") );
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY :
PostQuitMessage(0);
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}