タグ

ブックマーク / qiita.com (705)

  • Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita

    もはやただのアセンブリコードで、コンパイラどころかGo言語の影も形もありません。ここから機能を付け足してGoコンパイラに育て上げました。 興味深いことに、7コミット目あたりですでにコンパイラ全体の骨格ができています。 なんで作ろうと思ったの もともとGoコンパイラを作るなどという発想は1㍉もなかったです。 当時、仕事Goを触る機会はあったものの、週1-2回くらいしか触らないのでなかなか上達しないという焦りを抱えていまいた。 そんなとき Rebuildfm で ruiさんが8ccを作った話を聞いてすごく興味を持ちました。 Rebuild: 153: Connecting The Dots (rui314) さっそく git clone して1コミット目から読んでみたら自分でもやりたくなって、 Go言語に移植してみようと思いました。 1コミット目から順番に、Cで写経してからGoに移植しました

    Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita
    fjwr38
    fjwr38 2019/05/20
    すげー
  • 0.0.0.0にはアクセスしないこと - Qiita

    はじめに この記事は2019年4月時点で調べたものをベースにしています。将来的に変わるかもしれません。 tl;dr 0.0.0.0を宛先に使うのは誤り ただしOSによっては 127.0.0.1 に到達するので支障がなかったりする 想定読者 0.0.0.0と127.0.0.1の違いをすぐに答えられない人が対象です。 ネットワークな人はわかっていることだと思うのでブラウザバックしてもらって構いません。 強い人は間違えているところコメントください。 環境 Ubuntu 16.04を利用します。 $ uname -a Linux parallels-vm 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 簡単な例 Webの文脈ではWebサーバのQu

    0.0.0.0にはアクセスしないこと - Qiita
    fjwr38
    fjwr38 2019/04/05
  • 月数100万アクセスをDB使わず超簡単にさばく - Qiita

    初Qiitaな個人開発者のひさしAppと申します @Hisashi_vc 最近「じぶんコイン」というコイン系SNSサービスを作り、月間100万~数百万アクセスを激安サーバー(1000円ちょい)でさばき中です。 じぶんコイン https://crypto-app.tokyo/qCoin/?m=hisashi_vc おまけになかなかの高負荷で、3ヶ月で数百万回送金したり、10連ガチャ回しまくったり、全ユーザーページにチャットあったり、数百人に一斉メッセージ&送金したり、さらに内部API叩きまくってたりと、かなりのヤバさですが、ブロックチェーンどころかデータベース一切使ってません。 そんなツイートしたら予想よりビックリしてもらえたので、種明かししようと思います。ちなみに私はサーバーサイドエンジニアでも何でもないので、Hellow world覚えて3日目の中学生でもできるくら超簡単ですw この2つ

    月数100万アクセスをDB使わず超簡単にさばく - Qiita
    fjwr38
    fjwr38 2018/12/17
    今後の経過に期待
  • netnsを使ったホスト内ネットワーク構築 - Qiita

    ネットワークエンジニアから「Linux Bridgeがわからん」と言われて説明用に書いたLinuxホスト内部ネットワークの概念説明と作り方です。 実用的なものが必要ならば以下のリンクがわかりやすいかと思います。 http://kurochan-note.hatenablog.jp/entry/2015/10/11/110649 http://ameblo.jp/principia-ca/entry-12103919307.html なお、リソースさえあればコンテナよりもVMで構築したほうが圧倒的に楽です:-) 環境 ・OS CentOS7 ・ルーティングプロトコル OSPF(on quagga) 前提知識 Linux内に以下のものを複数作成することができる ・インターフェース ・ブリッジ ・ルーティングテーブル、プロトコルスタック シナリオ こういうネットワーク作ってと言われました。 実ネ

    netnsを使ったホスト内ネットワーク構築 - Qiita
    fjwr38
    fjwr38 2018/12/17
  • 4年勤めたNTTを退職して1年が経ちました - Qiita

    はじめに こんにちは、ZOZOテクノロジーズでデータエンジニア、MLOpsエンジニアをしている@__isssseyです。 SIerからWEB業界に転職して1年が経ちました。SIer時代は4年間WEBサービスの開発、運用をしていました。その後ZOZOテクノロジーズで1年間、データ分析基盤、機械学習基盤の開発・運用を行なっています。 かの記事を参考にしたタイトルですが、退職したのは研究所ではなくシステム会社です。盛ってすいません。 転職後ちょうど1年経ったので、その中での気づきを共有します。 SIerの良さ 新人教育の充実 私はSIer時代もプログラミングをしていましたし、現職でも必要に応じて一人でシステム開発を行えます。 しかし私は文系学部出身で、学生時代はDVDのダビングが最大のスキルでしたし、コンピューティングなにそれ状態でしたし、アルバイトも長く続かず転々としたり、社会人としての素養も

    4年勤めたNTTを退職して1年が経ちました - Qiita
    fjwr38
    fjwr38 2018/12/12
    こういう転職エントリは良いな
  • Vagrant上のファイルをVScodeで編集 for Mac - Qiita

    VagrantをプライベートネットワークでSSH接続してVSCode上でファイルを編集できるようにします。 Boxは自分で用意しといてください。今回はCentOS7.2で行います。 Vagrantのネットワーク設定 Vagrantfileを編集してIPを指定します。 今回はデフォルトをそのまま使います。

    Vagrant上のファイルをVScodeで編集 for Mac - Qiita
    fjwr38
    fjwr38 2018/11/15
  • Chrome拡張の高速な英語辞書ツールをつくりました(Mouse Dictionary) - Qiita

    経緯 もともとMouseoverDictionaryという素晴らしいFirefox用辞書があったのですが、Quantumの登場とXULの廃止とともに使えなくなってしまったため、自分用にChrome拡張をつくった次第です。 ソースコード 実装に関わる技術寄りの用語: React, esbuild, chrome.storage.local, chrome.storage.sync, Cross-extension messaging, Hogan, debounce, resizable/draggable, intl.v8BreakIterator, deinja, クロスブラウザ, など。 ※詳細は「Mouse Dictionaryの技術的な話」をご参照ください https://qiita.com/wtetsu/items/2a5568cb0b5a38c003fb 使い方 インストール

    Chrome拡張の高速な英語辞書ツールをつくりました(Mouse Dictionary) - Qiita
    fjwr38
    fjwr38 2018/11/12
  • MQTT のQoSについて検証(MQTTv3.1)d - Qiita

    1. MQTTのQoS MQTTのQoSは3つのレベルが存在します。それぞれ「QoS 0(At most once)」、「QoS 1(At least once)」、「QoS 2(Exactly once」です。これらはクライアントとサーバ間での到達保証をするQoS設定です。このクライアントとサーバ間の到達保証とは「パブリッシャー」と「サブスクライバー」間での到達保証ではありません。クライアントとサーバは「パブリッシャーとブローカー」または「ブローカーとサブスクライバー」に対応しています。 QoSは「パブリッシャー」がパブリッシュするメッセージ毎に設定を行います。またサブスクライバーがサブスクライブする際に、トピック毎に設定することが可能です。「パブリッシャー」または「サブスクライバー」で指定されたQoSはそれぞれブローカーとの間で非同期に機能します。また、パブリッシャーで「QoS2」が指

    MQTT のQoSについて検証(MQTTv3.1)d - Qiita
    fjwr38
    fjwr38 2018/10/12
  • スピード感重視なのでテストは書かない。テストはなぜ開発を遅くするか - Qiita

    あまりにバズってしまったので、前書きを追加 ここまでバズってしまって正直すまんかった。 この記事はもともと愚痴記事をマイルドにして投稿しただけなので「テストを勧める」とか「テストを信奉する」とかそこまで強い意図は特にありません。(私がテスト好きなのは否定しません) 「テスト書こう」に対して「そんなコストはない」と言いながら、いろいろ問題が生じる現状を愚痴りたかっただけです。愚痴るだけだと生産性がないから、なんでこんなに認識が違うんだろうと原因を考えた結果、テストを書くことに対する技術で実際にコストが大きく異なるなと気づいて書いた次第です。 この記事の対象は「テストを書く技術がなく、テストを書く気がない」組織に所属する人です。 アジャイル開発において「テストコードは当然」なのか?という記事で(私の記事をきっかけとして)テストコードの「徹底」とか「カバレッジ100%」とかを批判し、トレードオフ

    スピード感重視なのでテストは書かない。テストはなぜ開発を遅くするか - Qiita
    fjwr38
    fjwr38 2018/07/31
  • Goroutineハンターが過労死する前に - Qiita

    Goroutineハンター、それは逃げ出したgoroutine達を捕まえるため、日夜戦い続けるエンジニア達のことである。Goroutineハンターは番環境でOOM Killerが発動するたびに呼び出され、逃げ出したすべてのgoroutineを捕まえるまで家にかえることが出来ない。しかし、あなたが書いた何気ないコードによって、今日もまた新しいgorutine達が野に放たれるのであった。 Goroutineリークとの戦い Goを使用してある程度規模のプログラムを書くと、必ず問題になるのがgoroutineのリークである。goで生まれたgoroutineが、何らかの理由で正常に終了しない場合、それは「リーク」していると見なされる。リークしたgoroutineはプロセスが続く限り永遠にリソースを手放さないため、リークしたgoroutineが蓄積するに従って、プログラムのパフォーマンスは低下してい

    Goroutineハンターが過労死する前に - Qiita
    fjwr38
    fjwr38 2018/07/04
  • 意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita

    追記 その後GoConfernce2017で発表させていただき、その内容をまとめた記事を書いたので参考になれば幸いです。 GoConで発表してきたのでついでにruntime以下の知識をまとめていく #golang はじめに goroutineはGo言語の大きな特徴である並行処理を支える重要な機能です。 しかし、goroutineの仕組みについてしっかり理解しないままコードを書いてしまうと思わぬ挙動をしてしまうことがあるので注意が必要です。 今回はそんなgoroutineのスケジューリングの挙動についてまとめてみました。 僕自身がgoの書き始めの頃に引っかかった部分なので、初心者のgoroutineへの理解の助けになれば幸いです。 goroutineの特徴 goroutineは最小で2048byteなので、 Windows だと 1 MB、Linux だと 2 MB であるスレッドのデフォル

    意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita
    fjwr38
    fjwr38 2018/07/03
  • Goでスレッド(goroutine)セーフなプログラムを書くために必ず注意しなければいけない点 - Qiita

    Goは言語機能として並列実行をサポートしているけど、Goで書いたからといって自動的にデータ構造がスレッドセーフになるわけではないので、スレッド安全性を気にしなければならないはこれまでの言語と変わらない。どういうケースが良くてどういうケースがダメなのかを理解していないと安全なプログラムは書けない。それについて説明をしよう。 まず第一にEffective Goのこの一文は覚えておこう。 Do not communicate by sharing memory; instead, share memory by communicating. メモリを共有することで通信しようとしないこと。代わりに通信することでメモリを共有すること。 変数の値を変更したあとにチャネルなどを使わずに、おもむろに別のgoroutineからその変数の値を読み書きしてはいけない。そういうやり方だと読み書き操作の前後関係がき

    Goでスレッド(goroutine)セーフなプログラムを書くために必ず注意しなければいけない点 - Qiita
    fjwr38
    fjwr38 2018/05/11
  •  PostgreSQL開発の基本動作まとめ - Qiita

    インドからの投稿です。 PostgreSQL開発や、PostgreSQLコミュニティに入るために有用な情報が書いてあるスライドが幾つかありますが、記事としてはあまりないように思ったので、PostgreSQLコミュニティに参画し開発、レビューする上での必要な様々な基動作をまとめます。 2015/11のPostgreSQL勉強会でもPostgreSQLコミュニティ開発について話したので、そのときの資料もあわせてご参照ください。 必要なもの PC(Windows, Linux, Mac) Mac上に仮想マシン立てたLinuxで開発したい場合、「VirtualBox + SSHで接続」で十分だと思います。 PostgreSQLをコンパイル、実行できる環境を用意します。 デバッガ(gdbなど)が入ってるとbetter。 PostgreSQLのソースコード 後述するgitからHEADを取得する方法で

     PostgreSQL開発の基本動作まとめ - Qiita
    fjwr38
    fjwr38 2018/04/19
  • システムで「性別」の情報を扱う前に知っておくべきこと - Qiita

    0は性別に関する情報が得られない場合に使います。性別に関する情報はあるのだけど1とも2とも言えない場合は9を使います。要は「0でもなくて1でも2でもなければ9」です。 これを知っていればMだとかFだとかを議論をせずに済みますね。 国際規格に従うべき理由 国際規格に従うことは色々と利点があります。まず、どうしてそういうコード体系にしたのかを説明しやすいです。また多言語対応する際も規格通りに書けば伝わるはずなので迷わずに済みます。別システムへのデータの移行や、異なるシステム間でのデータの統合もコード体系が同じならラクラクです。もしかしたら別のプロジェクトで書いたコードをそのまま使いまわせるかもしれません。技術者に対するトレーニングも不要です。 対して、わざわざ国際規格に反する実装をする場合は上記のメリットがそのままひっくり返ってデメリットになりはしますが、もちろん、それなりの理由があれば規格と

    システムで「性別」の情報を扱う前に知っておくべきこと - Qiita
    fjwr38
    fjwr38 2018/04/13
  • Impostor Syndrome(詐欺師症候群)とQiitaについて - Qiita

    dev.to を見ていたら、 #impostorsyndrome というタグがあり、 #shecoded でもけっこうみんな Impostor Syndrome に苦しんでいたという記述がありました。 調べてみたら、 Impostor Syndrome (詐欺師症候群) に陥っている方は多いんじゃないかと思い、というか自分がまさに当てはまった気がしたので、エンジニアの視点でまとめてみます。 Impostor Syndrome とは wikipedia によると インポスター症候群またはインポスター・シンドローム(英: Impostor syndrome) は、自分の達成を内面的に肯定できず、自分は詐欺師であると感じる傾向であり、一般的には、社会的に成功した人たちの中に多く見られる。 能力の高い人々は、自分が偽物であると人から思われたくないがために、熱心に働く傾向がある。その勤勉さの結果、人

    Impostor Syndrome(詐欺師症候群)とQiitaについて - Qiita
    fjwr38
    fjwr38 2018/03/12
    一般的には、社会的に成功した人たちの中に多く見られる。/ 一般的には、社会的に成功した人たちの中に多く見られる。 / 一般的には、社会的に成功した人たちの中に多く見られる。 / 一般的には、社会的に成功
  • コンテナ・デザイン・パターンの論文要約  - Qiita

    Brendan Burns, David Oppenheimerらの論文「Design patterns for container-based distributed systems」を読んで、コンテナを活用したシステム設計や開発に、とても有用と感じたので、図を中心にした要約にしてみた。 要約内容に誤りや理解不足な部分もあると思うので、原文も参照していただきたい。また、自身の理解のために、論文中に無い図を加えた点、独自の注釈も加えている。 背景 コンテナ化されたソフトウェアコンポーネントから構築されたマイクロサービスアーキテクチャの人気が高まり、分散システム開発においても同様の革命が起っている。 コンテナの境界の壁は、分散システムの基的なオブジェクトの境界に適している。そこで、コンテナを活用して、コードの低レベルの詳細を抽象化し、アプリケーションやアルゴリズムに共通する高レベルのパター

    コンテナ・デザイン・パターンの論文要約  - Qiita
    fjwr38
    fjwr38 2018/03/08
  • タイムゾーン呪いの書 - Qiita

    コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日に住んで日仕事をしていると国内時差もなく1 夏時間もない2 日標準時 (Japa

    タイムゾーン呪いの書 - Qiita
    fjwr38
    fjwr38 2018/02/06
  • VSCode+gdb+OpenOCDでARMの開発をやる - Qiita

    はじめに もうEclipseベースのわけわからんIDEで組み込みC書きたくない人向けです できること VSCodeでそこそこ快適にCを書いてビルド VSCode上でブレークポイント仕掛けたりして良い感じにOpenOCDとgdbを使ったデバッグ できないこと Makefile生成 (仕方ないのでここだけNetBeans使ってやります) Windows 10 VSCode 1.10.2 gcc version 5.3.1 20160307 OpenOCD 0.10.0+dev-g9656532-dirty (自前ビルドの執筆時点でだいぶ新しいやつ) 下準備 必須アイテム Visual Studio Code GNU ARM Embedded Toolchain Cygwinかなんか (makeとbashにパス通ってる良い感じの環境) OpenOCD Windows向けバイナリとかはこの辺とかか

    VSCode+gdb+OpenOCDでARMの開発をやる - Qiita
    fjwr38
    fjwr38 2018/01/26
  • Emacs で時の流れを感じる - Qiita

    なにをやったの ふらっと外に出てみたらちょうど空が夕焼けていて「ずいぶん日が短くなってきたなあ」とか、あるいは夜、なんとなく空を見上げてみたら綺麗な満月で「もうひと月たったか」とか、そんな、ふと時の流れを感じる瞬間が僕は好きです。 が、社会人になってから、退社したら外はもう夜、という日がほとんどになって、そんな瞬間を感じることが減ってしまったなあとふと思いました。 そんなわけで、その時刻の空の色(イメージ)、月齢、天気を反映した時計ウィジェットを作ってみました。モードラインなどに置いておくと、ふと目をやったときに、ちょっとほっこりできるかもしれません。 スクリーンショット モードラインに設置 色のサンプル インストール GitHub: https://github.com/zk-phi/sky-color-clock load-path の通ったディレクトリにダウンロード (clone)、

    Emacs で時の流れを感じる - Qiita
    fjwr38
    fjwr38 2018/01/18
    風情がある
  • ブロックチェーンを作ることで学ぶ 〜ブロックチェーンがどのように動いているのか学ぶ最速の方法は作ってみることだ〜 - Qiita

    この記事について この記事はDaniel van FlymenさんのLearn Blockchains by Building One - The fastest way to learn how Blockchains work is to build oneを人の許可を得て翻訳したものです。 このブロックチェーンのリポジトリではPython以外での言語の実装者の募集も行われているので、興味がある方は是非どうぞ! また、この翻訳で出てくる日語版のリポジトリはこちらにあるので是非参考にしてみてください。 はじめに あなたがここにいるのは、私と同じように、暗号通貨の盛り上がりに対して心構えが出来ているからだ。そしてあなたはブロックチェーンがどのように動いているのか -その裏にある基的なテクノロジー- を理解したいと思っている。 しかしブロックチェーンを理解するのは簡単ではない、少なくと

    ブロックチェーンを作ることで学ぶ 〜ブロックチェーンがどのように動いているのか学ぶ最速の方法は作ってみることだ〜 - Qiita
    fjwr38
    fjwr38 2018/01/18