tubone

tubone

Boyaki makes a new world


 Recent posts  6 / 53

SepOctNovDecJanオムロン HV-F312で腰の痛みをなくすGithub Actionを使って、簡単CIを作ってみるChromeDriverがGoogleChrome v76 に対応していないらしい。Googleデータポータルを触ってみるHyper-vにMetasploitableの仮想マシンを立ててみるNightwatch.jsでE2Eテストを回したときにうまく動かないたった一つの理由particles.jsをVue.jsで使ってかっこいいページを作るGitPitchを使ってMarkdownからプレゼンテーションを作ってBadgeをレポジトリに貼るSentryを使ってフロントエンドのエラーを確認するJSON Resume + API With GitHubを使って、さくっと職務経歴書チックなもののAPIなど作ってみるGitHubに30日間草を生やし続けた感想Netlify Formを使って、簡易Contact Formを作ってみる10/1は天下一品の日Ansible + Serverspecを使ってMacの環境構築を自動でする (Ansible編)Ansible + Serverspecを使ってMacの環境構築を自動でする (Serverspec編)今日のラーメン台風の時の我が家のセンサー(netatmo)の値をZabbixで見る究極の謝罪はSlackのスタンプを活用しよう! ~明日から使えるSlackスタンプスニペット集~ハロウィーンはえちえちでチンパンジーなイベントじゃない。GitHubと向き合うイベントだ昔ながらのラーメンたべたい珠玉の一杯。たくさん残業した日はこのラーメンを食べろ!docoptはNimでも使えたのお話GitHubに草を生やし続け90日が経ったので感想を書くGoでAWS Lambdaを動かして、GitHubAPIv4(GraphQL)を叩いてみた感想Hadoopゾウさんについて本気出して考えてみたNuxt.jsでparticles-bg-vueを使うNuxt.jsのmodulesをCompositionAPIで使ってみる(@nuxtjs/toast編)くろおびらーめん with チャーシュー飯Nuxt.jsのmodulesをCompositionAPIで使ってみる(@nuxtjs/toast Global Option編)Nuxt.js + Composition APIでVuexのStateをReactiveに使う方法【初学者】Juliaを使って円周率を求める初めてプログラミングをした時のゴミソース見つけた面倒なことはPythonにやらせよう@GitHub API v4を使ったリリース実績取得Gatsby.jsで作ったブログに読み終わるまで○○分を追加した話Google広告設定でみる属性情報であなたをもっと知ろう!Blog用に新しいLogo作った話今年1年を振り返ってGoのEchoでJaegerを使ってボトルネックを調査するGatsby.jsで作ったBlogの投稿をGitHubの草にして表示させるWeb Developer Roadmap 2020を眺めながら今年の目標(Frontend)をだらだら考えるの会AWS X-RayでLambdaのトレースをしつつ、Datadog APMに連携するElixirでパラレルな負荷試験ツールを作るMonWedFri
Elixirでパラレルな負荷試験ツールを作るAWS X-RayでLambdaのトレースをしつつ、Datadog APMに連携するWeb Developer Roadmap 2020を眺めながら今年の目標(Frontend)をだらだら考えるの会Gatsby.jsで作ったBlogの投稿をGitHubの草にして表示させるGoのEchoでJaegerを使ってボトルネックを調査する今年1年を振り返って


 SearchBox

Search your interesting by Algolia in this blog.


 All 145 Tags

