中小企業に勤めるITエンジニアの徒然日記

中小企業に勤めるITエンジニア(三十路女子)が日々のよしなしごとや、IT技術についての記事をつらつらと書いていきます。

破産手続き中だったMt.Goxの資産が負債額を大幅に上回ったため破産ではなく民事再生法を適用しようとする申請があったようです。

私の友人で3年前のMt.GOX(マウントゴックス)事件の被害者になった人がいるので聞いてみたところ

「よくわからん」とのこと。

調べてみたところ、

・負債額は456億円くらい
・資産は20万ビットコインで、現在130万/ビットコインなので2660億

資産の方が負債の5倍以上ある!!!


破産手続をした場合、当時のレートで支払われるため456億円を支払って、残りはマウントゴックス社長の懐に入るらしい。


民事再生法にした場合、会社が復活する?のでビットコインでの支払いも可能らしい。


なるほど。では実際にどうなるのでしょうか。予想してみました。


たとえば10BTC購入していたとして、


当時のレート換算だと50万円。
現在のレート換算では1,300万円。

もちろん残っているビットコインが足りないのでまんま10BTCが返ってくることはないでしょう。

もともとMt.GOXには顧客から預かったビットコインが75万BTC、MTGOXが持っていたビットコインが10万BTCの合計85万BTC。

そのうち、65万BTCが消失し、20万BTCが残ったとのこと。

ということは顧客分の75万BTCの保持割合に応じて20万BTCを配分するのが一番うれしいでしょう。


10BTC持っていたとすると、10×20万÷75万=2.666BTC

2.6666を現在のレートに換算すると、346万!

破産手続されると50万だったのに対し、民事再生法の場合は346万になる可能性がある!!


まぁ消失しなければ1,300万だったので346万というのは微妙なところですが、あれから3年以上ずっと保持し続けているとも限らないので、346万になって返ってきたらかなり嬉しいのではないでしょうか。




日本のシステム開発はご存知の通りゼネコン構造となっていて、

大手SIerがクライアントから一括で受託をしてそれを下請けに流す、
そしてその下請けがさらに下請けに流す、
そしてさらにその下請けが・・・

というような形で、大規模なシステム開発の場合は6次請負、7次請負まであるらしいです。


この構造を打開しようと、中小IT企業が頑張ってもなかなか難しいです。それはおそらく以下の理由があると思います。


クライアントが大手SIerにしか頼みたくない

クライアント担当者やその上司はもし開発プロジェクトが失敗した場合は社内で何らかの責任を取らされるでしょう。
その際、中小IT企業に委託していた場合、格好の攻撃される材料になるのではないかと思います。

「大手SIerに委託しておけばよかったのに、なぜあんな会社を選定したんだ!」と。

そういうリスクを回避するために、なるべく安全な会社を選ぶとなるとやはり大手SIerが選ばれるでしょう。


そもそも提案内容が大手SIerのほうがよいケースが多い

やはり実績があり、優秀な人の数が総じて多い大手SIerからの提案内容はいいです。業務全体を俯瞰してアプリケーション、インフラ、運用までを考えた提案をしてくれます。これが一括受託か、と納得の内容です。お高いけど。

逆に中小企業からの提案はソフトウェアの開発のみでハードウェアは対象外とか、運用は別途とか、限定的な部分だけ提案されることが多いです。自分たちがやったことのある領域しか提案できない、というのは仕方ないことだとは思います。安いんですけどね。でもそれじゃあ選定できないんですよね。


中小企業が受けられない

これは前述の話とかぶりますが、自分たちのやったことがある範囲での提案になるので、サーバー構築ができなかったり、システム運用に対応できなかったりすると受けられないです。やはりクライアントはまとめてお任せできる、というところに大きな価値を感じてくれているので。



結局のところ、中小企業が直接クライアントから仕事をもらうには大手SIerがあまり受けたくない小さな仕事をとるということかなと思います。

しかしながらそうまでして直接クライアントと取引することに意味があるのかは疑問です。

