「console」を含む日記 RSS

はてなキーワード: consoleとは

2019-03-13

増田版・黒歴史クリーナ

使い方

  1. 日記を書く」画面を開く
  2. F12を押し、Consoleタブに切り替える
  3. https://pastebin.com/raw/LwQSPSM9の内容をコピペしてEnterを押す

注意

たくさん記事がある場合多少時間が掛かります

動作確認

相談

はてな退会しようと思ったから書いてみたけど、退会すると消えそうだよな

どこに残せばいい?誰もいらない?

2019-01-31

9ヶ月勤めたNTTグループ退職しました

タイトルの通り2018年入社したNTTグループの某社を退職しました。

2019年1月中旬正式退職したので、約9ヶ月間働いたことになります

記事では非常に主観的かつ局所的な話を書くつもりであり、一般性には欠けますのでご承知ください。

自己紹介

NTTグループの某SIer企業2018年度の新入社員として入社しました。

前年度までは大学院に在籍しており、情報系の研究を行っていました。

入社してから立ち位置としては一応システムエンジニアに分類されるはずですが、あまりシステムエンジニアらしい仕事は行いませんでした(これについては後述しています)。

退職までの流れ

2018年4月入社し、最初の2ヶ月間は新入社員研修を行っていました。

研修内容は大手企業あるあると言った感じで、挨拶練習名刺渡し練習ビジネス文章の書き方等を行いました。

周りは「研修が手厚くて良い」と言っていましたが、個人的には退屈なだけでした。

今振り返ってみると、この研修間中が最もつらかった様に思います

しかしながら研修自体は退屈であったものの流石に大手企業と言うべきか入社同期には優秀な方が多く、変な人間も少なかったため人間関係の面ではこれといった苦労はありませんでした。

6月になって研修期間が終わると正式部署配属が行われました。

この時配属された部署退職するまで在籍していたことになります

部署自体の詳細についてはこのエントリでは伏せますが、元々配属を希望していた部署であったため、配属当初は安心した記憶があります

退職理由

何か1つこれが決め手になってといった明確な退職理由はありません。

インターネットで言われるようなSIer業界の悪評についても内定から知っていて、実際に入ってみての感想としても「噂は真実だったんだな」くらいのものだったので特に入社したことに対する後悔もありません。

入社して詰まらない・つらい仕事であったら適当なところで辞めようと思っていましたし、その結果として詰まらない・つらい事象がいくつか重なったため退職するに至りました。

それらの事象を細かく挙げていくと切りがありませんが、そのうち幾つか分かりやすもの(且つ社内機密や違法行為に当たらないもの)を以下に挙げます

仕事の内容がほとんど雑務に分類されるようなものばかりだった

少なくとも自分想像していたシステムエンジニアとしての業務殆どありませんでした。

いわゆるSIerへの批判的な記事に挙げられるようなこと(Excelスクリーンショットを貼り付ける作業、何に使われるのか分からない謎の資料作成etc.)や、電話番等が主な業務でした。

新入社員に対して雑務を割り当てるというのはある種合理的な部分もあるとは思うので批判は控えますが、個人的には特に学ぶべきこともなく時間無駄に感じました。

一方でExcelスクリーンショットに関しては批判するべき部分があります

Excelスクショは「エビデンスを残す」という名目で行われることが多いと思いますが、システムが正しく動作たか顧客証明する目的であれば、結果ではなく検証をする方法提供するべきではないかというのが私の意見です。

スクリーンショットなんてものはいくらでも改竄可能もの(WebページなどであればDeveloper ConsoleHTMLを書き換えれば良い)であり、普通に考えればエビデンスとしての効力はないと考えられます

特に学べることがなかった

これは主にシステム開発・運用まわりについてです。

周りにはそれなりの年齢の方も多く、また社会インフラの構築を担うことの多い会社であるため、技術的な知識に造詣の深い方が多いと考えていたのですが、そのようなことはありませんでした。

大きな会社なのでそういった人も社内のどこかにはいるのかもしれませんが、少なくとも自分の周りでは観測できませんでした。

詳細は避けますが、技術的な知識に関してはその辺の情報学部生の方が理解していると思います

Linuxコマンドが分からない方向けにコマンドの打ち方をまとめた手順書(ターミナルエミュレータを立ち上げて、どこにユーザ名・パスワードを打ち込んで、どのボタンを押して...をスクリーンショット付きでExcelにまとめる)や殆ど問題を丸投げしている様な質問表等を作っていた時の心中は決して穏やかなものではありませんでした。

ファイル名の末尾に日付を付けるようなバージョン管理方法も噂では聞いていたものの本当に実在しているとは思っていませんでした。

また部署としては今後コンサルタントとなるような人材を増やしていきたいような雰囲気がありましたが、システム殆ど理解していない人にコンサルが務まるのかはよく分かりません。

個人的コンサルタントという肩書懐疑的なのもあります

環境に満足できなかった

主に常用していた端末周りの環境についてです。

使用しているコンピュータスペックがあまりにも低く(メモリ2Gハードディスク50GB、32bitOS)、まともに作業ができるような環境ではありませんでした。

Excelを開いたり、酷い時はIMEの変換機能使用した時にもコンピュータが固まっていました。

上で雑務殆どと書きましたが稀に開発をすることもあり、そういった場合特にスペックの低さによるストレスを感じていました。

私自身そこまで気合を入れて仕事をするような人間ではなく、むしろできることな仕事せず遊んでいたい人間ですが、やるべき仕事がくだらない原因で阻害されるというのはそれはそれでストレスが溜まるものだなと思いました。

自分だけでなく周りの人達環境でもそういったことは起こっていましたが、周りの人達はこの現象について好意的に感じている(コンピュータが固まるのを理由仕事をしなくても済むため)ようでしたので、その辺りの温度差も退職理由になっています

計算すれば高スペックコンピュータを導入するコストよりも、低スペックコンピュータを使うことにより生じる人件費無駄の方が大きいと分かるような気がしますが、あまり計算が得意な人がいないのだと思います

全体的な会社方向性に疑問を感じた

これは主にセキュリティ施策についてです。

昨今セキュリティ重要視され、セキュリティに関する施策予算が付くようになったのは良い点だと思っています

しかしながら、実施される施策的外れものと言わざるを得ないものばかりでした。

的外れならまだ良いですが、それはセキュリティリスクを高めるだけなのでは?と言った理解のない上の人間が思いつきで実施したとしか思えないものもあり大変疑問を感じました。

意味のない施策業務環境が不便になるのも見てる分には面白いですが、その中で仕事がしていきたいとは思えませんでした。

パスワードの定期変更や、暗号化zipファイルメールで送り続いてパスワードメールで送る等のバッドノウハウが未だに存在していることも知りました。

たこれはSI業界全体に言えることだとも思いますが、RPAとかDX(Digital Transformation)とか10,20年前に言うならともかく、今更言っても時代錯誤感が強いです。

良かった点

退職理由として不満点を挙げることになってしまいましたが、良い点もありました。

