はてなキーワード: Nameとは
"The Artist"? "The Descendants"? "Hugo"? There was no critical consensus following a day of intense voting yesterday when a gaggle of critics groups voted their top honors. These included the Los Angeles Film Critics Association (LAFCA), the Boston Society of Film Critics (BSFC), and the New York Film Critics Online (NYFCO), as well as critics in San Francisco, Detroit and Indiana. The American Film Institute also announced its annual top 10, typically taking no risks.
Best Picture: "The Descendants" got a strong push with a win at the LAFCA, but "The Artist" took the top prize at the BSFC and the NYFCO. Both titles will make the final Academy shortlist. Fortified by nominations for their respective directors Martin Scorsese and Terrence Malick, "Hugo" and "The Tree of Life" should get nominations. The critics groups didn't get "The Help," any more than "The Blind Side," but the Civic Rights-era drama did make the American Film Institute top ten this year, so don't discount it yet.
Best Actor: Michael Fassbender is coming up fast with an LAFCA win. Why should we care about that group in particular? They're on a six-year roll predicting the Oscar winner for Best Actor. Brad Pitt's also a contender for "Moneyball," getting an art-house bump from "The Tree of Life," with Gary Oldman coming up on the outside thanks to the critical and box-office success of "Tinker, Tailor, Soldier, Spy" and a nod from the San Francisco Film Critics. How about George Clooney for "The Descendants"? He's still in the race, but not at the forefront. Like going for long shots? Then bet Michael Shannon for "Take Shelter," which won NYFCO. And if there's a sweep for "The Artist," add in Jean Dujardin.
Best Actress: Michelle Williams of "My Week With Marilyn," solidifies her spot with a win at the Boston Film Critics Association. Los Angeles went way out for Yung-Jun Hee in "Poetry" (what?) in their 'we're cool and uncorrupted by the Oscar race' vote. NYFCO went classic with Meryl Streep for "The Iron Lady." She's the Streep, but neither she nor Williams will be helped by an apparent lack of enthusiasm for their moves as a whole. Ditto Viola Davis ("The Help"), who will nonetheless make the top five Oscar nominees. Either SF winner Tilda Swinton ("We Need to Talk About Kevin") or multiple-runner-up Kirsten Dunst ("Melancholia") may slip in or come in sixth or seventh. Keep an eye out for Charlize Theron ("Young Adult"), Elizabeth Olsen ("Martha Marcy May Marlene") and Felicity Jones ("Like Crazy) as wild-card entries.
Best Supporting Actor: This is a two-man race between octogenarian Christopher Plummer and Albert Brooks playing against type as a cold-blooded hands-on killer. On the fringes: Patton Oswalt ("Young Adult"), Kenneth Branagh ("My Week with Marilyn") and Andy Serkis ("Rise of the Planet of the Apes").
Best Supporting Actress: Coming up on the inside is Melissa McCarthy for "Bridesmaids." Hurray for comedy! Bolstered by a best ensemble award from the LAFCA, this may push McCarthy into the five Oscar nominees. The LAFCA got behind Jessica Chastain, the NYFCO Breakthrough Performer, who was in every movie from "The Tree of Life" to "The Help," where she'll be competing against her popular co-star Octavia Spencer. The San Francisco critics supported Vanessa Redgrave for "Coriolanus," and Janet McTeer ("Albert Nobbs") was an LAFCA runner up in the category.
Who's out of the running in these five major categories? The Girl With the Dragon Tattoo, War Horse, J. Edgar and Midnight in Paris all underwhelmed. The X-Factor remains Scott Rudin's buzzy "Extremely Loud and Incredibly Close," which has not been screened widely after the New Yorker's David Denby flagrantly broke embargo on Rudin's other major film, "The Girl with the Dragon Tattoo." Pack the Kleenex box for this one.
http://www.chargerbatteryshop.co.uk/panasonic-cga-s002-digital-camera-battery-cbbs.html
http://www.gobatteryonline.com/canon-powershot-sd500-battery-charger-gose.html
http://www.keyboard-store.com/asus-04gncb1kusa4-laptop-keyboard.html
"The Artist"? "The Descendants"? "Hugo"? There was no critical consensus following a day of intense voting yesterday when a gaggle of critics groups voted their top honors. These included the Los Angeles Film Critics Association (LAFCA), the Boston Society of Film Critics (BSFC), and the New York Film Critics Online (NYFCO), as well as critics in San Francisco, Detroit and Indiana. The American Film Institute also announced its annual top 10, typically taking no risks.
Best Picture: "The Descendants" got a strong push with a win at the LAFCA, but "The Artist" took the top prize at the BSFC and the NYFCO. Both titles will make the final Academy shortlist. Fortified by nominations for their respective directors Martin Scorsese and Terrence Malick, "Hugo" and "The Tree of Life" should get nominations. The critics groups didn't get "The Help," any more than "The Blind Side," but the Civic Rights-era drama did make the American Film Institute top ten this year, so don't discount it yet.
Best Actor: Michael Fassbender is coming up fast with an LAFCA win. Why should we care about that group in particular? They're on a six-year roll predicting the Oscar winner for Best Actor. Brad Pitt's also a contender for "Moneyball," getting an art-house bump from "The Tree of Life," with Gary Oldman coming up on the outside thanks to the critical and box-office success of "Tinker, Tailor, Soldier, Spy" and a nod from the San Francisco Film Critics. How about George Clooney for "The Descendants"? He's still in the race, but not at the forefront. Like going for long shots? Then bet Michael Shannon for "Take Shelter," which won NYFCO. And if there's a sweep for "The Artist," add in Jean Dujardin.
Best Actress: Michelle Williams of "My Week With Marilyn," solidifies her spot with a win at the Boston Film Critics Association. Los Angeles went way out for Yung-Jun Hee in "Poetry" (what?) in their 'we're cool and uncorrupted by the Oscar race' vote. NYFCO went classic with Meryl Streep for "The Iron Lady." She's the Streep, but neither she nor Williams will be helped by an apparent lack of enthusiasm for their moves as a whole. Ditto Viola Davis ("The Help"), who will nonetheless make the top five Oscar nominees. Either SF winner Tilda Swinton ("We Need to Talk About Kevin") or multiple-runner-up Kirsten Dunst ("Melancholia") may slip in or come in sixth or seventh. Keep an eye out for Charlize Theron ("Young Adult"), Elizabeth Olsen ("Martha Marcy May Marlene") and Felicity Jones ("Like Crazy) as wild-card entries.
Best Supporting Actor: This is a two-man race between octogenarian Christopher Plummer and Albert Brooks playing against type as a cold-blooded hands-on killer. On the fringes: Patton Oswalt ("Young Adult"), Kenneth Branagh ("My Week with Marilyn") and Andy Serkis ("Rise of the Planet of the Apes").
Best Supporting Actress: Coming up on the inside is Melissa McCarthy for "Bridesmaids." Hurray for comedy! Bolstered by a best ensemble award from the LAFCA, this may push McCarthy into the five Oscar nominees. The LAFCA got behind Jessica Chastain, the NYFCO Breakthrough Performer, who was in every movie from "The Tree of Life" to "The Help," where she'll be competing against her popular co-star Octavia Spencer. The San Francisco critics supported Vanessa Redgrave for "Coriolanus," and Janet McTeer ("Albert Nobbs") was an LAFCA runner up in the category.
Who's out of the running in these five major categories? The Girl With the Dragon Tattoo, War Horse, J. Edgar and Midnight in Paris all underwhelmed. The X-Factor remains Scott Rudin's buzzy "Extremely Loud and Incredibly Close," which has not been screened widely after the New Yorker's David Denby flagrantly broke embargo on Rudin's other major film, "The Girl with the Dragon Tattoo." Pack the Kleenex box for this one.
http://www.chargerbatteryshop.co.uk/panasonic-cga-s002-digital-camera-battery-cbbs.html
http://www.gobatteryonline.com/canon-powershot-sd500-battery-charger-gose.html
http://www.keyboard-store.com/asus-04gncb1kusa4-laptop-keyboard.html
centre.If you want to entertain clients or relax with a drink after a hard day’s work at your Docklandsof high street stores this sort of as Pop Boutique and Oxfam Vintage which specialise in quirky vintage clothing andcups, all of which tread the line between subtlety and glamour with ease.With reminders of these iconicfor your skin. When wearing the chiffon dress, the key is to wear a bright color belt.LondonLondon isStreet and shopping centres throughout, Dublin is sure to suit all tastes and budgets. Henry Street is karen millen minutes from Belfast and very popular – includes M&S, Sainsburys and Dunnes.InShops – Ideal inside the centre ofVersace or Prada. Even these high daily life labels are not exempt in the discount bug and depending on theentitled to ownership with the domain name.The fashion designer, Karen Millen, also brought legal proceedingsfor the Blanchardstown Shopping Centre stay at the Ballymum Plaza, or the Park Plaza Tyrrelstown. For TheWallis. The availability of printable vouchers makes the demand for the voucher codes more important. It may
やー。面倒でした。
古い情報だと Outlook Express を経由しろと書いてあるので、後継であるらしいWindows Live Mail を経由して(Windows Live Mail からエクスポートする方法で)
Outlook に移行したのだが、どういうわけか宛名が文字列として移行されてしまい、xxx@example.com というメールアドレスの移行ができなかったんです。
で eml → msg もしくは pst 形式への変換ソフトを探すのですが、無料のものが見つからなくてあんまり情報もありませんでした。が、ありましたよ!お兄さん。
====
MAPI data collection and parsing tool. Supports property tag lookup, error translation, smart view processing, rule tables, ACL tables, contents tables, and MAPI<->MIME conversion. MrMAPI currently knows: 3916 property tags 801 dispids 35 types 58 guids 148 errors 27 smart view parsers Usage: MrMAPI -? MrMAPI [-Search] [-Dispids] [-Number] [-Type <type>] <property number>|<property name> MrMAPI -Guids MrMAPI -Error <error> MrMAPI -ParserType <type> -Input <input file> [-Binary] [-Output <output file>] MrMAPI -Flag <flag value> [-Dispids] [-Number] <property number>|<property name> MrMAPI -Rules [-Profile <profile>] [-Folder <folder>] MrMAPI -Acl [-Profile <profile>] [-Folder <folder>] MrMAPI [-Contents | -HiddenContents] [-Profile <profile>] [-Folder <folder>] [-Output <output directory>] [-Subject <subject>] [-MessageClass <message class>] [-MSG] [-List] MrMAPI -ChildFolders [-Profile <profile>] [-Folder <folder>] MrMAPI -XML -Input <path to input file> -Output <path to output file> MrMAPI -FID [fid] [-MID [mid]] [-Profile <profile>] MrMAPI -MAPI | -MIME -Input <path to input file> -Output <path to output file> [-CCSFFlags <conversion flags>] [-RFC822] [-Wrap <Decimal number of characters>] [-Encoding <Decimal number indicating encoding>] [-AddressBook] [-Unicode] [-Charset CodePage CharSetType CharSetApplyType] All switches may be shortened if the intended switch is unambiguous. For example, -T may be used instead of -Type. Help: -? Display expanded help. Property Tag Lookup: -S (or -Search) Perform substring search. With no parameters prints all known properties. -D (or -Dispids) Search dispids. -N (or -Number) Number is in decimal. Ignored for non-numbers. -T (or -Type) Print information on specified type. With no parameters prints list of known types. When combined with -S, restrict output to given type. -G (or -Guids) Display list of known guids. Flag Lookup: -Fl (or -Flag) Look up flags for specified property. May be combined with -D and -N switches, but all flag values must be in hex. Error Parsing: -E (or -Error) Map an error code to its name and vice versa. May be combined with -S and -N switches. Smart View Parsing: -P (or -ParserType) Parser type (number). See list below for supported parsers. -B (or -Binary) Input file is binary. Default is hex encoded text. Rules Table: -R (or -Rules) Output rules table. Profile optional. ACL Table: -A (or -Acl) Output ACL table. Profile optional. Contents Table: -C (or -Contents) Output contents table. May be combined with -H. Profile optional. -H (or -HiddenContents) Output associated contents table. May be combined with -C. Profile optional -Su (or -Subject) Subject of messages to output. -Me (or -MessageClass) Message class of messages to output. -Ms (or -MSG) Output as .MSG instead of XML. -L (or -List) List details to screen and do not output files. Child Folders: -Chi (or -ChildFolders) Display child folders of selected folder. MSG File Properties -X (or -XML) Output properties of an MSG file as XML. MID/FID Lookup -Fi (or -FID) Folder ID (FID) to search for. If -FID is specified without a FID, search/display all folders -Mid (or -MID) Message ID (MID) to search for. If -MID is specified without a MID, display all messages in folders specified by the FID parameter. MAPI <-> MIME Conversion: -Ma (or -MAPI) Convert an EML file to MAPI format (MSG file). -Mi (or -MIME) Convert an MSG file to MIME format (EML file). -I (or -Input) Indicates the input file for conversion, either a MIME-formatted EML file or an MSG file. -O (or -Output) Indicates the output file for the convertion. -Cc (or -CCSFFlags) Indicates specific flags to pass to the converter. Available values (these may be OR'ed together): MIME -> MAPI: CCSF_SMTP: 0x02 CCSF_INCLUDE_BCC: 0x20 CCSF_USE_RTF: 0x80 MAPI -> MIME: CCSF_NOHEADERS: 0x0004 CCSF_USE_TNEF: 0x0010 CCSF_8BITHEADERS: 0x0040 CCSF_PLAIN_TEXT_ONLY: 0x1000 CCSF_NO_MSGID: 0x4000 CCSF_EMBEDDED_MESSAGE: 0x8000 -Rf (or -RFC822) (MAPI->MIME only) Indicates the EML should be generated in RFC822 format. If not present, RFC1521 is used instead. -W (or -Wrap) (MAPI->MIME only) Indicates the maximum number of characters in each line in the generated EML. Default value is 74. A value of 0 indicates no wrapping. -En (or -Encoding) (MAPI->MIME only) Indicates the encoding type to use. Supported values are: 1 - Base64 2 - UUENCODE 3 - Quoted-Printable 4 - 7bit (DEFAULT) 5 - 8bit -Ad (or -AddressBook) Pass MAPI Address Book into converter. Profile optional. -U (or -Unicode) (MIME->MAPI only) The resulting MSG file should be unicode. -Ch (or -Charset) (MIME->MAPI only) Character set - three required parameters: CodePage - common values (others supported) 1252 - CP_USASCII - Indicates the USASCII character set, Windows code page 1252 1200 - CP_UNICODE - Indicates the Unicode character set, Windows code page 1200 50932 - CP_JAUTODETECT - Indicates Japanese auto-detect (50932) 50949 - CP_KAUTODETECT - Indicates Korean auto-detect (50949) 50221 - CP_ISO2022JPESC - Indicates the Internet character set ISO-2022-JP-ESC 50222 - CP_ISO2022JPSIO - Indicates the Internet character set ISO-2022-JP-SIO CharSetType - supported values (see CHARSETTYPE) 0 - CHARSET_BODY 1 - CHARSET_HEADER 2 - CHARSET_WEB CharSetApplyType - supported values (see CSETAPPLYTYPE) 0 - CSET_APPLY_UNTAGGED 1 - CSET_APPLY_ALL 2 - CSET_APPLY_TAG_ALL Universal Options: -I (or -Input) Input file. -O (or -Output) Output file or directory. -F (or -Folder) Folder to scan. Default is Inbox. See list below for supported folders. Folders may also be specified by path: "Top of Information Store\Calendar" Path may be preceeded by entry IDs for special folders using @ notation: "@PR_IPM_SUBTREE_ENTRYID\Calendar" MrMAPI's special folder constants may also be used: "@12\Calendar" "@1" -Pr (or -Profile) Profile for MAPILogonEx. -M (or -MoreProperties) More properties. Tries harder to get stream properties. May take longer. -No (or -NoAddins) No Addins. Don't load any add-ins. -On (or -Online) Online mode. Bypass cached mode. -V (or -Verbose) Verbose. Turn on all debug output. Smart View Parsers: 1 Additional Ren Entry IDs Ex 2 Appointment Recurrence Pattern 3 Conversation Index 4 Entry Id 5 Entry List 6 Extended Folder Flags 7 Extended Rule Condition 8 Flat Entry List 9 Folder User Fields Stream 10 Global Object Id 11 Property 12 Property Definition Stream 13 Recipient Row Stream 14 Recurrence Pattern 15 Report Tag 16 Restriction 17 Rule Condition 18 Search Folder Definition 19 Security Descriptor 20 SID 21 Task Assigners 22 Time Zone 23 Time Zone Definition 24 Web View Persistence Object Stream 25 Nickname Cache 26 Encode Entry ID 27 Decode Entry ID Folders: 1 Calendar 2 Contacts 3 Journal 4 Notes 5 Tasks 6 Reminders 7 Drafts 8 Sent Items 9 Outbox 10 Deleted Items 11 Finder 12 IPM_SUBTREE 13 Inbox 14 Local Freebusy 15 Conflicts 16 Sync Issues 17 Local Failures 18 Server Failures 19 Junk E-mail Examples: MrMAPI PR_DISPLAY_NAME MrMAPI 0x3001001e MrMAPI 3001001e MrMAPI 3001 MrMAPI -n 12289 MrMAPI -t PT_LONG MrMAPI -t 3102 MrMAPI -t MrMAPI -s display MrMAPI -s display -t PT_LONG MrMAPI -t 102 -s display MrMAPI -d dispidReminderTime MrMAPI -d 0x8502 MrMAPI -d -s reminder MrMAPI -d -n 34050 MrMAPI -p 17 -i webview.txt -o parsed.txt
無念 Name としあき 11/09/28(水)11:58:41 No.77177766 del
… 無念 Name としあき 11/09/28(水)12:01:35 No.77178031 del
… 無念 Name としあき 11/09/28(水)12:02:06 No.77178070 del
オタ絵における「ハイエンド系」って何?
… 無念 Name としあき 11/09/28(水)12:03:08 No.77178154 del
… 無念 Name としあき 11/09/28(水)12:04:31 No.77178276 del
それくらい実体がないんだよ
… 無念 Name としあき 11/09/28(水)12:04:39 No.77178293 del
ハイエンドってオーバースペックとかそういうニュアンスかと思ってた
美大卒とか
… 無念 Name としあき 11/09/28(水)12:06:24 No.77178443 del
>美大卒とか
あ~
俺もそんな感じだわ
… 無念 Name としあき 11/09/28(水)12:06:28 No.77178449 del
>オタ絵における「ハイエンド系」って何?
エロゲ絵レベル低い!俺はもっと上手い連中を知ってる!と馬鹿ライターがムサビの連中をダシにしてドヤ顔するために作った言葉
定義は無い
… 無念 Name としあき 11/09/28(水)12:06:29 No.77178452 del
単に「巧い」ってことか?
… 無念 Name としあき 11/09/28(水)12:08:27 No.77178631 del
正直絵柄の流行り廃りは怖いと思いました
… 無念 Name としあき 11/09/28(水)12:08:57 No.77178674 del
ムサビ系でいいじゃねーか
… 無念 Name としあき 11/09/28(水)12:09:58 No.77178763 del
… 無念 Name としあき 11/09/28(水)12:10:15 No.77178786 del
>ムサビ系でいいじゃねーか
それ採用
… 無念 Name としあき 11/09/28(水)12:10:37 No.77178813 del
当事者が自ら名乗ってた訳でもないのに
… 無念 Name としあき 11/09/28(水)12:11:39 No.77178912 del
草食系とかみたいに
… 無念 Name としあき 11/09/28(水)12:17:51 No.77179473 del
当時主流の絵柄や塗りをガンガン否定して敵まで増やしてたな
あんなのに巻き込まれたら死ねる
… 無念 Name としあき 11/09/28(水)12:43:56 No.77182329 del
小川一水の表紙が多いけど
どれも出来良いんでオススメ
… 無念 Name としあき 11/09/28(水)12:46:22 No.77182587 del
前張りは描けなさそうだけど
… 無念 Name としあき 11/09/28(水)12:47:47 No.77182738 del
おおー 上手い
いわれてみると塗りのタッチに特徴があるような
仕事でこういう固い絵を描いて
プライベートでまえばるわけだな
… 無念 Name としあき 11/09/28(水)12:49:21 No.77182909 del
宇宙船と前張りを組み合わせた
… 無念 Name としあき 11/09/28(水)12:51:10 No.77183116 del
>宇宙船と前張りを組み合わせた
そして暗黒星雲賞受賞
… 無念 Name としあき 11/09/28(水)12:52:41 No.77183290 del
>宇宙船と前張りを組み合わせた
… 無念 Name としあき 11/09/28(水)12:54:19 No.77183458 del
まえばり業界にいるよりよっぽど先がありそうじゃねーか!
… 無念 Name としあき 11/09/28(水)12:55:07 No.77183557 del
>まえばり業界
曲に救われたとかいう人を僕は信じなかったけど、この曲でこの年でこの曲に救われた。
http://www.utamap.com/viewkasi.php?surl=k-110727-037
この曲はがんキャンペーンソング。
母親はかなり早期だった。
同僚は今でも辛い治療を続けている。
あまり大げさにとらえないだろうから、僕に告白したってことらしい。
僕もあまり大げさに考えずに、なんとなーく支えようかと思ったけど、
やっぱりだんだん辛くなって。
昨日もかなり辛い内容のメールで、どう返したらいいのかわからなくて、
いつもは冗談で返すけど、冗談で返せない僕も僕自身がなんだか嫌で、
大変なのは本人だとわかっているのに、
なんだか僕も被害者意識を持つようになって、
それもすごく嫌で、
なんで僕だったんだろう、なんで同性に言わずに僕だったんだろう、
まだ職場の誰も知らなくて、僕だけが知っているという状況も辛くて、
それも被害者意識みたいで嫌で。
でもこの曲は患者本人だけではなくその周りの人たちにも救いを与えているような気がする。
この曲を聴きながら大泣きしながらドライブした一日。
AutoHotKey・KeySwap・Atok2005を使った
また、これは AutoHotkey.ahk (AutoHotkey設定ファイル) 自身でもある。
ATOKプロパティ =>キー・ローマ字・色 タブ =>キーカスタマイズ
ここから。
────────────────────
; IMPORTANT INFO ABOUT GETTING STARTED: Lines that start with a
; semicolon, such as this one, are comments. They are not executed.
; This script has a special filename and path because it is automatically
; launched when you run the program directly. Also, any text file whose
; name ends in .ahk is associated with the program, which means that it
; can be launched simply by double-clicking it. You can have as many .ahk
; files as you want, located in any folder. You can also run more than
; one ahk file simultaneously and each will get its own tray icon.
; SAMPLE HOTKEYS: Below are two sample hotkeys. The first is Win+Z and it
; launches a web site in the default browser. The second is Control+Alt+N
; and it launches a new Notepad window (or activates an existing one). To
; try out these hotkeys, run AutoHotkey again, which will load this file.
#z::Run www.autohotkey.com
^!n::
WinActivate
else
Run Notepad
return
; Note: From now on whenever you run AutoHotkey directly, this script
; will be loaded. So feel free to customize it to suit your needs.
; Please read the QUICK-START TUTORIAL near the top of the help file.
; It explains how to perform common automation tasks such as sending
; keystrokes and mouse clicks. It also explains more about hotkeys.
; ! → Alt
; ^ → Control
; + → Shift
;────AutoHotKey.ahk のキーボードリマップ 2011_08_29_
; 変換 = IME ON (日本語) =>Atokの機能で実現
; 無変換 = IME OFF (英語) =>Atokの機能で実現
; CapsLock = F10 =>KeySwapで実現
; 右Ctrl = End =>KeySwapで実現
; その他はAutoHotKeyの機能で実現。
;vk1D::return ;無変換キー単体で動かないようにする
;RShift::^z ;右Shift で Ctrl+z
;SC07B & Space::send,{Blind}{Enter} ;無変換+Space で Enter
;SC07B & j::send,{Blind}{Home} ;無変換+j で Home
;SC07B & k::send,{Blind}{End} ;無変換+k で End
;SC07B & h::send,{Blind}^{Home} ;無変換+h で Ctr+Home
;SC07B & l::send,{Blind}^{End} ;無変換+l で Ctr+End
;SC07B & u::send,{Blind}{} ;無変換+u で
;SC07B & i::send,{Blind}{} ;無変換+i で
;SC07B & LButton::send,{Blind}{Home} ;無変換 + LButton でHome
;SC07B & RButton::send,{Blind}{End} ;無変換 + RButton でEnd =>Ctrlと組み合わせ可。
;SC07B & y::send,{Blind}^{ } ;無変換+y で Ctr+
;SC07B & o::send,{Blind}^{ } ;無変換+o で Ctr+
;SC07B & w::send,{Blind}{Home} ;無変換+w で Home
;SC07B & r::send,{Blind}{End} ;無変換+r で End
;SC07B & e::send,{Blind}{Up} ;無変換+e で Up
;SC07B & d::send,{Blind}{Down} ;無変換+d で Down
;SC07B & f::send,{Blind}{Right} ;無変換+f で Right
;SC07B & s::send,{Blind}{Left} ;無変換+s で Left
2::+2 ;2 を Shift+2 に
3::+3 ;3 を Shift+3 に
4::+4 ;4 を Shift+4 に
5::+5 ;5 を Shift+5 に
6::+6 ;6 を Shift+6 に
7::+7 ;7 を Shift+7 に
8::+8 ;8 を Shift+8 に
9::+9 ;9 を Shift+9 に
0::+- ;0 を Shift+- に
\::+\ ;\ を Shift+\ に
;──────────────────── http://nanabit.net/softwares/autohotkey/
; Alt+F6 (例:2011_08_04_)
; Ctrl+F6 (例:03:48)
; Alt+Ctrl+F6 (例:2011_08_04_16:45)
!F6::
Send, %A_YYYY%_%A_MM%_%A_DD%_
return
^F6::
Send, %A_Hour%:%A_Min%
return
!^F6::
Send, %A_YYYY%_%A_MM%_%A_DD%_%A_Hour%:%A_Min%
return
【お知らせ】2011/09/07
http://d.hatena.ne.jp/uniqueweb/20110906/1315285545
プログラムは全く得意じゃないけれど最近よく見かけるようになったエロ動画検索を自分でも作ってみたくて頑張ってみました。
近年、インターネットの普及によりエロ動画が自宅で簡単に見れるという素晴らしい時代になりました。
自分が若い頃はインターネットなんてものはなくエロビデオが主流でドキドキしながらレンタルビデオ屋に行き、可愛い女の子がレジにいない隙を見計らってお兄さんにパッケージを伏せて空箱を渡しビデオを借りたものでした。
お兄さんにビデオの空箱を渡そうとした時に可愛い子がレジに戻ってきて焦って渡すのをやめてものすごく変な動きをしながらエロビコーナーに引き返していくなんてことも多々ありましたw
僕のお気に入りといえば「白石ひとみ」や「あいだもも」といった女優でよく借りてました。エロビを借りるということがものすごく恥ずかしい時代?年頃?でカモフラージュに普通のビデオと一緒に借りるということもしていました。それはそれは大変な思いでオナニーしてたんです!
しかも、ビデオデッキ自体が貴重な時代でリビングに一台しかないのが当たり前でした。
深夜家族が寝静まってからヘッドフォンとビデオを抱えリビングに行き暗がりの中でヘッドフォンをテレビに差し込んでビデオの再生ボタンを期待に胸をふくらませながら押したものです。いいシーンを何回も見るためにビデオを巻き戻すんですが、ビデオを巻き戻すガチャンガチャンという機械音で家族が起きてこないか?とかそれはそれはドキドキしながら見てました。一仕事終えたあとヘッドフォンを外したらジャックが外れていて大音量で喘ぎ声が響き渡っていたなんてこともありました。誰も起きてこなかったのは優しさなんでしょうか?w
さて、大分前置きが長くなりましたがエロというものはものすごい技術発展させるものだと思います。エロのおかげで日本でビデオは普及しエロのおかげで日本でインターネットはものすごく普及したと言っていいと思います。自分もエロを通して技術の発展に貢献し自分自身のスキルアップになれば。という高い志を持ってこのサイトを制作しました。決して自らのオナニーライフの充実と性癖を充たすため作ったわけではありません・・・w
※2011.08.07 利用中のサーバーに障害が発生しているようで現在サーバーに接続できない状態となっています・・・
サイト名の由来は抜きネタからきています。抜きネーター、ヌキネーターという感じですw
エロサイトの制作工程を日記にしてみたんで良かったら読んで下さい。そしてこのサイトを使って夜いろいろと励んでくれたら嬉しいです。
まず前提条件としてお金をほとんどかけたくない。アダルトサイトであるということから
月の予算は5000円以内で考えていたのでけっこう探すのが大変でした。
日本でアダルトサイトを許可している所はかなり限られていてさらにやりたいことができるのは
専用サーバーかVPSしかないのでそうなると専用サーバーは予算オーバーなので
VPSで探すことになり検索しまくってはじめに見つけたVPSはKAGOYAのVPSだったのですがβ版で募集を締め切っていて泣く泣く諦めました。
KAGOYAはかなり評判がいいみたいなので使ってみたかった。
次に見つけたのが○○○VPS。海外サーバーで日本語サポートがあり転送量の制限なしディスク容量100G
月1300円程度で借りれるということで初期設定費用に5000円程度かかりましたが借りてみました。
結果、ここは最悪でした。
あまりの酷さに1ヶ月で解約。
よく調べてみたら評判がものすごく悪い某VPSの再販らしいです。
もう失敗したくないと思い今度は比較的有名な海外サーバーLINODE。
iptablesの設定でどうしてもうまくいかなくて拙い英語でメールしてみたら
10分しないうちに返信がきました!
メールに書かれているとおりにコマンドを入力したらあっさり解決。
担当のブライアンはなぜか分からないけどとてもフレンドリーで親切に感じましたw
LINODEは複数のディストリビューションから好きなものを選択できるので
とりあえず、64bit版を選択。
一番面倒だけど重要だということで
Tripwire
ほんとに面倒でした。
はじめはmysqlにストレージエンジンgroongaを使おうと思ったのですが
初めに借りた最悪なVPSはOSが32bit版だったのでgroongaがのソースが見つからずなぜかと思っていたら
どこかで見つけた記事で32bit版ではgroongaの性能を発揮しきれないということで32bit版の提供をやめてしまったらしいと書いてたので
じゃあ、sennaにするかということで最悪VPSでsennaをインストール。
その後LINODEに変更したのでOSに64bit版を選択し念願のgroongaをインストール。
しかし、調べてみると
プログラムもそれに合わせてその都度書き換えたので2度手間どころか3度手間4度手間でした・・・
まず
そして下記の順番でインストール
rpm -ivh mecab-0.98-tritonn.1.0.12a.x86_64.rpm
rpm -ivh mecab-ipadic-2.7.0.20070801-tritonn.1.0.12a.x86_64.rpm
rpm -ivh senna-1.1.4-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-shared-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-client-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-server-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-devel-5.0.87-tritonn.1.0.12a.x86_64.rpm
my.cnfの設定をして終了
で肝心の全文検索ですがデータ件数が5万件程度で少ないせいなのか、あいまい検索と比べてそれほど速さを実感できなかったです・・・
でもきっとすごく速くなったはず!
ちなみに「麻美ゆま おっぱい」で検索した場合、0.01 secで結果が返ってきました。
さて、動画データの作成ですがいくつかのエロサイト等制作記事でもあるようにスクレイピングということをします。
スクレイピングとはWEBサイトから特定の情報だけを取得することでネット上にあるサイトをクロールして必要なデータだけを拾ってデータを作るといった感じでしょうか。
スクレイピングのプログラム自体は以前にTidy関数を使って為替データを10分おきに取得するような物を作ったことがあったのでそれほど時間はかからないかなと思ったのですがけっこう時間かかりました。
スクレイピングにはTidyとhtmlSQL、それにPHP Simple HTML DOM Parserを使いました。
SQL みたいな文法で HTML を抽出する PHP のライブラリ
htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」
3つの中で抜群に使えるのはPHP Simple HTML DOM Parserだったんですが
ループ処理させるとメモリがすごいことになって今回のようなスクレイピングに向いてないみたいで
結局、htmlSQLとTidyの両方を使ってスクレイピングしました。
両方ともPHP Simple HTML DOM Parserに比べるとうまくデータの取得ができないことが多く残念な感じなんですが他に選択肢がないので・・・
使える順に並べると
といった感じかもしれません。
おおまかにデータを取得して正規表現で特定データを抜き出しました。
http://affiliate.dmm.com/link.html
利用可能な物はパッケージ画像、サンプル画像(縮小)と書かれていたのでそれに従い画像を利用。
注記に※ユーザーレビューは引用いただけません。とだけ書かれているのでそれ以外は引用ありと判断して説明文とタイトルなどを利用
女優データとジャンルデータ、DVDデータ、を紐付けたデータベースを作成し検索ワードに応じて検索結果に関連する商品を表示させるようにしました。
現状、売り上げ0で意味があるのか分かりませんけどw
エロサイトということで多少はチューニングとか設定とかしないとまずいかもと思い色々調べて設定しました。
やったこと
KeepAlive On MaxKeepAliveRequests 60 KeepAliveTimeout 3 <IfModule prefork.c> StartServers 7 MinSpareServers 5 MaxSpareServers 10 ServerLimit 30 MaxClients 30 MaxRequestsPerChild 4000 </IfModule>
様子見ということで2日間で設定してみました。
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=16M
query_cache_type=1
とりあえずこんなところを設定してみましたが、爆発的なアクセスがあるわけでもないので有効なのか今のところ分かりません(-_-;)
Apache Benchでテストはしてみましたけど問題はない感じですが実際にチューニングができているか分かりません。
プログラマーとして有名なゆうすけさんのサイトとgoogleを参考にしました。
シンプルで使いやすいようにしようと思いこのデザインにしました。
クロスブラウザはIE7、firefox3、chromeで行いました。
可変ものって作ったことなかったんですがけっこう面倒なんですね。
ブックマーク機能とメニューの折りたたみ機能、検索結果の表示方法切替を作りました。
まず、ブックマーク機能ですがログインなしで気に入った動画をブックマークできるようにしました。
ブックマークに追加した動画はブックマークページで確認できるようにしました。
cookie機能を利用したらいけると思い色々調べてjquery.cookie.jsを利用。
保存したクッキー情報を呼び出してphpに渡して処理し指定要素にブックマーク一覧をloadメソッドで表示させるという感じです。
$(function(){ $("#youso").load("xxx.php"); });
メニューの折りたたみ機能は人気AV女優やAV女優別、人気タグなどをそのまま表示させるとずらっと長くなって邪魔だったのでつけました。
これには同じくjquery.cookie.jsを利用しました。
参考サイト:http://blog.caraldo.net/2009/03/newjqqookiemenu.php
検索結果の表示方法切替にはZoomer Galleryを利用しました。
参考URL:http://phpjavascriptroom.com/?t=ajax&p=jquery_plugin_zoom#a_zoomergallery
検索結果ページで表示される
[ここの画像]
××× の検索結果
44件中 1~10件目を表示
ここの画像の部分をクリックするとgoogleイメージ検索みたいに一覧でイメージ表示できるようにしてみました。
基本的に動画の埋め込みを許可しているサイトのみプレイヤー表示をしそれ以外は画像を表示し動画データへリンクするようにしました。
埋め込み部分はあらかじめそれぞれのサイトに対応したプレーヤー部分のコードを記述しVIDEOIDの部分に置き換えるような形にしました。
XVIDEOSを例にすると
XVIDEOSの場合かならず動画のurlがhttp://www.xvideos.com/videoXXXXXX/のようになりますのでXXXXXXの部分を
VIDEOID部分に置き換えるようにプログラムを組みました、
埋め込み部のソース
>||<object width="510" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="allowScriptAccess" value="always" /><param name="movie" value="http://static.xvideos.com/swf/flv_player_site_v4.swf" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="id_video=VIDEOID" /><embed src="http://static.xvideos.com/swf/flv_player_site_v4.swf" allowscriptaccess="always" width="510" height="400" menu="false" quality="high" bgcolor="#000000" allowfullscreen="true" flashvars="id_video=VIDEOID" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
||<
その他の動画サイトもURLの一部分のデータを使っているので同様の処理をしました。
実際の作業は2、3週間ですが色々調べる時間が多くて制作に2ヶ月くらいかかりました。
自分でエロ動画検索を作ってみて有名プログラマーさん達がいかに優秀なのか思い知らされました。
全くWEBの知識がない人で4、5ヶ月ですごいの作っちゃう人とかもいるみたいですし世の中広いな~と思います。
大分、色んな知識を得ることができました。
これからプラグラムを勉強しようと思う人はぜひエロサイトから入ってみて下さい。
そんなこんなで?頑張って作ってみたエロ動画検索、良かったら使ってみて下さい。
これで少しは技術の発展に役立てたでしょうか?w
P.S エロサイトを作っていてはじめは楽しくて興奮しながら作ってたのですが最後の方はエロい物を見ても全く反応しなくなりましたw
不能ではないんですけど・・・今現在も性欲が著しく減退しております・・・
そしてスーパーpre記法がうまういかないのはなぜ?はてな匿名ダイアリー初投稿で全然分からない・・・
そしてそしてプログラマーさんとかデザイナーさんとかエロい人とかお気軽にお声をおかけ下さい。
【お知らせ】2011/09/07
http://mixi.jp/run_appli.pl?id=5638
http://mixi.jp/view_bbs.pl?id=46278682&comm_id=4544309
知らぬ間に去っていったマイミクを調べることができるmixiアプリだが、8月1日で提供終了になるらしい。
現時点で、全体のアプリ週間利用者数ランキング20位、利用者数179万人のアプリである。
これまで「そしあな」をご愛顧頂き、誠にありがとうございました。
なお、mixiアプリ版は終了となりますがiPhoneアプリ「そうしてあなたはさってゆくのね」の提供を開始しております。
このiPhoneアプリはtwitterフォロワー用の「そしあな」となります。
AppStoreで「そしあな」と検索してみてください。もちろん無料です。
twitterフォロワー用は継続して提供されるようだが、いなくなったマイミクを知る手段はなくなってしまうようだ。
そこで8/1以降も、このアプリを使用できる方法を用意した。(FirefoxとChromeで確認済み)
↓↓↓以下説明↓↓↓
https://sap.mixi.jp/home.pl を開いて、何回かパスワードを入力すると、管理アプリ一覧の画面になる。
(Developer登録をする画面になった場合は登録を済ませてほしい)
管理アプリ一覧を開いた状態で、下記の文字列をアドレスバーに貼り付けてエンターを押すと、アプリ作成の画面になるので、内容を確認して問題なければ「作成する」ボタンをクリック。
javascript:(function(){p=location.href.match(/postkey=(.*)/);location.href="https://sap.mixi.jp/add_appli.pl?submit=main&name=%E3%81%9D%E3%81%86%E3%81%97%E3%81%A6%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AF%E5%8E%BB%E3%81%A3%E3%81%A6%E3%82%86%E3%81%8F%E3%81%AE%E3%81%AD&url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F36813827%2Fgadget.xml&description=%E3%81%9D%E3%81%86%E3%81%97%E3%81%A6%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AF%E5%8E%BB%E3%81%A3%E3%81%A6%E3%82%86%E3%81%8F%E3%81%AE%E3%81%AD&d1_enable=1&details=%E3%81%93%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AF%E3%80%81%E7%9F%A5%E3%82%89%E3%81%AC%E9%96%93%E3%81%AB%E5%8E%BB%E3%81%A3%E3%81%A6%E3%81%84%E3%81%A3%E3%81%9F%E3%83%9E%E3%82%A4%E3%83%9F%E3%82%AF%E3%82%92%E9%80%83%E3%81%95%E3%81%9A%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%E3%81%99%E3%80%82%E8%AA%B0%E3%81%8C%E3%83%9E%E3%82%A4%E3%83%9F%E3%82%AF%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E3%81%9F%E3%81%AE%E3%81%8B%E3%81%BE%E3%81%A7%E7%9F%A5%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82&agreement=agree&postkey="+p[1];})();
こうしてあなた専用の「そうしてあなたは去ってゆくのね」が作成された。
何らかの理由で、この手順がおこなえない場合は、マイミクの誰かに代理で作成してもらい、そのアプリを自分のアカウントに追加するのでもよい。
// ==UserScript== // @name keywordlink-buster // @include http://anond.hatelabo.jp/* // @exclude http://anond.hatelabo.jp/*/edit // ==/UserScript== (function (){ var init = function() { var anc = document.querySelectorAll('div.section a.keyword'); for (var i = 0, a; a = anc[i]; i++) { a.parentNode.replaceChild(document.createTextNode(a.innerText), a); } } window.addEventListener('DOMContentLoaded',init,false); })();
http://1-byte.jp/2011/03/20/20_tips_you_need_to_learn_to_become_a_better_php_programmer/
良いPHPerだって?そんなものは丸めてゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。
つまり俺たちがしなくちゃならないことは「より良いPHPerにならないため」に何ができるかってことなのさ。
それじゃ、始めよう。
?>なんて使っちゃいけない。そう俺たちはBAD PHPer。
無駄なホワイトスペースの出力に悩まされるくらいなら対称性なんて丸めてゴミ箱にでも捨てた方がまだマシだ。非対称性こそが賛美。
require_once("config.php");
未だにこんなことやってるやつがいるのかいベイベー。絶対にダメだ。この一行を見たら俺は悶絶する。
ダメだ、早く何とかしないと。
大抵このconfig.phpの中身はこうなっている。見て絶望だ。
$hoge_path = ''; if (!LOCAL) { define('FOO_FLAG', 1); if (HONBAN) { define('HOGE_FLAG', 1); } else if (TEST) { define('HOGE_FLAG', 2); } } else { $hoge_path = '/local'; define('FOO_FLAG', 2); define('HOGE_FLAG', 3); } define('HOGE_URL', $hoge_path.'/hoge/');
こういうのが延々と続くわけだ。もういやだ。もう見たくない。
本番環境とテスト環境でどういう値の違いがあるのか、ローカル環境だとどうなるのか、まったく把握できる気がしない。
なまじPHPな設定ファイルのせいで、処理をついつい書いてしまう。そしてどんどん複雑になってしまう。
やはり設定データは基本的にYAML等のデータしか定義できない形式のもので用意すべきだ。そして環境ごとに設定ファイルを分けるべきである。
そうすることで何にどういう違いがあるのかすぐにわかるし、diffすれば一度にすべて把握することができる。
# 本番環境設定ファイル foo_flag: 1 hoge_flag: 1 hoge_url: '/hoge/'
# テスト環境設定ファイル foo_flag: 1 hoge_flag: 2 hoge_url: '/hoge/'
# ローカル環境設定ファイル foo_flag: 2 hoge_flag: 3 hoge_url: '/local/hoge/'
// ここで後の処理のためにhogeメソッドを呼び出しておく $q->foo(); // $a['foo']はここに来る時点で真のはず // 2010-03-10 判定がおかしいので修正 // 2010-06-21 やっぱり値が入ってる方が正しい if ( !isset($hoge[0]) ) { }
コメントは保守されない。そう、それは真実。こんなコメントを発見したら即効削除しよう。コメントは基本信じるな。
俺たちにちょっとしたヒントと大きな損害を与えてくれる、それがコメントの役割なのだ。
わかる。いいたい事はとてもわかる。俺たちはしばしばインデントにスペースを使うはずだ。一方でIDEのしっかりした言語ではタブも使うことがある。しかし悪いことに、両者を混同しているプログラマも一定数いるのだ。
タブを画面上で認識しにくいエディタが世の中には存在する(何とは言わないが)
そして画面上で認識しにくいことを理由にタブを気にしないプログラマがいる。
この二つの条件が重なると、タブとスペースの交じり合ったインデントが完成する。もうぐちゃぐちゃだ。これは永遠に続く戦いだ。
私たちが勝利を掴むためにできることなどせいぜい、常にスペースしか使わない。タブを見つけたらその都度スペースに変換する。そういった地道な活動が明日へとつながるのだ。
われわれがプログラムをするとき、何に一番時間がかかってるか。実は変数の命名なのである。ここで拘り過ぎて時間をかけ過ぎては何も進まない。
御託はイイからさっさと書け、だ。しかしとはいっても変数名は重要。日頃からどういうときにどんな名前を使うかを決めておくといい。
そして変数名に型はまったく必要ない。型宣言のないPHPにおいて、型の変数名をつけること自体ナンセンスだ。
$iNumber = 'aaa';
になんの意味もない。コメントを信じるなでも言ったが、これはプログラマを混乱させるだけの害悪なものだ。
変数を使う前に初期化するのは、警告を出さないという意味でも良い癖だ。しかし具体的にどこでやるかが問題だ。
$foo = null; $foo = $q->foo();
こんな初期化に意味はない。よくあるのはやはり、if文で値を振り分けるケースだろう
$foo = null; if ( $hoge ) { $foo = 1; } else if ( $bar ) { $foo = 2; }
このときの初期化はとても有効だ。もしnullの初期化を忘れたまま$fooを使うと警告が出るが、ちゃんと初期化してるので出ない。基本中の基本だ。
function getStatus() { $bReturn = false; if ($i == 2) $bReturn = true; return $bReturn; }(中略)
もし、何かしらの理由で、あなたの書いたif文が間違っていたら?
この書き方をしていれば、間違った値に対して、常にfalseが返る。
私たちが、PHPでsensitiveなデータを取り扱うなら、正しいデータが入力されるまでは、動かないコードを書くべきだ。
trueとfalseの条件がいまいち明確ではないが、本当に動かないコードを書けというのであれば以下のようにすべきだ
function getStatus() { $bReturn = false; if ($i == 2) $bReturn = true; else if ($i == 1) $bReturn = false; else throw new Exception("bad status! $i"); return $bReturn; }
中途半端にfalseを返して生存させる必要性はまったくない。今すぐ死ね!
連想配列のキーを指定する場合だけ定数と間違わないようにクオートで囲まなければならない。そして逆に定数を使いたい場合はクオートで囲ってはいけない。
更に後世のプログラマが処理を見たときに、定数が使いたかったのか、文字列が使いたかったのかを明確にしたい場合はconstantを使うと良い。
// 定数のFOOを使うよということが明確になる print $a[constant('FOO')];
もし、文字列を変数の値と一緒に出力するとき、PHPではコンマの代わりにprintfを使うことが使える。
printf( “Hello, my name is %s“, $sName);
以下の代わりに上記のコードを使う。
echo “Hello, my name is “, $sName;
出力すべき変数が増えれば増えるほど、有効になっていく。とにかく迷ったならば、printfを使え、だ。
三項演算子はとても有効だ。しかし優先順位に難があるせいで、三項演算子をネストしようとすると以下のようなコードになってしまう
$n = (($i == 1) ? 2 : (($i == 2) ? 3 :$i));
括弧だらけで読みにくいったらありゃしない。三項演算子を使うなら一回まで。約束守れないやつは丸めてゴミ箱にでも捨てちまえ。
if ( $flag ) { }
仕様をちゃんと把握しているなら真偽値のチェックなどこれで十分。
もし事前にbool型だというのが確定してるのなら「$flag === true」を使えばいい。
インクリメント、デクリメント演算子は前に付くか後ろに付くかで意味が変わるので慣れるまでは非常にややこしい。
わけがわからなくなるくらいなら初めから使わないほうが良い。見極められないなら使うな。それがPHPerなのだ。
文句なしだ。これは文句がない。
他にも色々あるので覚えておこう
$a %= 1; $a &= 1; $a |= 1; $a ^= 1; $a <<= 1; $a >>= 1;
てっとり早く画面に表示する際にpreはよく使うが、デザインの関係上画面の文字が見えないときがある。
なのでdivを使って以下のようにしとくと便利だろう。
function p($var) { echo "<div align='left' style='background-color:white;color:black;'><pre>"; print_r($var); echo "</pre></div>"; }
君らが通常作るアプリケーションなんぞに、定数なんぞ必要ない。いいか、もう一度言う、お前ら程度のもんが、定数使おう何ぞ、おこがましいわ!
大丈夫。なんでもかんでも定数にする必要はない。結局設定ファイルに定数をずらずら作りまくってわけがわからなくなってるパターンが多い。
貴様みたいなもんに、定数は制御できん。いいか設定ファイルはYAML等のデータで持つようにし、その連想配列のデータ構造を一つ持ってるだけで定数の変わりになる。
このメリットに比べれば、定数だと書き換えられなくて良いという利点などこの歯のカスほどのものだ。そんなものは丸めてゴミ箱へ捨ててしまうといい。
認識を改めろ。俺たちはより良いPHPerにならないために努力している。
class Request { private $parameters; private $method; function __construct () { $this->method = $_SERVER['REQUEST_METHOD']; if ( strtoupper($this->method) === 'POST' ) { $this->parameters = $_POST; } else { $this->parameters = $_GET; } } function param ($key) { return isset($this->parameters[$key]) ? $this->parameters[$key] : null; } }
これだけでもいい。たったこれだけでもとても便利だ。ここから拡張してGETやPOSTを明示的に取るメソッドとかも作ってみるといい。自分の手を動かすのだ!
例が良くない。こんなのは引数が20個ある関数から、setを20回呼ぶオブジェクトに変わっただけではないか。
そもそもこの20個の引数とはなんなのか。何かのデータ構造なんであれば連想配列にして引数一つとして渡すべきだし、それぞれまったく異なる用途の変数なのであればWindowsプログラミングじゃあるまいし、20個も引数取る時点で設計が間違えている。
何がいいたいか。別に関数でもオブジェクトでもどっちでもいいということだ。
そんなことで悩んでる暇があったら設計を見直せ。
スキあらば自分自身を返せ。スキあらばオブジェクトを返せ。配列はArrayObjectのARRAY_AS_PROPSで返せ。
ひたすらメソッドチェイン。来る日も来る日もメソッドチェイン。とにかくメソッドチェインを使い続けろ。そこに未来はある。
どんなコードも繰り返すな。もし、少しでも同じコードを書いていたなら、それは関数に置き換えてしまえ。
・・・と、いうのはやめなさい。
一見同じように見えた処理でも前後の流れでまったく違うものということが往々にしてある。
まとめ方にも問題があるケースもある。何でもかんでも関数化すると、関数が膨大に増えていく。君は見たことがあるだろうか。common.phpやfunction.phpの恐ろしさを。
確かに細かく関数化はされているが、適切に関数化していないのである。結合度が非常に高い。なんでもかんでも盲目的にまとめれば良いという話ではないのだ!
あまりに極度に意識しすぎると、プログラムそのものができなくなる。そういう状態に陥る。
気を抜いて。そう気を抜いて。所詮あなたのコードなんてすぐに消えてなくなるよ。きっともっと偉い人が作り直すよ。だからまずは思うが侭にやるといい。
結合度を減らすというのは非常に難しい。何度も何度も失敗し続けて、ようやくここは分けた方が良かったんだなと気付く。次に活かそうと心に決める。そしてまた同じ過ちを繰り返していくわけだ。
まずは実装することだ。これが一番の早道だ。まずはがっつり結合した関数をあえて作るといい。何も考えずに作ろう。
そしてその後に、一部分使いまわしたいとおもうことがあるはずだ。その時に関数に切り出そう。それを繰り返すといい。そのうち初めから分けた方が良いと気付く。
何事も経験が必要である!経験を積まないプログラマは丸めてゴミ箱に捨ててしまえ。
さて、先の例で言うならば、私ならadd_result_outputという関数を作ってしまうだろう。だって、addとresultを連続して呼ぶのはめんどくさいんだもん。一連の流れをいつも使うのなら、その流れをやってくれる関数を作ればいいじゃないか。
function add_result_output ($iVar, $iVar2) { $r = add($iVar, $iVar2); echo result($r); }
もっと言えばクラス化してしまってもいいかもしれない。どんな感じになるかは君の手を動かして確認しよう!
このTipsはとてもわかりにくく、ニッチ過ぎる部分も多いかもしれない。
あくまでも「より良いPHPerにならないための20Tips」なのだ。
君はこの記事を鵜呑みにしてはならない。PHPをPHPと見抜けないPHPerはPHPを使うのは難しい。
もし、あなたがPHPプログラマなら、公式のPHPドキュメントはあなたのケツの穴を拭くための紙になるだろう。
私は、それぞれのセクションを眺めて、各関数でどんなことが出来るかなんぞ、歯クソのゴミ程に役に立たないとおもっている。動けばいい。はは。
あなたは、PHPで用意された既製関数で多くのことが実現できることに、(俺の仕事を減らすなと)驚くはずだ。
この記事があなたの役に立たない事を。
ふざけんな!
// ==UserScript==
// @name deny_ega
// @namespace hogehoge
// @include http://b.hatena.ne.jp/*
// ==/UserScript==
var entry_list = document.getElementsByClassName('entry-body');
for (var i = 0; i < entry_list.length; i++) {
var reg = RegExp("http:\/\/blog.livedoor.jp\/ikiradio\/");
var txt = entry_list[i].getElementsByTagName('blockquote')[0].getAttribute('cite');
if(txt.match(reg)) {
entry_list[i].style.display = 'none';
}
}
UK版ファームにはまだ通知がこないので、Nordic あたりに偽装して試してみる。
■準備
12:55 まずは準備。母艦に入ってたソニエリの Update Service をアンインストールした。
13:00 Titanium Backup http://tinyurl.com/22rxwqc でアプリをバックアップした。
13:01 純正のバックアップツールで SMS/MMS をバックアップ。
13:05 APN Backup Restore http://tinyurl.com/26t6pq7 で APN 設定をバックアップ
13:08 (念のため) SMS Backup+ http://tinyurl.com/24kv56y で SMS/MMS を gmail にバックアップしておこう
13:17 SMS しかバックアップ取れてないぞ。ま、いいか。準備完了。
■いよいよアップデート
13:17 build.prop を書き換えよう。Xda developers http://forum.xda-developers.com/ に情報探しに行く
13:21 日本語の情報あるじゃねーか。。。http://tinyurl.com/2uzugyk http://tinyurl.com/2fu9xsy
13:23 build.prop の 1238-0199 を 1238-8536 に書き換え。要 root
ro.product.name=U20i_1238-8536
ro.build.fingerprint=SEMC/U20i_1238-8536/SonyEricssonU20i/delta:1.6/1.1.A.0.8/1:user/release-keys
ro.semc.version.cust=1238-8536
13:30 ここら辺 http://tinyurl.com/ydjr8jg から Update Service をインストール
13:36 ダメだ。最新のソフトウェアがインストールされています、だそうだ。
娘が起きてしまったので一旦中断
15:50 再開。Update Service をアンインストール、PC 再起動、再インストール
15:59 Back ボタンを押しながら USB 接続すると、アップデートがあります、だそうだ。
16:05 アップデート完了。
■root
16:24 ここら辺 http://juggly.cn/archives/12187.html を読みながら SuperOneClick で root 化。5分くらい経ったけどまだダメ。
16:33 APN Backup Restore http://tinyurl.com/26t6pq7 で APN 設定を復元
一旦中断
16:50 USB Debugging 有効、Unknown Sources 許可、Screen timeout 30分にして再度挑戦。10分くらい放っておいたら root 取れてた。
■ひたすらリストア
17:00 Titanium Backup http://tinyurl.com/22rxwqc でアプリを復元。一つ一つやると時間かかる。有料版買おうかな
17:15 純正のバックアップツールで SMS/MMS をリストア。
17:26 Auto-sync 有効にして放っておいたら電話帳もリストアされた。
夕食のため中断
21:34 DroidSansJapanese.ttf (中身はメイリオ) と DroidSansFallback.ttf を /system/fonts に入れて reboot
UK ファームのときの qwerty.kcm.bin を取っておけば良かったのかな。
00:45 MMS の UserAgent 変えるの忘れてた。custom_settings.xml で対処 http://tinyurl.com/29qex3v
■キーマップ変更
11/4 11:13 ここ http://tinyurl.com/33lw734 に添付してある keys.tar を解答して、keyboard-config 以下のファイル全部と、mimmi_keypad.kcm.bin を置き換えたらキーマップも EN 配列になった。qwerty.kcm.bin は mimmi_keypad.kcm.bin へのシンボリックリンクだったので置き換えず。←今ココ
A disk read error occurred
Press Ctrl+Alt+Del to restart
帰省中1ヶ月ほど放置し、久しぶりに電源を押すとエラーが出るようになったらしい。
変なソフトのインストールやBIOSのアップデート等はしていないとのこと。
当初はF8キーを押して[詳細ブートオプション]を開ければ、すぐに直せると思っていたけど、
ブートから進まないのだからF8キーを押しても同じエラーが出るだけ。
一応、F2キーでBIOS設定画面を開き、[Load Setup Defaults]を試すも症状変わらず。
また、VISTAにはXPの[回復コンソール]がなく、[システム回復オプション]という復旧手段が用意されている。
しかし、このマシンはプリインストール版なので、ディスクからの起動できない。
この場合はF8キーを押して[詳細ブートオプション]を開いて、そこから起動できるようだ。
その後、試行錯誤を繰り返した結果、再セットアップするしかないという結論に至った。
バックアップするにもWindowsが起動しないので、こんな時はいつもLinuxOS Knoppixに頼っている。
公式サイト(http://www.rcis.aist.go.jp/project/knoppix/)ではDVD版とCD版がiso形式で配布されており、DVDなりCDなりに焼けばOSをディスク起動できる優れもの。
さらにCD版をUSBにインストールしたUSB版も作成できるので、非常用に1つ作っておくと便利。
こちらのサイト(USB-Knoppixではじめよう http://yumenohako.jp/cgi-bin/knoppix/wiki.cgi)を参考に簡単に解説。
- 用意するもの
- 作成手順
- 前述したKNOPPIXの公式サイトからCD版のISO形式ファイルをダウンロード(現在はバージョン6.0.1)。
- 「DAEMON Tools」等の仮想ディスク作成ソフトでisoファイルをマウント。
- マウントしたディスクを開き、[KNOPPIX]フォルダを丸ごとUSB直下にコピー。
- さらに「\boot\isolinux」フォルダを開き、中のファイルを全てUSB直下にコピー。
- USB直下にコピーした[isolinux.cfg]というファイルの名前を[syslinux.cfg]に変更。
- こちらのサイト(http://www.kernel.org/pub/linux/utils/boot/syslinux/)から[syslinux.zip]をダウンロード(現在はsyslinux-4.02.zipが最新)。
- zipファイルを解凍して開き、「\win32\syslinux.exe」ファイルをCドライブ直下に移動。
- コマンドプロンプトを開き、[cd c:\]([]内のみ)と入力してEnterキーを押す。
- 次に[dir syslinux.exe]と入力してEnterキーを押す。
- さらに[syslinux.exe -ma USBドライブ名:](例:USBがEドライブなら[syslinux -ma E:]、間違ったドライブを指定すると指定先が壊れるので注意)と入力してEnterキーを押す。
- 完成!
- 使用方法
このマシンは前述の通りプリインストール版なのでインストールディスク(再セットアップディスク)が付属していない。
では、どうやって再セットアップするかというと、
しかし、今回はF11キーを押してもエラーが表示されるのみ。それにわざわざリカバリディスクを作成しているはずもなく手詰まり。
リカバリディスクはこちら(http://nx-media.ssnet.co.jp/)から購入できるけど価格は1万円。自作するしかない。
そもそも本来はリカバリディスクを作成できるのだから、HDD内のどこかにリカバリディスク用のデータが入っているはず。
そこで再びKNOPPIXを起動してみると、[NEC-RESTORE]という名前のリカバリ領域が隠しパーティションとして用意されていた。
こちらのサイト(LaVieレストア顛末記 http://deme.jp/wing/vol019/demeshin/NEC.htm)が大変参考になった。感謝。
- 用意するもの
- 作成手順
- 対象PCに接続されているUSBやLANケーブルなどはマウスとKNOPPIX以外全て外す。
- KNOPPIXで起動し、前述バックアップと同じ方法で[NEC-RESTORE]ドライブを開き、[RESTORE]フォルダを丸ごと外付けHDDにコピー(約10.3GB)。他のは不要。
- 「\RESTORE\TOOLS\IMG\winpe.iso」ファイルをISOイメージでCDに書き込む(Disk1)。
- 「\RESTORE\TOOLS」フォルダを丸ごとCDに書き込む(Disk2)。
- 「\RESTORE\BKVSTIMG.GHO」ファイルをCDに書き込む(Disk3)。
- 「\RESTORE\BKVST0**.GHS」ファイルが001から018まで18個あるので、まずは「BKVST001.GHS」から「BKVST007.GHS」まで約3.75GBをDVDに書き込む(Disk4)。
- 「BKVST008.GHS」から「BKVST014.GHS」まで約3.75GBをDVDに書き込む(Disk5)。
- 「BKVST015.GHS」から「BKVST018.GHS」まで約1.93GBをDVDに書き込む(Disk6)。
- 完成!
- 使用方法
- 対象PCの電源をつけ、Disk1を挿入。そして、電源ボタンを長押しして強制終了。
- 再度、電源をつけ、すぐにF2キーを連打してBIOS設定画面を開き、[Boot]タブから[1st Boot Device]を[CD-ROM]に変更して設定を保存。
- しばらくすると[Window Vista 再セットアップ]が起動するので、[再セットアップ]を選択(他のものを選択しても途中でエラーが出た)。
- その後[Cドライブのみの再セットアップ]など3項目が表示されたので、自分は[ハードディスクを購入時の状態に戻して再セットアップ]を選択。
- あとは「ディスク2を入れてください」等の指示に従って、Diskを入れ替えていけば、そのうちWindowsのセットアップ画面になる。
以上の作業によりHDDが故障していない限りはリカバリディスクを作成して再セットアップ可能。
ただし、当初のエラーの原因がHDDにある可能性もあるので、HDDを交換してからリカバリディスクを使用した方がいいかもしれない。
今後はCrystalDiskInfoなどのソフトを使用してHDD監視をするつもり。
再セットアップが進むと、シマンテック社の「Norton Ghost」というバックアップツールが起動し、1%2%3%...と作業が進行する。
最初にやった時は、50%ほど作業が完了したところでこんなエラーが出現。
Cannot open GHOSTERR.TXT - insert diskette (434)
File Name ? (546)
Output error file to the following location
[OK] [Cancel]
おそらくGHOSTERR.TXTというファイルの出力先が見つからないのだろうとあたりを付けて、
フォーマット済みCD-RWを挿入後、A:をCDドライブのF:に書き換えてOKを押すと
Application Error 19235
Ghost has detected corruption in the image file.
Please perform an integrity check on the image.
if this program persists, please contact Symantec support center
このイメージファイルとは、前述リカバリディスク作成手順6以降の[拡張子GHSのファイル]。GHSはGHOSTの略か?
そこで、Disk4,5,6をNERO9体験版+太陽誘電製のTHE日本製のDVD-Rを使用し、
念のためディスク1枚あたり4GBを超えないようにし、4倍速で焼き直してみたところ、今度は正常に再セットアップが完了。
最初はWindowsに標準装備されている[ディスクへの書き込み]+台湾製の安物DVD-Rを使用したのだが、
これを教訓に次からは絶対にライティングソフトと国産ディスクを使うことにしよう。
CrystalDiskInfoを使用してHDDの状態を調べたところ、案の定「注意」レベルだった。
注意項目 | 生の値 |
---|---|
代替処理保留中のセクタ数 | B(11) |
回復不可能セクタ数 | 25(37) |
※[生の値]の数値はデフォルトが16進数表記。括弧内は10進数に変換した数値。
やっぱり当初のエラーはHDDの故障とまではいかなくとも寿命が近いということだったのか。
使用時間は17000時間。HDDの交換を検討した方が良いけど、一体型の交換は難しいような。
まずはWestern Digital製HDDだからData Lifeguard Diagnosticsでゼロフィルをやってみる予定。
エラーチェックで完全に逝くかもしれないけど、バックアップもしてるし、リカバリディスクもあるし。
あと、VistaのバーションはSP1だと思っていたけど、まだ更新していなかった模様。
そこで更新プログラムをインストールしてみると途中で止まってしまい、修復スタートアップする羽目に。
Vista SP1の導入に失敗し、修復スタートアップを行ったものの、12時間経っても終わらず。
そこでいっそのことHDDのデータを完全に消去して、再セットアップすることにした(7時間ほどかかる)。
方法としては先日のとおり、Western Digital製HDDの診断ツール「Data Lifeguard Diagnostics」を使用する。
このツールはFDD版とCD版しかないので、いつものようにUSB版の作成を試みる。以下作り方と使用方法。
- 用意するもの
- 作成手順
- こちら(http://files.extremeoverclocking.com/file.php?f=196)から[Windows 98 System Files]をダウンロード後、解凍しておく。
- こちら(http://files.extremeoverclocking.com/file.php?f=197)から[HP USB Disk Storage Format Tool-v2.1.8]をダウンロード後、インストール。
- [HP USB Disk Storage Format Tool]を起動し、[Device]で用意したUSBを選択。[Create a DOS startup disk]にチェックを付け、[using DOS system files located at:]のところで、先ほど解凍したフォルダ(ファイル名はwin98boot)を指定する。
- こちら(http://support.wdc.com/product/download.asp?groupid=608&sid=30&lang=jp)から[Data Lifeguard Diagnostic for DOS (CD)]のiso形式をダウンロード。
- USB内に[DLGDIAG]という名前のフォルダを作成。
- ダウンロードしたisoファイルを仮想ディスク作成ソフトでマウント。
- マウント起動したディスク内の[DLGDIAG5.EXE][DLGDIAG.txt][DLGLICE.TXT]をUSB内の[DLGDIAG]フォルダにコピー。
- 完成!
- 使用方法
- PCにUSBを挿して、起動直後にF2を連打。BIOS設定画面から[boot]→[Hard Disk Boot Priority]を選択し、USB-HDDを一番上にして設定保存。
- DOSが起動するので、[cd dlgdiag]と入力してEnter。その後、[dlgdiag5]と入力してEnter。
- [Data Lifeguard Diagnostic]が起動するので、ライセンス画面でESCキーを押す。そして承諾。
- メイン画面が開いたら、[Extended Test]を選択して、まずはHDDのチェック(結果は余裕のFail)。所要時間は容量500GBで1時間40分。
- 続いて[Write Zeros To Drive]を選択して、HDD内の全データを削除(0で埋める)。これは2時間。
- もう一度[Extended Test]を実行(1時間40分)。この時点でNO ERRORS FOUND(エラーなし)。
- BIOS設定画面を開き、デフォルト設定をロードして、あとは前述どおりに再セットアップ(1時間30分)。
再セットアップ後、CrystalDiskInfoを実行すると見事に「正常」レベルに回復。
前回注意項目だった「代替処理保留中のセクタ」と「回復不可能セクタ数」の生の値は0に変化。
なぜか使用時間が14000時間に減少していたものの、とりあえずはHDDの故障の心配はしなくていいかな。
ちなみにSP1の導入は成功。今後はCrystalDiskInfoを常駐させ、監視を続けることにする。
あれから10か月後、悪夢のブルースクリーンが降臨したので、またクリーンインストールを行った。
CrystalDiskInfoを使用してHDDの状態を調べたところ、「注意」レベルに逆戻り。
注意項目 | 生の値 |
---|---|
代替処理保留中のセクタ数 | 2D9(729) |
回復不可能セクタ数 | 70(112) |
※[生の値]の数値はデフォルトが16進数表記。括弧内は10進数に変換した数値。
以前のエラー時よりさらに状況が悪化しており、HDDの寿命がかなり迫っている模様。
いつ突然死を迎えてもおかしくないので、重要なデータをバックアップのうえHDDの交換を予定。
ブログがないので、増田にログ残し。ツッコミや質問はid:frsattiまで。
それも、発音や文法だけじゃなくて「内容」がだ。Lang-8みたいな語学サイトとか、ブログやtwitterの英語記事なんか、読んでいるこっちが赤面したくなるぐらい白痴じみたことを書いていて「頼むからやめてくれ」と言いたくなることがある。
例えば今日見た例だと(さらし者にするのが本意ではないので出典は伏せるが)、ある日本人がtwitterで"*** is a very good software"とか何度も何度も書いていた。ところが状況的に、それを読んでいるのは***というソフトの関係者ばかりだったのだ(ハッシュタグまで使っていた)。これがどれだけ奇妙なことかわからなければ、例えばラブプラスの日本語コミュに現れた外人が5分おきに「ラブプラス、スバラシイネ」と発言している状況を考えてみればよい。日本人はどう反応していいか困るのではないか(別にラブプラスでなくてもなんでもいい。俺はアニメとかエロゲとかよくわからんので知ってる名前を出しただけ)。
はっきり言って、ああいうの見てると日本人が英語マンセー、外国マンセーになったり、debito.orgやJapanToday当たりに集う在日英米人が日本を侮蔑する理由がわかるよ。英語で話したがる日本人の中には、英米人を捕まえては "My name is ***. I can't speak English very well, but I want to be native speaker of English. Where are you from? What Japanese food do you like? Can you use chopsticks?" みたいな愚にもつかんことを言ってる連中が実に多いからね(native speaker云々は揶揄で書いたんじゃなくて、本当にそういう奴が何人もいるからな!Lang-8やsmart.fmあたりで自己紹介検索してみるといい)。文法以前に内容の問題だとわかるはず。関西人の俺は今まで「納豆食える?」とか「マクドナルドのことはみんな『マクド』って言ってるの?」とか百回以上聞かれてうんざりしてるが、それをさらに百倍ぐらい劣化させた質問を会う人ごとにされればそりゃ「日本人は馬鹿だ」と思うようにもなるだろうさ。
いや、勿論「ジャップは劣等民族」なんて言ってるわけじゃない。その反対だ。例えば上のtwitterの人なんて、日本語では非常に的確なことを簡潔に言っていた。それだけに、英文をみてげんなりしてたんだよ。その人の子供がいたずらで書いたんじゃないかと思ったほど。
なんでそんなことになるのか?理由は簡単だ。
なぜ和洋折衷の原稿をはじめに書いたかというと、悲しいことに、英語では
深く考察することができないからです。じっくり思考するためには、日本語で
英語だと、ほんとうに表面をサラッとなぜでる程度の、つまり中学生程度の
ことしか考えられないのです。大部分は、語彙の問題なのでしょうね。
http://bryologist.cocolog-nifty.com/blog/2009/08/post-54d6.html
当たり前のことだが、プログラミング言語で言えば、語彙はライブラリだ。ライブラリがトンチンカンでは、どれだけ構文の優れた言語でもまともなものは作れない。そして英語というのは困ったことに昔は未開人の言語であり(日本語もそうだが)、外来語だらけで語彙体系がぐちゃぐちゃなのである。フランス語やドイツ語をやったことがある人ならわかると思うが、英語というのはちょっと日常会話を超えた程度のことを言うためにも覚えなきゃいけない単語数がめちゃくちゃ多い(日本語もそうだが)。日本語と言語学的な類縁関係がないことを置いておいても、決して易しい言語とは言えないのだ。
そのため、英語での情報収集は「脳味噌にハンディキャップつけた状態で戦う」ことになる。しかし、こちらがハンディ付きで戦って歯が立たないと感じた相手が実際に本当の強敵かということは疑問のはず。ところがそのことに無頓着な人が多すぎて、英語圏の情報は全て高級で高尚であるように思っている人が余りにも多いように感じる。そのためか、英語圏は社会全体が色々過大評価されすぎのように思う。マスコミ一つ取っても、高級メディアの定評高いNYTやBBCは朝日やTBSと同程度には「マスゴミ」だし、iPodだのiPhoneだのiPadだのは「技術的には二番煎じなのに商売のうまさだけでコバンザメ的に利益を取っていってる、こんな猿真似野郎が市場を支配するなんて許せない」という、一昔前にSonyや松下あたりが浴びた批判がそのまま当てはまる。勿論向こうに優れた文化や見習うべきところはいろいろあるが、所詮は同じ人間が住んでいるということを忘れていやしないか。向こうにも色々悪いことはあって、一から十まで見習うべきユートピアなどでは決してないのに。
ちょっと習い覚えた英語を使って「グローバルごっこ」して喜んでいるだけならそれこそ猿でもできる。そこでとどまらずに、自分がやっていることがどういうことなのかをもうちょっと考えて、客観的に物事を見ようという姿勢の人が少ないのは本当に情けない限りだ。
NAME(CATEGORY)
という形のネーミングはなかなかいいね。
CATEGORYの例として、ニコニコだと実況プレイヤー、生放送主とか。
Wikipediaだと内閣総理大臣(一覧)とかONE PIECE (アニメ)とか。
プログラマだと'アニメ::ONE PIECE'や'アニメ.ONE PIECE'のようなネーミングに慣れてると思うけど、
NAMEが前に来るほうが視認性が良い。ただ、()のタイピングは面倒だけど。
.
あとGIGAZINEのURLも最近良いと思ったネーミングの例。
簡潔な名前であり、しかも名前を見ただけで内容が容易に推測できる。また日付も付いている。
ttp://gigazine.net/index.php?/news/comments/20100805_employees_social_media_celebrities/
→Twitterなどで有名人となっている社員の取り扱い方法、5つのメリットと5つの地雷 - GIGAZINE
ttp://gigazine.net/index.php?/news/comments/20100804_too_proud_to_be_majority/
オブジェクトのシリアライズツールであるプロトコルバッファについて書きます。
Protocol Buffers 本家
http://code.google.com/apis/protocolbuffers/
XMLはもう不要!? Google製シリアライズツール「Protocol Buffer」
http://journal.mycom.co.jp/articles/2008/07/18/protocolbuffer/index.html
Protocol Buffers (Protocol Buffers の内部解説記事。とても参考になります)
http://dodgson.org/omo/t/?date=20080712
プロトコルバッファは異種言語間でオブジェクトのやりとりをするための規格です。
独自の言語によりオブジェクトのインターフェースを規定することで、多言語対応を行っています。
例えばこんな感じ。
package tutorial; message Person { required string name = 1; required int32 id = 2; // Unique ID number for this person. optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } // Our address book file is just one of these. message AddressBook { repeated Person person = 1; }
以上のようなprotoファイルから各言語のソースコード、または何らかのデータ操作ライブラリを使いオブジェクトの処理を行います。
googleによってC++, Java, Python用のライブラリが作成されましたが、他の言語に対応したサードパーティー製のライブラリがいくらでもあるので、実質的にほぼすべての言語で使えると言っても過言ではありません。
数字が多きければ大きいほど、長いバイト長で保存されます。ただし、負数の場合は符号ビットが立つ関係で、ほとんど常に変換後のバイト数が最長バイト数(10)になってしまいます。フィールドの型をsint32, sint64で宣言しると、各数値にzig-zags変換が行われるため、負数であってもその値の絶対値で使用バイト数が決まるようになります。
バイナリに保存されるデータは各メッセージのID/型/値のみです。なので、同じ定義の二つのメッセージ型は、プロトコルバッファ上では全く同じように扱うことが出来ます。例えば、片方からシリアライズしたデータを、もう片方の型でデシリアライズすることが可能です。
またオブジェクトを連続でシリアライズ/デシリアライズすることもできます。
すでに存在する継承関係のあるクラスを、Protocol Buffersでシリアライズ/デシリアライズしたい場合は次のようにします。
(ソースコード中になぜか日本語が書けないので、コメントはすべて英語になっています)
message PbBase { require int32 id = 1; require int32 value = 2; require Derived derived = 10; // - Point !!! } message PbDerived { require string string_value = 1; }
継承元のメッセージの定義に、継承先のメッセージを持たせます。Baseを継承するクラスをシリアライズ/デシリアライズしたい場合は、PbBaseメッセージを中心に処理を行うことで、比較的簡単に処理を実装することが出来ます。
例えばこんな感じ
Base *Base_DeserializeFrom(PbBase &amp;pbobj) { // Arrange the classes which inherits from Base. if (pbobj.has_derived()) { return new Derived(pbobj); } else ... } class Base { ... virtual void Base::SerializeTo(PbBase &amp;pbobj) { // Set the fields of 'pbobj', } ... }; class Derived { ... virtual void Base::SerializeTo(PbBase &amp;pbobj) { PbDerived *derived = pbobj.mutable_derived(); Base::SerializeTo(pbobj); // Set the fields of 'derived', ... } ... };
protoファイルを以下のように書くと、メッセージの扱いが非常に難しくなります。
message PbBase { require int32 id = 1; require int32 value = 2; } message PbDerived { required PbBase base = 1; // - Here is the point !!! require string string_value = 2; }
仕事切り上げて
How to Begin and End Email
Beginnings and endings are a challenge in most activities, but in email getting off to a good start and ending positively will strengthen the communication and increase understanding.
Start with a specific subject line.
Choose the better subject line in each pair below:
1. a. New Phones
b. New Phone Installation: Your Action Required
2. a. Update on Development of Sales Model
3. a. Summer newsletter
b. 10 Great Tips for Summer vacation
In number 1, the second choice conveys a sense of urgency and action, whereas the first choice falls flat. In 2, the longer title focuses the reader on which update the email is explaining. In 3, you don’t really have much choice. Who would take a?
Next comes the greeting.
Examples:
• Hi, Fred and Lauri.
• Hi, team.
• Greetings, everyone
• Good morning, Sayed. (If Sayed this message in the morning)
• Jian, we are looking forward to meeting you next week.
• To: Finance and Administration Team
• To all employees:
• David,
• Ruth, Mala and Felicia:
The last five examples must be on a separate line at the top of the message. All the others can be either a separate line or at the beginning of a paragraph.
Choose the greeting that matches your relationship with the reader(s) and the purpose of the message. “Hi” is friendly but too informal in certain situations—for example, in response to a request for a proposal. “Hello” is friendly and professional. “Hey”is too informal and slangy for most messages.
“To” followed by a pronoun like “all” or the name of a group sounds professional but does not convey warmth. Warmth is required in all messages, but please remember that you must always consider the position of the receiver.
Avoid gender-based greetings such as “Ladies.” Even if the group you are writing it is all women, some among them will object to this greeting.
Do not greet people whose name is included on the Cc line. Only greet people whose names are on the To line of the email.
The punctuation of greetings is a topic for discussion. All the punctuation used in the list above is correct. Some people use “Hi team” and “Hello Robin” without the comma, but traditional writers retain the comma. The reason is that these words are in “direct address.” When we directly address the reader, as in “Hi, team” (or in the example that begins with “Jian”) the name is separated from the other words by a comma.
“Dear Mr. Mathews” is followed by a colon in a business letter and in an email that replaces a business letter. However, it is also acceptable to use a comma after a
“Dear” greeting in a business email.
In a quick exchange of email with someone it is not necessary to continually greet your reader. Compare such an exchange with putting the person on hold on the telephone. When you return to the phone call, you say, “Thanks for holding. I have the information: rather than “Hi Laurie.”
The last sentence of an email is like the last words of a phone call. They may be a quick signoff or a courteous close, depending on the formality of the communication.
Examples:
• See you in Tokyo!
• Have a great trip!
• I will email you in August to schedule lunch.
• Please call me again with any questions
• Thanks again for all your help with the design.
• Thank you for your cooperation. We appreciate the opportunity to work with you.
Avoid continually using “Have a great day!” or similar expression as your closing sentence. It became meaningless with constant use and it is a bad fit with email that communicates a policy or serious announcement.
It is not wise to save a request for action or approval until the end of the message. Email readers do not read to the end of a message when they believe they have gotten the main point already.
A complimentary close—yes or no?
Business letters typicall end with phrases called “complimentary closes” such as “Sincerely yours,” “Best wishes,”and “Best regards.” A complimentary close is not required in email. However, business email often uses such a close to sound formal, look professional, or simply communicate courteously.
Examples:
• Sincerely,(the most formal of the list)
• Best regards, (professional)
• Warm regards, (professional and warm, as you would expect)
• Regards, (less friendly than the other 2 regards choices)
• With best wishes, (or) Best wishes, ( professional)
• With thanks, (professional and grateful)
• Ciao! (friendly and rather informal)
• Cheers, (friendly)
A word like “Greetings” does not belong in a close. It may be used in the last sentence, though, to greet others who might see the message:
• Please give our greetings to Dr. Carr
• Greetings to your colleagues in Systems Research
Although people frequently use “Thanks” as a close, it is not standard, and careful writers avoid it. Do not use “Thanks in advance” as a close, because many people find it presumptuous. Rather than “Thanks” or “Thanks in advance,” create a better sentence, such as “Thanks for considering my request.” Or use “With thanks” as a complimentary close followed by a comma.
Advice for those who receive less-than-perfect Email. You will sometimes receive email that is less than perfect, which means you might feel a bit offended by them. My advice to you on this is to get through them and leave them behind. Bring a bright smile to your face and a kind tone to your email reply. Forgive those whose writing was clumsy, abrupt, or annoying. They were merely experiencing moments of being human and imperfect.