ゼネコン構造に疑問を持つ下請け企業も少なからずいると思いますが、実は大手SIerの下請けで仕事をする、というのは賢い選択なのかもしれません。

会社が欲している人材にもよると思いますが、特にソフトウェアベンダにおいては

「情報処理技術者試験合格に報奨金を出すが、ベンダー資格には報奨金を出さない」

という会社が多いような気がします。


うちの会社も国家試験には報奨金がありますが、ベンダー資格にはありません。
たまたま人事の人と話しをする機会があり、その理由を聞いたところ、概ね以下の3つが理由のようでした。

・ベンダー資格には流行り廃りがある。情報処理技術者試験は国家試験だから流行り廃りがなくて安心
・ベンダー資格はそのベンダーに関わる社員に有利で、関わらない社員から不満があがる
・ベンダー資格にお金を出せない。


ベンダー資格には流行り廃りがある

これは失速し始めた"御三家"のIT資格で掲載されている内容のままでしょう。

これまでオラクル、シスコ、マイクロソフトの資格が重宝されてきたが、いまはAWSを始めとしたクラウドの資格に押されています。


ベンダー資格のベンダーに関わらない社員から不満があがる
これはつまりは「業務でオラクルデータベース使ってます」という人にとってはオラクルデータベースの資格に報奨金が出ると、全く関係ない仕事している人からすると不公平だ」ということです。

気持ちは分からんでもないですが、むしろこういう関係のない人ほど勉強してほしいと思って報奨金を設定していることもあるので、この話は少し的はずれなのかなーと思います。

ベンダー資格にお金を出せない

一番目の理由ともリンクするのですが要はこれが一番ですね。コストパフォーマンスが悪いと会社は思っているということです。

「データベース資格持ってる社員いっぱいいます」や「ITSSレベル4相当の人材います」というような営業をしやすいのです。

「マイクロソフト認定資格持ってる社員がいっぱいいます」
「いや、うちLinuxだし」
というような話になるのを嫌がっているのです。

しかしながらそのベンダーを扱う案件の場合は、情報処理技術者資格よりも有利に働くというメリットもあります。

特に今の時代であればAWS認定資格取得者は引き手数多ではないでしょうか。

まえ要するにベンダー資格に報奨金を設定するメリットもあればデメリットはある、ということです。

つまり資格報奨金にはそういうメリットを潰してでもリスクを背負いたくないという会社の思いが見え隠れします。

会社の姿勢として報奨金の有無を見るのも面白いのではないでしょうか。

こんにちは、つれ子です。


技術とは全く関係ない話ですが、「ちょまど」こと千代田まどかさんをご存知でしょうか。

津田塾大学卒業して、2014年4月から働いてるので現在25歳くらいでしょうか。
(私と10近く違います。)

2016年3月からマイクロソフトに入社してエヴァンジェリストとして活躍されているようです。

実力のほどは知らないのですが、勉強会に参加してはオタサーの姫状態で理系男子をメロメロにしていたようでして、界隈では有名だったようです。

実は私も昔はよく勉強会に参加してはいたのですが、男性率はおそらく今と同じくらいでほとんど男性ばかりという状態ではあったものの、姫扱いをされることはまったくなく、ストイックな勉強会でした。

私も正直、顔面偏差値は55くらいで中の上はあると思っているので、ちょうどいい具合にモテはするのですが、なにぶんそもそも話をするのが得意じゃないし、和気あいあいという感じでもなかったので声をかけづらい雰囲気は出していたとおもいます。

めがねだし。


ちょまどさん、確かにかわいいし、動画を見ると喋り方やしぐさもメチャかわいい。

私もこれだけの容姿と中身だったら今頃エヴァンジェリストだったのかしら。。

(容姿と中身が変わったらそれは別人だな。)


ちょまど=イージーモードのIT界最上級

という式が成り立つ


羨ましい限りです。


Androidの開発言語としてKotlin(「ことりん」と読む)がサポートされることになったらしいです。