残業ほとんどなく休みが取りやすかった

これは部署プロジェクトに依る部分もあるみたいですが、少なくとも私の所属部署では早く帰ったからと言って咎められるようなことは殆どありませんでした。

最近労働時間に関する制限がかなり厳しくなっているようで、残業が多い部署は上から注意されているようでした。

有給休暇についても申請して拒否されるようなことはなく、むしろ消化が推奨されていました。

休んだことにより後から文句を言われることもありませんでした。

周りの人が良い人ばかりだった

上司や同僚から理不尽な扱いを受けるようなことは殆どありませんでした。

入社前のイメージパワハラモラハラは当たり前といったものであったため、非常に驚かされた部分です。

また少なくとも自分観測範囲では人種国籍性別による差別は行われていないように見えました。

福利厚生が充実していた

流石にNTT系列と言うべきか、福利厚生は充実していました。

色々ありすぎて私も全てを把握できていませんが、恐らく福利厚生に関しては国内企業ではトップクラスに充実していると思います

年収が高かった

少なくとも1年目の年収としては比較的高い方であったと思います

業務内容の割に高いとも思いました。

日本人の平均年収程度は貰えていたはずです。

私の場合残業殆どありませんでしたが、役職のない若手が残業をした場合残業手当が付くため(役職がつくと裁量労働制になる)、残業をした場合は更に貰えると思います

もちろん残業手当は働いた分だけしっかり付くようでした。

ただどうやら年収の伸びはそこまで良くはなく、聞いた話では20~30年勤続し管理職になってやっと1000万程度らしいです。

また国内大企業らしく厳格な年功序列制があるようでした。

まとめ

入社してから退職までの約9ヶ月間を振り返りました。

ただ勤務中はかなりささくれ立った心境であったため、こうして比較的穏やかに振り返ることができて良かったなと思う次第です。

巷ではSIer崩壊説みたいなものもありますが、個人的にはSIerは今後も続いていくと考えています

環境改善していって数十年後に「あの時辞めなければ...」と後悔することになると面白いですね。

今後の身の振り方については決まっていて、ソフトウェアエンジニアとして転職をすることにしました。

具体的な企業名や待遇等について詳細を書くことができませんが、年収については前職であれば20~30年勤続し管理職になった場合と同程度になります

最後になりましたが、読んでいただきありがとうございました。

2018-12-11

Webシステムつくってね」と言われたレンタルサーバーポンコツ

nvmもcomposerも使えない

そもそもconsole無いしな

どうすんのこの産業廃棄物

2018-04-17

Quick Tutorial for Pyramidをやってみる

PyramidPython向けWebフレームワーク

Quick Tutorial for Pyramid公式チュートリアル

https://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/index.html

Prelude: Quick Project Startup with Cookiecutters

$ $VENV/bin/cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout 1.9-branch

として、プロンプトの問いに答えるとサンプル的なアプリができる。

ghはgithubか。

引数指定できるテンプレートhttps://github.com/Pylons?q=pyramid-cookiecutter

sqlalchemyを使うものは分かるけど、zodbって何?

アプリは以下のようにして起動する。

$ env/bin/pserve development.ini --reload

このpserveというPythonモジュールアプリ動かしたりする。

01: Single-File Web Applications

超単純なPyramidアプリを作って、WSGIイメージをつかむ。

app.py を書き写して動かしたらHello Worldが動いた。

Analysisの項:
2. Lines 12-14. Use Pyramid's configurator in a context manager to connect view code to a particular URL route.

viewURLの紐付けはconfig.add_routeしてconfig.add_viewする。add_viewしてからadd_routeしても大丈夫だった。

3. Lines 6-8. Implement the view code that generates the response.

viewにはrequestが渡される。requestに色々入ってそう。

4. Lines 15-17. Publish a WSGI app using an HTTP server.

waitressは知らないけど、serveでHTTPサーバ作ってWSGIアプリを公開できるのかな?

Extra creditの項:
1. Why do we do this:
print('Incoming request')

...instead of:

print 'Incoming request'

Python3だから

2. What happens if you return a string of HTML? A sequence of integers?

Inernal Server Errorになった。アプリのほうではValueErrorresponseを返すようにと怒られていた。text/plainとか返すには何かしないとダメっぽい。

3. Put something invalid, such as print xyz, in the view function. Kill your python app.py with ctrl-C and restart, then reload your browser. See the exception in the console?

print(xyz)してみろ、ということかな。1と同じくInernal Server Errorになって、コンソールにはNameErrorが出た。

4. The GI in WSGI stands for "Gateway Interface". What web standard is this modelled after?

CGIかな?

2018-03-09

ブログやめようかな

毎日1万PVあるブログ(自慢)で内容はガジェットの速報を扱っているんだが急にインデックスされなくなっちゃった

Search Consoleを見ても何かに抵触したらしき形跡もないから全くわからない。唯一思い当たる節はPWA対応の際にサーバー内のファイルを弄った・・・

でも何をしたのか覚えていないのだ。


インデックスされない記事を書いても意味がないしいっその事ブログをやめようか迷っている。

どうすればいいのだろうか。

2016-12-14

SEO女王

SEMIの声を聴くたびに 目に浮かぶAltavista ゴッゴル祖母の手を離れ 独りで訪れたAnalytics

南場は此処の女王様 生き写しの様なAlltheWeb ヤッヒョイが手を伸べて 子供ながらに魅せられたSearch Console

CEOになったあたしを 置いて女王は消えた 毎週金曜日に来ていた 守安と暮らすのだろう

JR渋谷駅東口を出たら 其処はあたしの庭 大遊戯SEO

バイアウトからはヒカリエで 子会社のあたしが女王

http://anond.hatelabo.jp/20161218175910

http://anond.hatelabo.jp/20161217004553

http://anond.hatelabo.jp/20161218183558

2016-07-02

Dota2でコンソールを開く方法についてメモ

オプションenable consoleにチェックを入れるだけじゃ起動できなかった。

起動オプションに-consoleを入れて、console起動ボタンデフォルトバックスラッシュから]に変えたらできた。

blackwidowにはバックスラッシュ刻印されてるキーがあるけど、これを押してもバックスラッシュ入力されない。

これは文字入力システム日本語用になってることと関連してると思う。

なぜかその割り当ててる文字入力できないという謎現象が起きた。

一応コンソールを起動する方法自体は見つかったけど、ちょっと面倒な手順を踏まなきゃいけないようだ。

2016-05-06

お名前.comがやっぱりクソすぎる件

セコい情報商材サイトのようなサイトの作りや、死ぬほど面倒な解約プロセスは周知のとおりだが、さらなるクソさが明らかになった。

Google Search Console認証のためにDNSレコード設定を追加したところ、サーバに到達できなくなった。当たり前だがネームサーバは変更していない。

あれこれ原因を探った結果、AWS Route 53のネームサーバに振り向けていたのが何故かお名前.comデフォルトネームサーバに書き換えられていることが分かった。

2016-03-26

http://anond.hatelabo.jp/20160326101539

