CentOS5.5ã«Madwifiã¤ã³ã¹ãã¼ã«ã
ãªããè¶ ä¹ ãã¶ãã®ã¨ã³ããªã¼ã
èªå®
ã®LANç°å¢ãã¤ãã¤ãéãã¦æ³£ãã¦ããã®ã§LinuxBoxã§ã«ã¼ã¿ã¼ãä½ããã¨ã«ããã
pppoeã¨dhcpã¯ã¾ããããªãã¨ã
æç·ç°å¢ãæ´ã£ãã¨ããã§ç¡ç·ãã»ã»ã»ã¨æã£ããæªç¥é åéãã¦ããã¾ããã
NICã¯Buffaloã®WLI-UC-GNãè²·ã£ã¦ãã¦ãã¯ã©ã¤ã¢ã³ãã¢ã¼ãã¯ãªãã¨ãå®äºãããã®ã®ãæªã APã«ããããã®éä¸ã
ããã¾ã§æ大ã®ãã£ãããã¤ã³ãã®Madwifiãã¨ããããè¶ããã®ã§åå¿é²ã
ath/if_athvar.cã®118è¡ç®ã
//#define ATH_GET_NETDEV_DEV(ndev) ((ndev)->dev.parent) #define ATH_GET_NETDEV_DEV(ndev) ((ndev)->class_dev.dev)
ããã ãã
ããã§makeãéã£ãã
ãã¨ã¯å®æãããã¾ã¨ããæ¸ããã»ã»ã»
è¨ãããªããæ°ä»ããªã$.extendã®å¼æ°ã
$.extendã$.fn.extendãåããªãã ãã©ããã®ã¡ã½ããã«ã¯å¼æ°ã3種é¡ããã
ã¾ãã¯ã¡ã¸ã£ã¼ç³»2種ã
$.extend({ foo: 'bar' }); // jQuery.foo = 'bar'; var o = $.extend({ foo: 'bar' }, { fizz: 'buzz' }); // merge but shallow
jQueryèªä½ãæ¡å¼µãã1å¼æ°extendã¨ãå¼æ°ããã¼ã¸ããè¤å¼æ°extendã
ãã®è¾ºã¯pluginä½ã£ãããªãã ãã§è¯ãè¦ãããã
ãããããbut shallowãã¨ãæ¸ããæç¹ã§ãªããèªããã¨ã¯æããã©ã
第3ã®ã³ã¼ã«æ¹æ³ã¯ãdeep mergeã®ããã®ãã®ã
var o = $.extend(true, { foo: 'bar' }, { fizz: 'buzz' });
第1å¼æ°ãbooleanå¤ã«ããã¨ãdeep mergeã®æç¡ãæå®ãããã©ã°ã¨ãã¦æ±ãããã
ããã©ã«ããshallow mergeãªã ãã«ä½ãããdeep mergeããæ段ã¯ããã¨æã£ããã©ããããããã¨ã ã£ããããã
superãå¼ã¹ãç¶æ¿ã¡ã½ããã
javascriptã§ç¶æ¿ã¨ããã°ã
var Parent = function() {}; var Child = function() {}; Child.prototype = new Parent();
ã¨ããæãã§ãprototypeç¶æ¿ãã使ãã®ãæ®éï¼ã ã¨æãï¼ã
ãã ããã®ææ³ã§å°ãã¨ããããã
ãªã¼ãã¼ã©ã¤ãããåã¯ã©ã¹ã®ã¡ã½ããä¸ã§è¦ªã¯ã©ã¹ã®ååã¡ã½ãããå¼ã³ããã¨ãã
Child.prototype.method = function() { Parent.prototype.method.apply(this); };
ä¸å¿ä¸è¨ã®æ¹æ³ã§åã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã®ã³ã³ããã¹ãã§å¼ã¶ãã¨ã¯ã§ããã
ãã ãè¨æ³ãåé·ã«ãªã£ã¦ãã¾ãã®ã¨ã
親ã¯ã©ã¹åããã¼ãã³ã¼ãã£ã³ã°ããããããããã£çã«ä¿æãã¦ããªãã¨ãããªãã
ã¨ããããã§ä»¥ä¸ã®ããã«ä½¿ããç¶æ¿ã¡ã½ãããä½ã£ã¦ã¿ãã
var Parent = function() {}; Parent.prototype = { name: 'Parent', method: function() { alert(this.name); } }; var Child = (function() {}).inherit(Parent); Child.proto({ name: 'Child', method: function() { this.super().method(); } }); var p = new Parent(); var c = new Child(); p.method(); // Parent c.method(); // Child
Functionãªãã¸ã§ã¯ãããinherit()ãå¼ã¶ã¨ãå¼æ°ã§ä¸ããFunctionãªãã¸ã§ã¯ããç¶æ¿ããã
ã¾ããproto()ã¡ã½ããã§æ¢åã®prototypeã«è¦ç´ ã追å ã§ããã
åã¯ã©ã¹ã®ã¡ã½ããããsuper()ãå¼ã¶ã¨ã
èªåèªèº«ã®ã³ã³ããã¹ãã§è¦ªã¯ã©ã¹ã®ã¡ã½ãããå¼ã¹ããªãã¸ã§ã¯ããè¿ãã
ãªããä½ãç¶æ¿ãã¦ããªãã¯ã©ã¹ã®ãªãã¸ã§ã¯ãããå¼ã°ããå ´åã¯ãObjectã親ã¯ã©ã¹ã®ä»£ããã«ä½¿ç¨ããã
(´ã»Ïã»`)ãããä¸ã®ä¸ã«æ¢ã«ãã£ããããªããã ããã
id:amachangããã«ã¬ãã¥ã¼ãã¦ããããããªãã»ã»ã»ã¨ããé¡æã
ã³ã¼ãã®ä¸èº«ã¯ä»¥ä¸ã
/** * inherit.js - utility for class inheritation */ (function() { Object.prototype.proto = function(proto) { for (key in proto) { this.prototype[key] = proto[key]; } return this; }; Object.prototype.inherit = function(s) { if (typeof(s) != 'function') throw new Error('cannot inherit from non-function variable'); var f = function() {}; f.prototype = new s(); var p = this.prototype; this.prototype = new f(); this.proto(p); this.prototype.__super_proto__ = s.prototype; return this; }; Object.prototype.super = function() { if (typeof(this.__super_proto__) != 'object') this.__super_proto__ = Object.prototype; if (typeof(this.__super__) != 'object') { var s = {}; var p = this.__super_proto__; for (key in p) { if (typeof(p[key]) != 'function') { s[key] = p[key]; continue; } s[key] = (function(origin, target, method) { return function() { var args = Array.prototype.slice.call(arguments); return (this === origin) ? method.apply(target, args) : new method(args); }; })(s, this, p[key]); } this.__super__ = s; } return this.__super__; }; })();
Functionã«ã¾ã¤ããå¤æ çæ¤è¨¼ã
JavaScriptã®ä¸æè°ãªè¨èªæ§é ãFunctionã
ã©ããªããæ°ã«ãªãæåããã£ãã®ã§ç¢ºèªãã¦ã¿ãã
Functionãnewããã¨ãã¨callããã¨ãã§thisã£ã¦ã©ããªãã®ï¼
ã¾ãFunctionãä½ãã£ã¦ããã¨ã
var f = function() {};
ã®ããã«ãã¦ä½ããããé¢æ°åãªãã¸ã§ã¯ããã®ãã¨ã
Perlã®ç¡åé¢æ°ã®ããã«ããã®ã¾ã¾callãããã¨ãã§ããã
f();
JavaScriptç¬ç¹ã®æåã¨ãã¦ããã®Functionãªãã¸ã§ã¯ãã¯ã¯ã©ã¹ã®ããã«ãæ¯ãèãã
var o = new f();
ã¨ããã¨ãoã«ã¯ãfã¨ããã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãã¨ãè¨ãããªãã¸ã§ã¯ããå
¥ãã
ãã®ä»prototypeãäºã
ã¨ããã®ãããããä»åã®ä»¶ã¨ã¯é¢ä¿ãªãã®ã§å²æã
ããã¦æ¬é¡ã¸
ä»åã®ä¸»æ¨ã¯ããé¢æ°ã¨ãã¦ãã³ã³ã¹ãã©ã¯ã¿ã¨ãã¦ãå¼ã¹ãFunctionã両æ¹ã®å¼ã³æ¹ãããthisã®å¤ã¯ã©ããªãã®ãããæ¤è¨¼ãããã¨ã
ã¾ãã¯ä»¥ä¸ã®ã³ã¼ãã
var f = function() { alert((this === window)); }; f(); // true new f(); // false
windowã®ã³ã³ããã¹ãã§åã«å¼ã¶ã¨thisãwindowã«ãªãã
ããã¯æ®éã®æåã¨ãã¦ç¥ã£ã¦ã¯ããã
æ¬å½ã¯ä»¥ä¸ã
var f = function() { alert((this === window)); }; var Foo = new function() {}; Foo.prototype.normal = function() { f(); }; Foo.prototype.create = function() { new f(); }; var foo = new Foo(); foo.normal(); // true foo.create(); // false
ä»ã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã®ã³ã³ããã¹ãã§å¼ãã§ã¿ããwindowãããªãã¦ã¤ã³ã¹ã¿ã³ã¹ãthisã«ãªãããããªããã¨æã£ããã©ã
ããã§ããªããããã
ã©ãããå¼ã¼ãã¨applyãªã©ã§ã³ã³ããã¹ããæ示ããªãéãwindowãthisã¨ãã¦å®è¡ãããããã ã
ã¤ã¾ããif (this === window)ã§ã³ã³ã¹ãã©ã¯ã¿ã¨ãã¦å¼ã°ãããã©ãããåããããã§ã»ã»ã»ããã
Catalyst/PSGIã«å ¥éã
é ã¾ããªãããperlã®å¿ ä¿®é ç®ã¨ãã¦Catalystã¨PSGIã«å ¥éãããã¨ã«ããã
ã¾ãã¯cpanã§ä»¥ä¸ãã¤ã³ã¹ãã¼ã«ã
Plack DBIx::Class Template Catalyst Catalyst::Devel Catalyst::Engine::PSGI
ãããworkspaceã§
$ catalyst.pl MyApp
ããã§ååãã§ããã
次ã«plackupããããã«
$ cd MyApp/ $ ./script/myapp_create.pl PSGI
ããã¨"script/myapp.psgi"ãçæãããã
ãã®ã¾ã¾plackupãããã¨ããã ãã©ã
Can't Locate MyApp.pm
ã¨æããã¦ãã¾ãã®ã§ãpsgiãã¡ã¤ã«ã«ã¡ãã£ã¨æãå
¥ããã
åé ã®
use MyApp;
ããåã«
use File::Basename; use lib sprintf("%s/../lib", dirname(__FILE__));
ã追å ããã
ããã§Catalystã®ãã¡ã¤ã«ã¬ã¤ã¢ã¦ãã«åã£ãå½¢ã«ãªãã®ã§ã
$ plackup script/myapp.psgi
ã§èµ·åå¯è½ã
ä»æ¥ã¯ããã ãï¼
bashã®ãã¹è£å®ã§.svnãç¡è¦ããã
bashã®Tabã«ãããã¹è£å®ã
ãããããªãã§ã¯çãã¦ãããªããã ãã©ããã¾ã¼ã«ä¸ä¾¿ã«æãã¨ããããã
ããã¯svnã®working copyãcdã§æ½ã£ã¦ããã¨ãã®ãã¨ã
/home/shellcat/repos/workspace
ã«ãªãã¸ããªããã§ãã¯ã¢ã¦ãããã¨ãã¦ã
workspace/perl/FooBar/trunk/Foobar
ã¨ãã風ã«ãªã£ãã¨ããã
ãã®ã¨ã/home/shellcatãã移åãããã¨ããã¨ãmainããä¸ã«è¡ãã¨ãã«
Tabè£å®ã.svnã®ããã§ããããæ¢ã¾ãã
æåã®1æåãå
¥åããã°è£å®ãå¹ããã©æ¬¡ã®é層ã§ã¾ãæ¢ã¾ãã
ãããã¡ãã£ã¨ããã¹ãã¬ã¹ã ã£ããã ãã©ããããã解決æ³ãç¥ããã¨ãã§ããã
~/.bashrcã«ã¦
export FIGNORE=${FIGNORE}:.svn
PATHã®exportã¨åãææ³ã§FIGNOREã®å¤ã«.svnãå ããã
ããããã¨.svnã£ã¦ããååãè£å®ã®åè£ããå¤ããã®ã§ãTabé£æã§éãã¦ãããã¨ãã§ããã
è¶ æ°æã¡ããï¼
expectã¹ã¯ãªããã¾ã¤ããã
#!/bin/bash set timeout 20 spawn ssh hogehoge.com expect "password :" send "fizzbuzz" interact
ãããã£ã¦æ¸ããããspawn not foundãã¨ãè¨ãããã
確ãã«spawnã£ã¦ã³ãã³ãã¯ã¤ã³ã¹ãã¼ã«ããã¦ãªããªã»ã»ã»
ã¨ãæã£ã¦ãwwwwwwwwwwwwwwwwwww
spawnã£ã¦expectå°ç¨ã¯ã¼ããããwwwwwwwwwwwwwwwwwwwwwww
orz
âãããæ£è§£ã
#!/usr/bin/expect set timeout 20 spawn ssh hogehoge.com expect "password :" send "fizzbuzz" interact
expectã£ã¦ã·ã§ã«ãªã®ãã»ã»ã»