ぼやき 19JavaScript 12GitHub 7Vue.js 6TypeScript 6ラーメン 6デブ活 5Nuxt.js 4React 3Gatsby.js 3Auto Provisioning 3Serverspec 3Mac 3AWS 3自動テスト 3Python 3Ansible 3GitHub Action 2Go 2Lambda 2ChromeDriver 2GraphQL 2Netlify 2toast 2Chainer 2Write Code Every Day 2CompositionAPI 2Nim 1particle.js 1JSON Resume 1GitHub Pages 1Resume 1CV 1GitHubAction 1Sentry 1監視 1 1weed 1CI 1GitPitch 1GitHub Badges 1Azusa Colors 1Travis 1天下一品 1E2E Test 1Netlify Form 1Selenium 1Contact Form 1GoogleChrome 1Gatsby 1Googleデータポータル 1BI 1Azure Devops Build Pipeline 1netatmo 1台風 1IoT 1センシング 1Google Apps Script 1API FLASH 1SlackAPI 1Clasp 1Google Analytics 1Jest 1Unit Test 1Slack 1Stamp 1ハロウィーン 1昆布 1健康 1Headless CMS 1腰痛 1仮想化 1Hyper-v 1docopt 1CLI 1Hadoop 1ゾウ 1metasploitable 1powerShell 1RNN 1LSTM 1Chat BOT 1アイマス 1デレマス 1ひなこのーと 1Deep Learing 1OpenCV 1機械学習 1CNN 1分類学習 1顔認識 1AWS認定ソリューションアーキテクトプロフェッショナル 1資格 1勉強法 1E2Eテスト 1particles-bg-vue 1particle 1Proton 1particles.js 1Nightwatch.js 1test 1チャーシュー飯 1modules 1Composition API 1Vuex 1ストアパターン 1Julia 1円周率 1初心者 1The Gauss–Legendre algorithm 1Leibniz formula for π 1ギター 1DTM 1エフェクター 1ATELIERZ 1Caparison 1VOCALOID 1かわいい 1恐竜時代 1ことり隊 1早稲田 1GitHub API v4 1リリース実績 1Estimated Reading Time 1あと何分 1Logo 1SVG 1Server 1Seti@Home 1Google広告設定 1Google 1属性情報 1Persolal Data 1振り返り 1Echo 1Jaeger 1ボトルネック調査 1React Calendar Heatmap 1Frontend 1Web Developer Roadmap 2020 1Elixir 1Load Test 1X-Ray 1Datadog 1APM 1
この記事は243文字1.2で読めます

初めてプログラミングの授業を受けた後に書いたしょーもないプログラムを振り返ります。

当時の思い出とともに見ていきましょう。

Table of Contents

最近話題になってますね

未経験からのソフトウェアエンジニアになろう系。

まぁ、結論から言えば程度の差こそあれ、誰だってやってけます

こんなしょぼしょぼ人間ができるような仕事です。(できているのかはさておき、お金はいただいているので)そんなもんです。

ただ、実際の就職はバイアスがかかったりしてチャンスに恵まれないことも多々あるかと思います。自分も大学の専攻がまったくコンピューターサイエンスを掠ってもいなかったのでつらいこともありました。

これはそんな私がとりあえず何かプログラミングを初めて、そのポートフォリオを全く活かさないで就活した軌跡が詰まったのが今回ご紹介するプログラムだったりします。

他学部聴講でC演習を受ける

思えばこれが最初です。自分みたいなクソ陰キャが営業職なんてできない、ましてや金融ソルジャーもできないなぁと思い、一発逆転を狙って飛び込んだのがこの世界でした。

Cの先生は優しかったです。コンピューターサイエンスを何一つしらない私にも色々わかりやすく教えてくれました。

その先生が言ったことが私の人生を変えました。

授業にまじめに来てくれててこんなこと言うのも心苦しいんだが今時、**Cなんかできてもねぇ。。隣でやってるRuby演習でも受けなよ~

衝撃でした。

その後、「プログラミング 求人」のキーワードでググったら確かにRubyが出てくるではありませんか。

ただ、悲しいかな。Rubyの授業は別の授業とかぶってたため、諦めました。

代わりに自分でRubyをお勉強しようかと思ったのですが、JavaScriptのほうが手軽でいいよーと理系のお友達に言われたのでJavaScriptをお勉強することに。

権威に弱いのです。

学籍番号に妙に執着する

今考えれば謎なんですが、大学の学籍番号のCD(Check Digit)の法則を知りたくなってた時期がありました。

お友達の代わりに授業に出てあげてた時(代行というあれです。)に、出席カードが配られてそこに学籍番号は覚えていたのですがCDが思い出せず、てきとーに書いた、という苦い記憶がありました。

そんなことしなくていいから

CDという値がエラー検知、エラー訂正に使う値という知識くらいはありましたので、この法則が知りたくなったわけです。

お友達からあらかじめ学籍番号を教えてもらっていたため、バイトの合間、頭で色々考えてとある法則を見つけるにいたりました。