高頻度で更新されているコンテンツに対してはべったり貼り付いてくるよ。

から、即インデクス化される。

ちなみに、その手のサイトを持っている場合はsearch consoleから通知するための手段があった。

2016-01-14

北朝鮮公式

かなりオープンサイトだ。

nmap www.korea-dpr.com

Starting Nmap 6.47 ( http://nmap.org ) at 2016-01-14 21:20 JST
Stats: 0:00:00 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 0.55% done
Nmap scan report for www.korea-dpr.com (87.98.231.40)
Host is up (0.28s latency).
rDNS record for 87.98.231.40: cluster011.ovh.net
PORT      STATE    SERVICE
1/tcp     open     tcpmux
3/tcp     open     compressnet
4/tcp     open     unknown
6/tcp     open     unknown
7/tcp     open     echo
9/tcp     open     discard
13/tcp    open     daytime
17/tcp    open     qotd
19/tcp    open     chargen
20/tcp    open     ftp-data
21/tcp    open     ftp
22/tcp    open     ssh
23/tcp    open     telnet
24/tcp    open     priv-mail
25/tcp    closed   smtp
26/tcp    open     rsftp
30/tcp    open     unknown
32/tcp    open     unknown
33/tcp    open     dsp
37/tcp    open     time
42/tcp    open     nameserver
43/tcp    open     whois
49/tcp    open     tacacs
53/tcp    open     domain
70/tcp    open     gopher
79/tcp    open     finger
80/tcp    open     http
81/tcp    open     hosts2-ns
82/tcp    open     xfer
83/tcp    open     mit-ml-dev
84/tcp    open     ctf
85/tcp    open     mit-ml-dev
88/tcp    open     kerberos-sec
89/tcp    open     su-mit-tg
90/tcp    open     dnsix
99/tcp    open     metagram
100/tcp   open     newacct
106/tcp   open     pop3pw
109/tcp   open     pop2
110/tcp   open     pop3
111/tcp   open     rpcbind
113/tcp   open     ident
119/tcp   open     nntp
125/tcp   open     locus-map
135/tcp   open     msrpc
139/tcp   filtered netbios-ssn
143/tcp   open     imap
144/tcp   open     news
146/tcp   open     iso-tp0
161/tcp   open     snmp
163/tcp   open     cmip-man
179/tcp   open     bgp
199/tcp   open     smux
211/tcp   open     914c-g
212/tcp   open     anet
222/tcp   open     rsh-spx
254/tcp   open     unknown
255/tcp   open     unknown
256/tcp   open     fw1-secureremote
259/tcp   open     esro-gen
264/tcp   open     bgmp
280/tcp   open     http-mgmt
301/tcp   open     unknown
306/tcp   open     unknown
311/tcp   open     asip-webadmin
340/tcp   open     unknown
366/tcp   open     odmr
389/tcp   open     ldap
406/tcp   open     imsp
407/tcp   open     timbuktu
416/tcp   open     silverplatter
417/tcp   open     onmux
425/tcp   open     icad-el
427/tcp   open     svrloc
443/tcp   open     https
444/tcp   open     snpp
445/tcp   filtered microsoft-ds
458/tcp   open     appleqtc
464/tcp   open     kpasswd5
465/tcp   open     smtps
481/tcp   open     dvs
497/tcp   open     retrospect
500/tcp   open     isakmp
512/tcp   open     exec
513/tcp   open     login
514/tcp   open     shell
515/tcp   open     printer
524/tcp   open     ncp
541/tcp   open     uucp-rlogin
543/tcp   open     klogin
544/tcp   open     kshell
545/tcp   open     ekshell
548/tcp   open     afp
554/tcp   open     rtsp
555/tcp   open     dsf
563/tcp   open     snews
587/tcp   open     submission
593/tcp   open     http-rpc-epmap
616/tcp   open     sco-sysmgr
617/tcp   open     sco-dtmgr
625/tcp   open     apple-xsrvr-admin
631/tcp   open     ipp
636/tcp   open     ldapssl
646/tcp   open     ldp
648/tcp   open     rrp
666/tcp   open     doom
667/tcp   open     disclose
668/tcp   open     mecomm
683/tcp   open     corba-iiop
687/tcp   open     asipregistry
691/tcp   open     resvc
700/tcp   open     epp
705/tcp   open     agentx
711/tcp   open     cisco-tdp
714/tcp   open     iris-xpcs
720/tcp   open     unknown
722/tcp   open     unknown
726/tcp   open     unknown
749/tcp   open     kerberos-adm
765/tcp   open     webster
777/tcp   open     multiling-http
783/tcp   open     spamassassin
787/tcp   open     qsc
800/tcp   open     mdbs_daemon
801/tcp   open     device
808/tcp   open     ccproxy-http
843/tcp   open     unknown
873/tcp   open     rsync
880/tcp   open     unknown
888/tcp   open     accessbuilder
898/tcp   open     sun-manageconsole
900/tcp   open     omginitialrefs
901/tcp   open     samba-swat
902/tcp   open     iss-realsecure
903/tcp   open     iss-console-mgr
911/tcp   open     xact-backup
912/tcp   open     apex-mesh
981/tcp   open     unknown
987/tcp   open     unknown
990/tcp   open     ftps
992/tcp   open     telnets
993/tcp   open     imaps
995/tcp   open     pop3s
999/tcp   open     garcon
1000/tcp  open     cadlock
1001/tcp  open     unknown
1002/tcp  open     windows-icfw
1007/tcp  open     unknown
1009/tcp  open     unknown
1010/tcp  open     surf
1011/tcp  open     unknown
1021/tcp  open     exp1
1022/tcp  open     exp2
1023/tcp  open     netvenuechat
1024/tcp  open     kdm
1025/tcp  open     NFS-or-IIS
1026/tcp  open     LSA-or-nterm
1027/tcp  open     IIS
1028/tcp  open     unknown
1029/tcp  open     ms-lsa
1030/tcp  open     iad1
1031/tcp  open     iad2
1032/tcp  open     iad3
1033/tcp  open     netinfo
1034/tcp  open     zincite-a
1035/tcp  open     multidropper
1036/tcp  open     nsstp
1037/tcp  open     ams
1038/tcp  open     mtqp
1039/tcp  open     sbl
1040/tcp  open     netsaint
1041/tcp  open     danf-ak2
1042/tcp  open     afrog
1043/tcp  open     boinc
1044/tcp  open     dcutility
1045/tcp  open     fpitp
1046/tcp  open     wfremotertm
1047/tcp  open     neod1
1048/tcp  open     neod2
1049/tcp  open     td-postman
1050/tcp  open     java-or-OTGfileshare
1051/tcp  open     optima-vnet
1052/tcp  open     ddt
1053/tcp  open     remote-as
1054/tcp  open     brvread
1055/tcp  open     ansyslmd
1056/tcp  open     vfo
1057/tcp  open     startron
1058/tcp  open     nim
1059/tcp  open     nimreg
1060/tcp  open     polestar
1061/tcp  open     kiosk
1062/tcp  open     veracity
1063/tcp  open     kyoceranetdev
1064/tcp  open     jstel
1065/tcp  open     syscomlan
1066/tcp  open     fpo-fns
1067/tcp  open     instl_boots
1068/tcp  open     instl_bootc
1069/tcp  open     cognex-insight
1070/tcp  open     gmrupdateserv
1071/tcp  open     bsquare-voip
1072/tcp  open     cardax
1073/tcp  open     bridgecontrol
1074/tcp  open     warmspotMgmt
1075/tcp  open     rdrmshc
1076/tcp  open     sns_credit
1077/tcp  open     imgames
1078/tcp  open     avocent-proxy
1079/tcp  open     asprovatalk
1080/tcp  open     socks
1081/tcp  open     pvuniwien
1082/tcp  open     amt-esd-prot
1083/tcp  open     ansoft-lm-1
1084/tcp  open     ansoft-lm-2
1085/tcp  open     webobjects
1086/tcp  open     cplscrambler-lg
1087/tcp  open     cplscrambler-in
1088/tcp  open     cplscrambler-al
1089/tcp  open     ff-annunc
1090/tcp  open     ff-fms
1091/tcp  open     ff-sm
1092/tcp  open     obrpd
1093/tcp  open     proofd
1094/tcp  open     rootd
1095/tcp  open     nicelink
1096/tcp  open     cnrprotocol
1097/tcp  open     sunclustermgr
1098/tcp  open     rmiactivation
1099/tcp  open     rmiregistry
1100/tcp  open     mctp
1102/tcp  open     adobeserver-1
1104/tcp  open     xrl
1105/tcp  open     ftranhc
1106/tcp  open     isoipsigport-1
1107/tcp  open     isoipsigport-2
1108/tcp  open     ratio-adp
1110/tcp  open     nfsd-status
1111/tcp  open     lmsocialserver
1112/tcp  open     msql
1113/tcp  open     ltp-deepspace
1114/tcp  open     mini-sql
1117/tcp  open     ardus-mtrns
1119/tcp  open     bnetgame
1121/tcp  open     rmpp
1122/tcp  open     availant-mgr
1123/tcp  open     murray
1124/tcp  open     hpvmmcontrol
1126/tcp  open     hpvmmdata
1130/tcp  open     casp
1131/tcp  open     caspssl
1132/tcp  open     kvm-via-ip
1137/tcp  open     trim
1138/tcp  open     encrypted_admin
1141/tcp  open     mxomss
1145/tcp  open     x9-icue
1147/tcp  open     capioverlan
1148/tcp  open     elfiq-repl
1149/tcp  open     bvtsonar
1151/tcp  open     unizensus
1152/tcp  open     winpoplanmess
1154/tcp  open     resacommunity
1163/tcp  open     sddp
1164/tcp  open     qsm-proxy
1165/tcp  open     qsm-gui
1166/tcp  open     qsm-remote
1169/tcp  open     tripwire
1174/tcp  open     fnet-remote-ui
1175/tcp  open     dossier
1183/tcp  open     llsurfup-http
1185/tcp  open     catchpole
1186/tcp  open     mysql-cluster
1187/tcp  open     alias
1192/tcp  open     caids-sensor
1198/tcp  open     cajo-discovery
1199/tcp  open     dmidi
1201/tcp  open     nucleus-sand
1213/tcp  open     mpc-lifenet
1216/tcp  open     etebac5
1217/tcp  open     hpss-ndapi
1218/tcp  open     aeroflight-ads
1233/tcp  open     univ-appserver
1234/tcp  open     hotline
1236/tcp  open     bvcontrol
1244/tcp  open     isbconference1
1247/tcp  open     visionpyramid
1248/tcp  open     hermes
1259/tcp  open     opennl-voice
1271/tcp  open     excw
1272/tcp  open     cspmlockmgr
1277/tcp  open     miva-mqs
1287/tcp  open     routematch
1296/tcp  open     dproxy
1300/tcp  open     h323hostcallsc
1301/tcp  open     ci3-software-1
1309/tcp  open     jtag-server
1310/tcp  open     husky
1311/tcp  open     rxmon
1322/tcp  open     novation
1328/tcp  open     ewall
1334/tcp  open     writesrv
1352/tcp  open     lotusnotes
1417/tcp  open     timbuktu-srv1
1433/tcp  open     ms-sql-s
1434/tcp  open     ms-sql-m
1443/tcp  open     ies-lm
1455/tcp  open     esl-lm
1461/tcp  open     ibm_wrless_lan
1494/tcp  open     citrix-ica
1500/tcp  open     vlsi-lm
1501/tcp  open     sas-3
1503/tcp  open     imtc-mcs
1521/tcp  open     oracle
1524/tcp  open     ingreslock
1533/tcp  open     virtual-places
1556/tcp  open     veritas_pbx
1580/tcp  open     tn-tl-r1
1583/tcp  open     simbaexpress
1594/tcp  open     sixtrak
1600/tcp  open     issd
1641/tcp  open     invision
1658/tcp  open     sixnetudr
1666/tcp  open     netview-aix-6
1687/tcp  open     nsjtp-ctrl
1688/tcp  open     nsjtp-data
1700/tcp  open     mps-raft
1717/tcp  open     fj-hdnet
1718/tcp  open     h323gatedisc
1719/tcp  open     h323gatestat
1720/tcp  open     H.323/Q.931
1721/tcp  open     caicci
1723/tcp  open     pptp
1755/tcp  open     wms
1761/tcp  open     landesk-rc
1782/tcp  open     hp-hcip
1783/tcp  open     unknown
1801/tcp  open     msmq
1805/tcp  open     enl-name
1812/tcp  open     radius
1839/tcp  open     netopia-vo1
1840/tcp  open     netopia-vo2
1862/tcp  open     mysql-cm-agent
1863/tcp  open     msnp
1864/tcp  open     paradym-31
1875/tcp  open     westell-stats
1900/tcp  open     upnp
1914/tcp  open     elm-momentum
1935/tcp  open     rtmp
1947/tcp  open     sentinelsrm
1971/tcp  open     netop-school
1972/tcp  open     intersys-cache
1974/tcp  open     drp
1984/tcp  open     bigbrother
1998/tcp  open     x25-svc-port
1999/tcp  open     tcp-id-port
2000/tcp  open     cisco-sccp
2001/tcp  open     dc
2002/tcp  open     globe
2003/tcp  open     finger
2004/tcp  open     mailbox
2005/tcp  open     deslogin
2006/tcp  open     invokator
2007/tcp  open     dectalk
2008/tcp  open     conf
2009/tcp  open     news
2010/tcp  open     search
2013/tcp  open     raid-am
2020/tcp  open     xinupageserver
2021/tcp  open     servexec
2022/tcp  open     down
2030/tcp  open     device2
2033/tcp  open     glogger
2034/tcp  open     scoremgr
2035/tcp  open     imsldoc
2038/tcp  open     objectmanager
2040/tcp  open     lam
2041/tcp  open     interbase
2042/tcp  open     isis
2043/tcp  open     isis-bcast
2045/tcp  open     cdfunc
2046/tcp  open     sdfunc
2047/tcp  open     dls
2048/tcp  open     dls-monitor
2049/tcp  filtered nfs
2065/tcp  open     dlsrpn
2068/tcp  open     advocentkvm
2099/tcp  open     h2250-annex-g
2100/tcp  open     amiganetfs
2103/tcp  open     zephyr-clt
2105/tcp  open     eklogin
2106/tcp  open     ekshell
2107/tcp  open     msmq-mgmt
2111/tcp  open     kx
2119/tcp  open     gsigatekeeper
2121/tcp  open     ccproxy-ftp
2126/tcp  open     pktcable-cops
2135/tcp  open     gris
2144/tcp  open     lv-ffx
2160/tcp  open     apc-2160
2161/tcp  open     apc-agent
2170/tcp  open     eyetv
2179/tcp  open     vmrdp
2190/tcp  open     tivoconnect
2191/tcp  open     tvbus
2196/tcp  open     unknown
2200/tcp  open     ici
2222/tcp  open     EtherNet/IP-1
2251/tcp  open     dif-port
2260/tcp  open     apc-2260
2288/tcp  open     netml
2301/tcp  open     compaqdiag
2323/tcp  open     3d-nfsd
2366/tcp  open     qip-login
2381/tcp  open     compaq-https
2382/tcp  open     ms-olap3
2383/tcp  open     ms-olap4
2393/tcp  open     ms-olap1
2394/tcp  open     ms-olap2
2399/tcp  open     fmpro-fdal
2401/tcp  open     cvspserver
2492/tcp  open     groove
2500/tcp  open     rtsserv
2522/tcp  open     windb
2525/tcp  open     ms-v-worlds
2557/tcp  open     nicetec-mgmt
2601/tcp  open     zebra
2602/tcp  open     ripd
2604/tcp  open     ospfd
2605/tcp  open     bgpd
2607/tcp  open     connection
2608/tcp  open     wag-service
2638/tcp  open     sybase
2701/tcp  open     sms-rcinfo
2702/tcp  open     sms-xfer
2710/tcp  open     sso-service
2717/tcp  open     pn-requester
2718/tcp  open     pn-requester2
2725/tcp  open     msolap-ptp2
2800/tcp  


  
  

2015-03-12

http://anond.hatelabo.jp/20150312122358

マジレスすると、U+00a5なら使える。俺なら設計修正させるけど。

Path.GetInvalidFileNameChars メソッド (System.IO)

using System;
using System.IO;

namespace TestInvalidFileName
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get a list of invalid file characters.
            char[] invalidFileChars = Path.GetInvalidFileNameChars();

            Console.WriteLine("The following characters are invalid in a filename:");
            ShowChars(invalidFileChars);
            Console.WriteLine();

            string fileName = '\u00a5' + "108";
            using (var fs = File.Create(fileName))
            {
                if (fs != null)
                {
                    Console.WriteLine("File was created:" + fileName);
                    fs.Close();
                }
                else {
                    Console.WriteLine("File was not created:" + fileName);
                }
            }
        }

        public static void ShowChars(char[] charArray)
        {
            Console.WriteLine("Char\tHex Value");
            // Display each invalid character to the console.
            Array.Sort(charArray);
            foreach (char someChar in charArray)
            {
                if (Char.IsWhiteSpace(someChar))
                {
                    Console.WriteLine(",\t{0:X4}", (int)someChar);
                }
                else
                {
                    Console.WriteLine("{0:c},\t{1:X4}", someChar, (int)someChar);
                }
            }

        }
    }
}
The following characters are invalid in a filename:
Char    Hex Value
(中略)
",      0022
**,      002A
/,      002F
:,      003A
>,      003C
>,      003E
?,      003F
\,      005C
|,      007C

