投稿

ラベル(バッチ処理)が付いた投稿を表示しています

キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

sedが便利すぎる

久々にsedの活躍の場 大量のWebを扱う話は継続しております。 よくよく、調べてみると恐ろしげな記述があちこちに… 表があって、その中に金額の一覧が作られているんだけど、ソースコードを見ると <td>¥500-</td> とか書かれているわけですよ。 でもって、これをレンダリングすれば、[ \500- ] となるわけです。 ちなみに、[ ] が表だと思ってください。 これが、1ページに40ヶ所程度。×60ページ。 やる気が失せますわ…。 そこで、sedの出番となるわけです。 何がしないといけないのかというと、 「¥」→「&yen;」に置き換えれば良いだけの話。 これならワンライナーでOKっぽい。 sed -i -e 's/\\/\&yen;/g' www/*/*.html 結局、これだけですね。 ファイル全体で置換して、結果をファイルに上書き保存。 でもって、フォルダが60個ほど分けて保存されているので、その中のhtmlファイルを指定してやればOK。 実際に実行してやると、ほんの1秒足らずで終了してくれます。 こんなの手作業でやる気にならないもんね〜。 テストする時間を入れても、10分もかかっていないので、良い選択をしたなとw こういった処理はスクリプト書くより、sedやawkの方が早いですゎ。 でも、エディタやらGUIベースのツール使ってたりすると、何時間もかけちゃったりするんだろうな、普通は。

現場で書き換え…

ログインスクリプトでエラー 前回、マイクロソフトのサンプルに問題があって、修正が必要と書いたのだけれど、現場でテストしてみると、さらにエラーが発生する。 strGroups = LCase(Join(CurrentUser.MemberOf)) 今度は、この記述だ・・・。 どうやら、ユーザのデータを引いた時のOUやグループの設定状況でデータ個数が配列で返らない場合に、うまくjoinできていないらしい。 そこで、 'strGroups = LCase(Join(CurrentUser.MemberOf)) if IsArray(CurrentUser.MemberOf) then    strGroups = LCase(join(CurrentUser.MemberOf)) else    strGroups = LCase(CurrentUser.MemberOf) End if てな感じで、配列かどうかで処理を分ける必要があるということが判明。 その場で、書き換えてテストしなければならない程の、逼迫ぶりで…。疲れましたゎ。 でも、これで何とか動作するようになり、OKです。 念の為、全て記述しておこう。 Const MANAGER_GROUP = "cn=manager" Const SUPPORT_GROUP = "cn=support" 'Const STAFF_GROUP   = "cn=staff" Set wshNetwork = CreateObject("WScript.Network") 'homeはプロファイル設定で掴ませることにするのでコメントアウト 'wshNetwork.MapNetworkDrive "i:" , "\\dc01\home$\" & wshNetwork.UserName wshNetwork.MapNetworkDrive "s:" , "\\dc01\staff" Set ADSysInfo = CreateObject("ADSystemInfo")...

忙しかった…この数日

イメージ
毎日書くのは難しい 昨日から顧客先での作業が、朝から遅くまで(帰ったのは23時過ぎてた)入っていた。 内容は、まあ40台ほどPCの入っている法人で、1台〜10台程度に分かれて部屋ごとに配置されているマシンのネットワークの再構築とサーバの導入、PCクライアントの保守が目的といった業務内容だ。 これまで素人管理者が自然増PCのネットワークを広げ、ハブの超多段カスケード接続とPCのデタラメ管理を行なってきたという感じだった。 もちろん、サーバなんて存在せず、OSはバラバラ、アプリケーションも不統一、NASが1台入っているだけだ。ルータは無線LANルータのみ。ハブは5ポートハブが中心で、アップリンクとダウンリンクに2ポート取られ、結局3ポートしか利用できないものが数多く存在し…。 恐ろしい管理体制で…orz。 まあ、その準備で忙しかったので、書く作業に割ける実質的な時間が取れなかった。 3人で作業するために… 各PCの状況を把握するための、バッチ作成を行なっていて、結構手間取って…。何せWindows用のバッチを書いたのは、何年ぶりだっただろうか…。 案外、覚えているところと、全く覚えていないところとがあって。と言うよりシェルスクリプトと同じようにかけるところだけ、書くことができたという感じだろうか…。 あまり、難しいことはせず、ファイルに吐き出して、後で処理しようという考えで書いた。こんな感じにしてみた。 @echo off echo =====check date===== > %COMPUTERNAME%.txt date /T >> %COMPUTERNAME%.txt time /T >> %COMPUTERNAME%.txt         echo system情報(1)取得中... msinfo32.exe /nfo %COMPUTERNAME% echo network情報取得中... echo. >> %COMPUTERNAME%.txt       echo =====ipconfig===== >> %COMPUTERNAME%.txt ipconfig /all >> %COMP...