法則

学籍番号はこんな感じです。(当時は)

1A11B002 (架空の番号です)

1Aは学部, 11は入学年度(2011年), Bはわからん, 016は学科の名簿順っぽいです。

まずはA~Fまでの文字を数字に置換します。

文字 置換後数字
A 1
B 2
C 3
D 4
E 5
F 6

まんまですね。

こんな感じになります。

11112002

その次に

最左の1桁、左から3桁目を除いた6桁の各桁に桁数をかけて足しこんでいきます。

(学部の数的に1A~1Fで学部を表現できる&大学に10年以上いないだろうということでCD上不要な桁を取っているわけです。多分。)

つまり最左桁を抜いたので、2桁目から足し算しますが、こちら2桁目として掛け算します。

1×2 + 1×3 + 2×4 + 0×5 + 0×6 + 2×7 = 27

CD値は1桁なので11で割ったあまりを出します。よくやるテクニックですね。

27 ÷ 11 = 2 あまり 5

よっしゃ!5や!と思ったら残念。これの11の補数みたいなものを取ります。

11 - 5 = 6

そうです。 6がCDとなります。

こんなのどうやってわかるんだよーって思うのですが、当然自力で解ききれませんでした。

理系のお友達に手伝ってもらったのをよく覚えてます。

初めてのプログラミングはこれをJavaScriptで書いたよ

ゴミですが、この法則を世に広めたくて当時こんなものを作ってました。21歳!JavaScriptで!👊

今考えたらゴミくそなんですが、未経験で書いたんです!!許してください!!なんでもしますから!!

wasedacdcalc

img

あまりにゴミだったのでコメントで赤ペンしてます。

<html>
<head>
  <meta charset="utf-8" />
  <title>早稲田CD計算機</title>
  <script>
  function calcCd(input_check_digit){
    var input_cd = input_check_digit;
 //キャメルケースとスネークケースが混在。ムカつく
    var split_cd = input_cd.split(""); //桁をsplitで分割したのはよくできました
    var answer;
    answer = 11-(split_cd[1]*2+split_cd[3]*3+split_cd[4]*4+split_cd[5]*5+split_cd[6]*6+split_cd[7]*7)%11
    return answer;
  }
  function replaceSn(inputN){
 //関数名が意味不明(Snってシリアルナンバー?)
    var input_check_digit = inputN
    after_cd = input_check_digit.replace("A","1");
 //頭悪い実装・・。まぁ愚直ですね
    after_cd = after_cd.replace("B","2");
    after_cd = after_cd.replace("C", "3");
    after_cd = after_cd.replace("D", "4");
    after_cd = after_cd.replace("E", "5");
    after_cd = after_cd.replace("F", "6");
    return after_cd;
  }
  function goAnswer(){
    var input_check_digit = document.getElementById("input_check_digit").value;
    var regex = /^[A-Z0-9]{8}$/;
 //未経験にしては優秀。ちゃんとバリデートしている。が、中途半端。
    if(!regex.test(input_check_digit)){
      alert("学籍番号入れてね");
      document.getElementById("input_check_digit").value = "";
    }
    document.getElementById("answer").value = calcCd(replaceSn(input_check_digit));
  }
  </script>
</head>
<body>
  学籍番号を入力してね 例:1A11A001<br>
  <input id="input_check_digit" type="text" />
  <input id="calc_cd" type="button" value="計算!" onClick="goAnswer()"/><br>
  答え<br>
  <input id="answer" type="text" />
</body>
</html>

あまりにもしょぼいのでこの記事を書くにあたってGitHub Pagesにしちゃいました。

結論

結局このプログラミングは何も役に立たなかったのですが、この業界に進もうという覚悟の現れがあふれた瞬間でした。

図書館でMac片手に色々調べながら動くものができた快感を今でも覚えてます。

その後はプログラミングよりはLinuxとかネットワークに興味を持っていくことになるので、就活も全くプログラマー的な感じでは進まなかったです。結局。

今こうして、プログラミングもする仕事をしているのですが、昔書いたソースを見てとりあえず何かを作ることの大切さを改めて思い出しました。

˚