恥ずかしながら私はKotlinという言語を知らなかったので、調べてみて分かったことをつらつらと書き連ねていきたいと思います。

ことりん、って何だかかわいい名前ですね。

歴史

・2011年7月20日、ロシアのJetBrainsという会社にて生まれる。名前の由来はバルト海にある「コトリン島」から
・2012年2月14日、オープンソース化(Apache License Version 2.0)

特徴

・Javaよりも簡潔に書けることを目標にしている
・静的型付け言語

Hello World

以下のサイトたちを参考にした
Kotlinにチャレンジしてみる(HelloWorld)
・https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt
[kotlin] ことりん入門 ~HelloWorldからMulti-declarations and Data classesまで


バーチャルホスト(VirtualHost)は複数のドメインを持つHTTPサーバを動作させる方法です。
1つのIPアドレスで動作させる方法を名前ベースのバーチャルホストといい、ドメインごとにIPアドレスを割り当てる方法をIPベースのバーチャルホストといいます。

よく使われる名前ベースのバーチャルホストについて説明します。


まず、IPアドレス1.2.3.4というサーバがあったとします。
http://www.domain1/
http://www.domain2/
という2つのドメインでそれぞれアクセスし、別のコンテンツを表示できるようにします。

DNSにはwww.domain1→1.2.3.4、www.domain2→1.2.3.4が登録されている状態です。


まず、例として、以下のドキュメントルートを2つ用意します。
/var/www/html/domain1/
/var/www/html/domain2/

Apacheの場合の設定

以下を設定ファイル(httpd.conf, apache2.confなど)の先頭に記述します。

Listen 80

NameVirtualHost *:80


DocumentRoot /var/www/html/domain1/
ServerName www.domain1



DocumentRoot /var/www/html/domain2/
ServerName www.domain2
 

設定変更後はApacheの再起動が必要なのでお忘れなく。


IPアドレス(IPv4)は4バイトなので、データベースで保持するときは型を符号なしINT型で持つ場合が多いと思います。

DBから取り出して、ファイルに出力したり画面に表示したりする場合、何らかの方法で数値型から192.168.1.1のようなおなじみのIPアドレスの形式に変換する必要があります。

SELECT 
  CONCAT(
    TRUNCATE(ip_address/16777216,0),
    '.', 
    TRUNCATE(mod(ip_address,16777216)/65536,0),
    '.', 
    TRUNCATE(mod(ip_address,65536)/256,0),
    '.', 
    TRUNCATE(mod(ip_address,256),0) 
  ) ip_addr
FROM ip;

実行結果

MariaDB [test]> SELECT * FROM `ip`;
+------------+
| ip_address |
+------------+
| 1299384753 |
+------------+
1 row in set (0.00 sec)


MariaDB [test]> SELECT
    ->   CONCAT(
    ->     TRUNCATE(ip_address/16777216,0),
    ->     '.',
    ->     TRUNCATE(mod(ip_address,16777216)/65536,0),
    ->     '.',
    ->     TRUNCATE(mod(ip_address,65536)/256,0),
    ->     '.',
    ->     TRUNCATE(mod(ip_address,256),0)
    ->   ) ip_addr
    -> FROM ip;
+--------------+
| ip_addr      |
+--------------+
| 77.115.9.177 |
+--------------+
1 row in set (0.00 sec)


httpsで用意されているAPIにアクセスしてJSON形式の情報を取得するプログラムをPHPで書いたのですが、file_get_contents($url)をすると

PHP Warning: file_get_contents(): SSL: Connection reset by peer

というエラーが出ました。


現象を調査したところ、
・curlで対象のAPIを呼び出すことはできる
・file_get_contents()で呼び出すことができるhttpsサイトと、エラーが出ないhttpsサイトがある
ことがわかりました。


サイトによって違う、ということは証明書関連か?と思い、呼び出せるサイトと呼び出せないサイトを比べて見ました。


・呼び出せるサイト

01

・エラーになるサイト
58


TLSのバージョンが違う、、、
51