File was created:\108

2014-01-14

http://anond.hatelabo.jp/20140114041710

元の質問を見ると、プログラムの終了を待っているのはPythonじゃなくてConsoleだよね。

リダイレクト先はNone以外でもいい。

出力をNoneにするとエラーを見逃すからファイルに出した方がいいよ。

2012-09-20

http://anond.hatelabo.jp/20120920164222

こういうのを望んでいるなら、不可能。

var i = 10;

[1,2,3, ... ,99,100].each(function(i) {
	// 何かの処理
});

console.log(i); // 10と出て欲しい

jashkenasはこう主張している

if they do clash, shadowing the variable is the wrong answer. It completely prevents you from making use of the original value for the remainder of the current scope. Shadowing doesn't fit well in languages with closures-by-default ... if you've closed over that variable, then you should always be able to refer to it.

衝突が起こるとしても、変数隠蔽(shadowing)は間違った解決法だ。スコープ内のその他のすべての変数に関して、オリジナルの値の利用を完全に塞いでしまう。隠蔽は、クロージャが標準(closures-by-default)な言語にはうまくマッチしない。その変数を閉じ込めているならば、常に参照出来るべきだ。

ソースhttp://www.sixapart.jp/techtalk/2012/01/coffeescript.html

2012-09-01

ここが素晴らしかったよ・はてなOne

はてな One が始まってから 7 か月。こんなに使えば使うほど発見があったサービスはありませんでした。クローズドコミュニケーションって本当に楽しい!ってことを思い出させてくれました。ありがとうはてな Oneさようならはてな One

2012-08-13

C#基礎文法最速マスター

1. 基礎
classの作成

プログラムclass記述します。たとえばSampleという名前classを作る場合、Sample.csファイル内に次のように書きます。(C#場合ファイル名とクラス名は同一でなくても良い。複数のクラスを書いても良い)

public class Sample {

}
Mainメソッドの作成

プログラムclass内のMainメソッドの先頭から実行されます。Mainメソッドは次のように書きます

public class Sample {

    public static void Main( String[] args ) {
         // 処理を書く
     }

}
Console.WriteLineメソッド

文字列を表字するメソッドです。

Console.WriteLine( "Hello world" );
コメント

コメントです。

// 一行コメント

/*
   複数行コメント
 */
変数の宣言

変数の宣言です。変数の宣言時にはデータ型を指定します。

// 変数
int num;
データ型

データ型です。C#データ型には値型と参照型とがあります。以下は値型のデータ型です。

// int(整数)型
int num;
// char(文字)型
char c;
// float(単精度浮動小数点)型
float val;
// double(倍精度浮動小数点)型
double val;
// bool(論理)型
bool flag;
// DateTime(日付)型
DateTime date;

以下は参照型のデータ型です。

// StringString s;
// 配列String[] array;
プログラムのコンパイル

プログラムコンパイルするには、コマンドラインで以下のようにします。

csc Sample.cs
プログラムの実行

プログラムを実行するには、コマンドラインで以下のようにします。

.net framework on Windows場合

Sample.exe

Mono.frameworkの場合

mono ./Sample.exe
2. 数値
数値の表現

int、float、double型の変数に数値を代入できます。int型には整数だけ代入できます。float、double型には整数でも小数でも代入できます

int i = 2;
int i = 100000000;

float num = 1.234f;

double num = 1.234;
四則演算

四則演算です。

num = 1 + 1;
num = 1 - 1;
num = 1 * 2;
num = 1 / 2;

商の求め方です。割る数と割られる数が両方とも整数場合計算結果の小数点以下が切り捨てられます

num = 1 / 2;  // 0

割る数と割られる数のどちらかが小数場合計算結果の小数点以下が切り捨てられません。

num = 1.0 / 2;    // 0.5
num = 1 / 2.0;    // 0.5
num = 1.0 / 2.0;  // 0.5

余りの求め方です。

// 余り
mod = 4 % 2
インクリメントとデクリメント

インクリメントとデクリメントです。

// インクリメント
 ++i;

// デクリメント
 --i;
3. 文字列
文字列の表現

文字列ダブルクォートで囲みます

String str = "abc";
文字列操作

各種文字列操作です。

// 結合
String join = "aaa" + "bbb";

// 分割
String[] record = "aaa,bbb,ccc".Split( "," );

// 長さ
int length = "abcdef".Length();

// 切り出し
"abcd".Substring( 0, 2 )   // abc

// 検索
int result = "abcd".IndexOf( "cd" ) // 見つかった場合はその位置、見つからなかった場合は-1が返る
4. 配列
配列変数の宣言

配列です。

// 配列の宣言
int[] array;
配列の生成

配列の生成です。配列の生成時には要素数を指定するか、初期データを指定します。

int[] array;

// 要素数を指定して配列を生成
array = new int[5];

// 初期データを指定して配列を生成
array = new int[] { 1, 2, 3 };

// 宣言と同時に配列を生成
int[] array2 = new int[5];
配列の要素の参照と代入

配列の要素の参照と代入です。

// 要素の参照
array[0]
array[1]

// 要素の代入
array[0] = 1;
array[1] = 2;
配列の要素数

配列の要素数を取得するには以下のようにします。

array_num = array.Length;
配列のコピー

配列の要素を別の配列コピーするには以下のようにします。

int[] from = new int[] { 1, 2, 3 };
int[] to = new int[5];

from.CopyTo(to, 0);
5. 制御文
if文

if文です。

if ( 条件 )
{

}
if ~ else文

if ~ else文です。

if ( 条件 )
{

}
else
{

}
if ~ else if 文

if ~ else if文です。

if ( 条件 )
{

}
else if ( 条件 )
{

}
while文

while文です。

int i = 0;
while ( i < 5 )
{
    
    // 処理
    
    ++i;
}
for文

for文です。

for ( int i = 0; i < 5; ++i )
{
    // 処理
}
for-each文

for-each文です。配列の各要素を処理できます

int[] fields = new int[] { 1, 2, 3 };

foreach (int field in fields)
{
    // 処理
}
6. メソッド

C#では関数メソッドと言いますメソッドを作るには次のようにします。戻り値を返却するにはreturn文を使います

static int sum( int num1, int num2 )
{
    int total;

    total = num1 + num2;

    return total;
}
9. ファイル入出力

ファイル入出力です。ファイル入出力を行うには、プログラムの先頭に以下を記述します。

using System.IO;

以下がファイル入力の雛形になりますファイルオープンや読み込みに失敗した場合catch節に処理が移ります

String filename = "text.txt";
StreamReader reader = null;
try
{
    reader = new StreamReader(filename);

    String line;
    while ((line = reader.ReadLine()) != null)
    {

    }

}
catch (IOException e)
{
    // エラー処理:

}
finally
{
    if (reader != null)
    {
        try
        {
            reader.Close();
        }
        catch (IOException e) { }
    }
}

またはC#ではusing ステートメントと言うものがあり、この様にも書ける

String filename = "text.txt";
using (StreamReader reader = new StreamReader(filename))
{
    try
    {

        String line;
        while ((line = reader.ReadLine()) != null)
        {
            // 読み込んだ行を処理
        }

    }
    catch (IOException e)
    {
        // エラー処理:

    }
}

usingをつかうとCloseがなくなったことからわかるようにusing(){}を抜けるとき自動的にDisposeメソッドを呼び出し、オブジェクトを廃棄する。その分コードスッキリするが、使いにくい場面もあるので考えて使うこと。

以下がファイル出力の雛形になりますファイルオープンや書き込みに失敗した場合catch節に処理が移ります

String filename = "text.txt";
StreamWriter writer = null;

try
{
    writer = new StreamWriter(filename));

    writer.WriteLine("abc");
    writer.WriteLine("def");
    writer.WriteLine("fgh");

}
catch (IOException e)
{
    // エラー処理:

}
finally
{
    if (writer != null)
    {
        writer.Close();
    }
}