犯人はこれか?と思いググるとありました。

PHP 5.6.x における OpenSSL 関連の変更


「Connection reset by peer」というエラーメッセージを見るに、おそらくここがヒットしているのではないでしょうか。」

ストリームラッパーが、SSL/TLS を使っている場合のピア証明書とホスト名の検証にデフォルトで対応

暗号化されたすべてのクライアントストリームで、ピア検証がデフォルトで有効になりました。 デフォルトでは、OpenSSL のデフォルト CA バンドルを使ってピア証明書を検証します。 たいていの場合は、正しい SSL 証明書を持つサーバーと通信するならこれを変更する必要はありません。 OpenSSL が、よく知られた CA バンドルを使うように設定されているからです。

デフォルトの CA バンドルを上書きすることもできます。 openssl.cafile あるいは openssl.capath を設定すればグローバルに変更でき、コンテキストオプション cafile あるいは capath を使えばリクエスト単位で変更できます。

一般的にはおすすめできませんが、 コンテキストオプション verify_peerFALSE にしてリクエストでのピア証明書の検証を無効化することもできます。 また同じく、ピア名の検証も、コンテキストオプション verify_peer_nameFALSE にすれば無効化できます。


上記のとおり、verify_peerを無効にしてればよいのかもしれませんが、以下のようにTLS1.0を使用する旨を設定してやれば正常に取得できるようになりました。
$ctx = stream_context_create([
    'ssl' => [
        'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT,
    ],
]);
$html = file_get_contents('https://example.com/', false, $ctx);


やりたいことは、下図でPCからWEBサーバにリクエストをしたい。

http://192.168.50.10/ではなくhttp://192.168.0.1/でアクセスさせる。

20

Windowsの場合

netshコマンドを使う

コマンドプロンプトを管理者モードで起動する
netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.0.1 connectport=80 connectaddress=192.168.50.10

192.168.0.1:80宛てに来たパケットを192.168.50.10:80に転送します。

Linuxの場合

iptablesコマンドを使う

iptables -t nat -A PREROUTING -d 192.168.0.1/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.10:80
iptables -t nat -A POSTROUTING -d 192.168.50.10/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.50.1

1行目は192.168.0.1:80宛てに来たパケットの送信先を192.168.50.10:80にする。
2行目は192.168.50.10:80宛てのパケットの送信元を192.168.50.1にする。これを入れないとWEBサーバにルーティング(ゲートウェイ)が適切に設定されていないと戻してよいか分からないため。

ちなみにルーティングではなくポートフォワーディングにした理由は、Windowsでのルーティングの設定がわからなかったためです。(Windows Serverの例はいくつかあったけど)

「どの順番で試験を受けるか」「どの試験がより難しいか」という議論はネットだけでなく私の周りでもよく聞かれます。

そもそも各受験者の得意・不得意もありますし、そもそも試験ごとに分野が違うので議論自体意味がない、という話もありますが、「受験者のレベルが高いほど、試験のレベルも高い」という前提で、高度共通である午前1の通過率から、試験のレベルを想像していきます。

2016年秋期試験の高度試験では午前1の結果は以下のようになっています。

試験受験者数通過者数通過率
情報セキュリティスペシャリスト10,2824,75946.3%
ITサービスマネージャ1,55773447.1%
ネットワークスペシャリスト4,6562,55254.8%
システムアーキテクト2,2121,21655.0%
ITストラテジスト1,6781,12767.2%

これを見る限り、ITストラテジストの通過率がダントツです。

つまりITストラテジストを受験する人は他の試験区分よりも高いITスキルを持っている、と言えるのではないでしょうか。

さらにどの試験区分も合格率はあまり変わりません。つまり、午前1の通過率がそのまま試験の難易度を表していると言っても過言ではないでしょう。(もちろん厳密に言えば1〜2%合格率は違うので、午前1通過率が近い場合の順位は誤差の範囲でしょう)

いずれ春期試験も反映し、全ての高度試験の難易度たいと思います。

↑このページのトップヘ