こちらもusingを使って書ける。が、割愛する。

知っておいたほうがよい文法

C#でよく出てくる知っておいたほうがよい文法の一覧です。

繰り返し文の途中で抜ける

繰り返し文の途中で抜けるにはbreak文を使用します。

for ( i = 0; i < 5; ++i ) {

    if ( 条件 ) {
        break;    // 条件を満たす場合、for文を抜ける。
    }

}
繰り返しの残り部分の処理をスキップする

残りの部分処理をスキップし、次の繰り返しに進むにはcontinue文を使用します。

for ( i = 0; i < 5; ++i ) {

    if ( 条件 ) {
        continue;    // 条件を満たす場合、残りの部分処理をスキップし、次の繰り返しに進む。
    }

}
例外処理

例外を投げるにはthrow文を使用します。

throw new Exception( "Error messsage" );

例外処理をするにはtrycatch文を使用します。

try {

    // 例外が発生する可能性のある処理

} catch ( Exception e ) {

    // 例外発生時の処理

}

2012-06-29

どのプログラミング言語が最も美しいか

■ C

for( const char *s="12345"; *s; ++s ) if( '2'<*s&&*s<'5' ) printf( "%d", (*s-'0')*2 );

JavaScript

console.log([1,2,3,4,5].filter(function (i){ return (i > 2 && i < 5 ); }).map(function(i){ return 2 * i; }));

Python

print(map(lambda x: x*2, filter(lambda x: x>2 and x<5, [1,2,3,4,5])))

Ruby

puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2}

C#

new{}{ 1,2,3,4,5 }.Where(x => 2 < x && x < 5).Select(x => x*2);

Common Lisp

(print (loop for x in '(1 2 3 4 5) if (< 2 x 5) collect (* x 2)))

Haskell

print [x*2| x <-[1,2,3,4,5], x > 2, x < 5]

■ J

  1. :(((>&2)*.(<&5)) a) # a=:1+i.5

■ R

print((function(){x<-c(1,2,3,4,5);x[2<x&x<5]*2})())</p>

Clojure

(print (for [x [1,2,3,4,5] :when (< 2 x 5)] (* x 2)))

Squeak Smalltalk

(1 to: 5) select: [:x | x between: 3 and: 4] thenCollect: [:x | x * 2]

2012-05-06

CoffeeScriptプライベート関数パブリックメソッドとして開示するやつ

class MyClass
	constructor: ->
		name = 'unknown'
		
		@getName = ->
			return name
		
		@setName = (newName) ->
			name = newName
	
		
MyClass:: = do ->
	_greet = ->
		console.log('どうも、' + @getName() + 'です。')
	
	return {
		constructor: MyClass
		greet: _greet
	}


myInstance = new MyClass()
myInstance.setName('純子')
myInstance.greet() #どうも、純子です。

CoffeeScript で @なんとかのプロパティが全部パブリックになるのが気になってて。

2012-01-27

[] Firebugログ上限に達しました。

エラーメッセージFirebugログ上限に達しました。n 件表示されませんでした。」

about:configextensions.firebug.console.logLimitを増やす。

既定値は500件。

2011-11-19

Firefoxアドオンマネージャからノートンを除外する方法

セキュリティの設定なので実施自己責任で。

Windows 7 - Firefox 8.0 - Norton Internet Security(NIS) 2011 の場合

 

(xはバージョン番号)

1. NIS - 設定 - その他の設定 - 製品セキュリティ で「Norton製品の改変対策」を「OFF」にする。

2. C:\ProgramData\Norton\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS_xx.x.x.x\

  内にある次のフォルダリネームする。

  ・coFFPlgn_xxxx_x_x_x → coFFPlgn_xxxx_x_x_xOLD

  ・IPSFFPlgn → IPSFFPlgnOLD

  ※WindowsXPでは C:\Documents and Settings\All Users\Application Data\Norton\{0C55C096-0F1D-4F28-AAA2-85EF591126E7}\NIS_xx.x.x.x\ (未確認)

3. Firefox再起動する。

 

元に戻したい時は、リネームしたフォルダを戻して「Norton製品の改変対策」を「ON」にする。

なお、OS再起動するとフォルダが強制的に作成されるようなので、その都度2.の実施が必要。

 

 

(おまけ)Java Console を削除する方法

C:\Program Files\Mozilla Firefox\extensions\

内にある {CAFEEFAC で始まるフォルダリネーム

2011-07-13

Rubyの実行(.exe)ファイルの作り方の詳細

Rubyではじめるゲームプログラミング

P.340

1/ ・パスに2バイト文字が入らない

   ・パスにスペースの入らない(たとえば、My Documentsなどは、途中にスペースが入っているのでエラーになる。アンダーバー「_」は可。)

    フォルダ(C\Testなど)を作る。 →以下フォルダAとする。

2/ 実行ファイルを作りたいスクリプト(○○.rb)ファイル自体も、2バイト文字、半角でもスペースの入らないファイル名にする。

 →「5-05-04 ride block.rb」といったファイル名は、スペースが入っているのでダメ

3/ フォルダAに、ActiveScriptRubyインストールするとできる「ruby consoleショートカット(everything検索)のショートカットを、そのフォルダコピーする。

4/ フォルダAに、実行ファイルを作りたいスクリプト(○○.rb)を、Imgフォルダ等と共にコピーする。

5/ フォルダAに、fontを、fontsフォルダごとコピーする。

6/ フォルダAに、Ruby/SDLDLLをそのフォルダコピーする。15種類。

 →DLLフォルダを、ではなく、exeファイルの置かれる場所に、DLLファイルそのものを直接並べる。

7/ この時点でスクリプトテスト

フォルダAにコピーしたruby consoleを起動 →コマンドプロンプトの後に、「ruby ○○.rb」とし、スクリプトの起動を確認する。

8/ フォルダAにコピーしたruby consoleを起動 →コマンドプロンプトの後に、「mkexy ○○.rb」とする。

 →ゲームが起動するので、終了させる。

→○○.exy という、レシピファイル作成される。

9/ ○○.exy ファイルを、メモ帳等のテキストエディタで開く

10/ 初期値は「core: cui」となっているのを、「core: gui」に変える。

 →変えなくてもいいが、その場合、実行時にコマンドプロンプト窓が出てきて邪魔になる。

11/ フォルダAにコピーしたruby consoleを起動 →コマンドプロンプトの後に、「exerb ○○.exy」←今作ったファイル とする。

→「○○.exe」という実行ファイルができる。

12/ 「○○.exe」をダブルクリックして実行、起動しなかった場合、2~5のプロセスに、コピーし忘れがある。

13/ 配布物は以下の通り。

・実行ファイル「○○.exe」 →ファイル名は任意に変更可。(もちろん.exe以外の名前)

・fontsフォルダ

・images、soundなどのリソースフォルダ

Ruby/SDLDLL全て。厳密にはoggなどを使用しなければ、それ用のDLL不要

2011-03-16

ドラゴンボールで学ぶオブジェクト指向ツッコミ

http://anond.hatelabo.jp/20110316202255

亀仙流やつ鶴仙流など、世の中にはいくつかの流派があり、それぞれ
カメハメ波やドドン波、舞空術などの技(メソッド)がある。
実際に技を使う場合、技を覚えているZ戦士(インスタンス)が必要。

クラス = 流派

メソッド = 技

インスタンス = Z 戦士

というのはおもしろいと思うし, 例えばゲームを作るなら実際にそういう実装になると思う.

例)セルを作りましょう。
class Cell extends Goku,Veget,Picoro,Tenshinhan,Kuririn{
....
}
cell_inst = new Cell();
cell_inst.shotKienzan(); //Kuririnをextendsしているので気円斬が使えます

しかし, ここではクラス = Z 戦士になってしまっているので, 混乱を招くだろう.

むしろ, 「JavaScript における prototype」 に絞って説明するのはどうだろう.

(ついでに「撃つ」の現在形は shot でなく shoot ですね)

var Goku = function () {};
Goku.prototype.shootKamehameha = function () {
  console.log("波!!!");
};

var goku = new Goku;
goku.shootKamehameha(); // 波!!!

var Gohan = function () {};
Gohan.prototype = new Goku;

var gohan = new Gohan;
gohan.shootKamehameha(); // 波!!!

そしてセルによる吸収は, 動的な継承として考えるのがより自然だろう.

var Goku = function () {};
Goku.prototype.shootKamehameha = function () {
  console.log("波!!!");
};

var Vegeta = function () {};
Vegeta.prototype.shootBigBangAttack = function () {
  console.log("ビッグバンアタック!!!");
};

var Cell = function () {};
// 吸収メソッド
Cell.prototype.absorb = function (target) {
  for (var method in target) {
    this[method] = target[method];
  }
};

var goku   = new Goku;
var vegeta = new Vegeta;

var cell = new Cell;
cell.absorb(goku);   // 悟空を吸収
cell.absorb(vegeta); // ベジータを吸収

cell.shootKamehameha();    // 波!!!
cell.shootBigBangAttack(); // ビッッグバンアタック!!!

そして次にクロージャの使用例として挙げられた次の例.

例)連続エネルギー波
var shotRenzokuEnergy = function( count ){
	var shotEnergy = function(){
		//エネルギー波を放ちます
	};
	for(var i=0;i<count;i++){
		shotEnergy();
	}
};

この実装では, shotRenzokuEnergy を実行するたびに shotEnergy が毎回定義されてしまい, 非効率である.

以下のように書き換えることで, shootEnergy の定義は, shootRenzokuEnergy の定義時の 1 回のみとなる.

var shootRenzokuEnergy = (function () {
  var shootEnergy = function () {
    console.log("エネルギー波!!!");
  };

  return function (count) {
    for (var i = 0; i < count; i++) {
      shootEnergy();
    }
  };
})();

shootRenzokuEnergy(10); // エネルギー波!!! x 10

2011-03-03

ブログの問題を解いてみた

http://okajima.air-nifty.com/b/2011/01/2011-ffac.html

ぷよぷよを解く問題をやってみた

かかった時間はおおよそ1時間

途中でわからないところがあったのでくぐってしまった

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder[] blocks = {
                new StringBuilder("**GYRR"),
                new StringBuilder("RYYGYG"),
                new StringBuilder("GYGYRR"),
                new StringBuilder("RYGYRG"),
                new StringBuilder("YGYRYG"),
                new StringBuilder("GYRYRG"),
                new StringBuilder("YGYRYR"),
                new StringBuilder("YGYRYR"),
                new StringBuilder("YRRGRG"),
                new StringBuilder("RYGYGG"),
                new StringBuilder("GRYGYR"),
                new StringBuilder("GRYGYR"),
                new StringBuilder("GRYGYR")
            };

            bool updated = true;
            while (updated)
            {
            breaked:
                DumpBlock(blocks);
                for (int i = 0; i < blocks.Length; i++)
                {
                    for (int j = 0; j < blocks[i].Length; j++)
                    {
                        char c = blocks[i][j];
                        if (c == '*')
                            continue;
                        updated = false;
                        if (KillBlocks(blocks, i, j))
                        {
                            updated = true;
                            goto breaked;
                        }
                    }
                }
            }
            DumpBlock(blocks);
            Console.Read();
        }
        struct Point
        {
            public int x, y;
            public Point(int x, int y)
            {
                this.x = x;
                this.y = y;
            }
        }
        static bool KillBlocks(StringBuilder[] blocks, int x, int y)
        {
            bool[,] visted = new bool[blocks.Length,blocks[0].Length];

            MarkBlock(visted, blocks, x, y);

            Queue<Point> queque = new Queue<Point>();
            for (int i = x; i < blocks.Length; i++)
                for (int j = y; j < blocks[i].Length; j++)
                    if(visted[i,j] == true)
                        queque.Enqueue(new Point(j,i));

            if (queque.Count < 4)
                return false;

            while (queque.Count > 0)
            {
                Point p = queque.Dequeue();
                RemoveBlock(blocks, p.x, p.y);
            }
            return true;
        }
        static void MarkBlock(bool[,] visted, StringBuilder[] blocks, int x, int y)
        {
            if (x < 0 || y < 0 || x >= blocks.Length || y >= blocks[0].Length || visted[x, y] == true)
                return;
            char c = blocks[x][y];
            visted[x, y] = true;
            if (x + 1 < blocks.Length && blocks[x + 1][y] == c) MarkBlock(visted, blocks, x + 1, y);
            if (y + 1 < blocks[0].Length && blocks[x][y + 1] == c) MarkBlock(visted, blocks, x, y + 1);
            if (x > 0 && blocks[x - 1][y] == c) MarkBlock(visted, blocks, x - 1, y);
            if (y > 0 && blocks[x][y - 1] == c) MarkBlock(visted, blocks, x, y - 1);
        }
        static void DumpBlock(StringBuilder[] blocks)
        {
            foreach (StringBuilder s in blocks)
                Console.WriteLine(s);
            Console.WriteLine();
        }
        static void RemoveBlock(StringBuilder[] blocks,int x,int y)
        {
            int i;
            if (y == 0)
            {
                blocks[y][x] = '*';
                return;
            }
            for (i = y; i > 0; i--)
            {
                blocks[i][x] = blocks[i - 1][x];
            }
            blocks[i][x] = '*';
        }
    }
}

2011-01-11

人材獲得作戦・4 試験問題ほか

http://okajima.air-nifty.com/b/2010/01/post-abc6.html

迷路の最短経路を求める問題が出たので解いてみた

幅優先探索を使えばいいのがわかっていたのですんなりかけたのだが無限ループになる個所があったので動くようになるまで時間がかかった

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace MazeFind
{
    class Point
    {
        public int x;
        public int y;
        public Point before;
        public Point(int x, int y,Point before)
        {
            this.x = x;
            this.y = y;
            this.before = before;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            const char BreakChar = 'B';
            const char GoalChar = 'G';
            const char WallChar = '*';
            const char BeforeChar = '.';

            StringBuilder[] maze = new StringBuilder[]{
                new StringBuilder("**************************"),
                new StringBuilder("*S* *                    *"),
                new StringBuilder("* * *  *  *************  *"),
                new StringBuilder("* *   *    ************  *"),
                new StringBuilder("*    *                   *"),
                new StringBuilder("************** ***********"),
                new StringBuilder("*                        *"),
                new StringBuilder("** ***********************"),
                new StringBuilder("*      *              G  *"),
                new StringBuilder("*  *      *********** *  *"),
                new StringBuilder("*    *        ******* *  *"),
                new StringBuilder("*       *                *"),
                new StringBuilder("**************************"),
            };
            Point start = new Point(1, 1,null);

            //最短経路を探索する
            Queue<Point> queque = new Queue<Point>();
            queque.Enqueue(start);

            while (queque.Count > 0)
            {
                Point now = queque.Dequeue();
                if (maze[now.y][now.x] == BreakChar)
                    Console.WriteLine("break");
                if (maze[now.y][now.x] == WallChar || maze[now.y][now.x] == BeforeChar)
                    continue;
                else if (maze[now.y][now.x] == GoalChar)
                {
                    Point p = now.before;
                    while (p != null)
                    {
                        maze[p.y][p.x] = '@';
                        p = p.before;
                    }
                    break;
                }

                if (maze[now.y - 1][now.x] != '#')
                {
                    queque.Enqueue(new Point(now.x, now.y - 1, now));
                    maze[now.y][now.x] = '.';
                }
                if (maze[now.y][now.x + 1] != '#')
                {
                    queque.Enqueue(new Point(now.x + 1, now.y, now));
                    maze[now.y][now.x] = '.';
                }
                if (maze[now.y + 1][now.x] != '#')
                {
                    queque.Enqueue(new Point(now.x, now.y + 1, now));
                    maze[now.y][now.x] = '.';
                }
                if (maze[now.y][now.x - 1] != '#')
                {
                    queque.Enqueue(new Point(now.x - 1, now.y, now));
                    maze[now.y][now.x] = '.';
                }
            }

            //結果を出力する
            foreach (StringBuilder s in maze)
                Console.WriteLine(s.ToString().Replace(BeforeChar,' '));

            Console.ReadLine();
        }
    }
}
<||
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん