タグ

開発とプログラムに関するiwwのブックマーク (47)

  • ESP32系MCUで無線LAN受信バッファが枯渇するときの調査方法 - Nature Engineering Blog

    ファームウェアエンジニアの井田です。 今回はESP32系MCUで無線LANによる受信ができなくなる問題の原因と調査方法について解説します。 背景 ESP32にてそこそこ頻繁に無線LAN経由の通信を行っているときに、環境によっては急に通信ができなくなる現象が発生しました。 そこで、Wiresharkを用いて通信状況を確認すると、どうもESP32側からの送信パケットは届いているものの、ESP32へのパケットは受信されていないような状況が確認されました。 例えば、ESP32側からDNSのリクエストを投げて、ルーターが返答をしているのにも関わらず、ESP32のログ上は名前解決に失敗した状態になっています。 また、TCPによる通信も何度も再送が発生しており、よくよく見てみると、ESP32側がACKを返さないので、通信相手のサーバが再送してきているという状態でした。 現象より、ESP32の無線LANド

    ESP32系MCUで無線LAN受信バッファが枯渇するときの調査方法 - Nature Engineering Blog
  • 本当にあった怖いプログラム(クソコード事例集) | 株式会社アクシア

    プログラマーはクソコードが大好きです。プログラマー仕事を進める上でクソコードは来全力で回避するべき対象であるにも関わらず、プログラマーはクソコードの話題が大好きです。みんな張り切って自分が経験してきたクソコードの話で盛り上がります。 昨日こんなツイートをしました。 プログラマーとして数年経験していれば誰でもクソコードの1つや2つ見たことあると思いますが、今まで「これはクソ」と思ったコードにはどんなものがありましたか?リプ欄で共有いただければ幸いです。 — 米村歩@日一残業の少ないIT企業社長 (@yonemura2006) April 26, 2018 そうしたら出るわ出るわ。皆さんのクソコード事例集があっという間に集合知として蓄積されていきました。エンジニアであれば誰しもクソコードの話題では盛り上がらざるを得ないわけですが、今回上記のツイートを私はある意図があって投稿しました。 そ

    本当にあった怖いプログラム(クソコード事例集) | 株式会社アクシア
    iww
    iww 2023/06/30
    『「yonemura.sh」という名前で自分用に作ったシェルが他社に買い取られることになってしまい、他の会社のエンジニア20名くらいの前で「よねむらシェルとは・・・」と説明会で大きな声で読み上げ』 かわいい
  • FuelPHP 1.8.2のPHP8系対応版を作成

    FuelPHP、1.9のブランチはありますが、リリースはまだ先のようです。 現在最新の1.8.2はPHP 7.3まで対応なんですよね。 今から新規でFuelPHPをフレームワークに選ぶ人は少ないと思いますが、 ・既存資産がFuelPHPで作成されている ・フレームワークを変更する体力はない ・家のPHP 8対応が待てない という事情があったので、家サイトhttps://fuelphp.com/からダウンロードした1.8.2をベースにPHP 8対応版を作成しました。 https://github.com/symfoware/fuelphp バージョンを1.8.2.1としています。 簡単なプログラムでしか確認していませんが、PHP 8.2でも動作しました。 PHP8で発生する主なエラーと対処方法を残しておきます。 strstrの引数エラー Runtime Deprecated code u

  • Digital Travesia 〜 でじたる とらべしあ 〜

    今般、当Webサイト管理人が2007年に執筆させて頂いたプログラム解析入門書のリメイク(加筆修正版)となる、『デバッガによるx86プログラム解析入門 【x64対応版】』を執筆致しました。発売日は2014年10月22日です(電子書籍版は2018年9月14日)。 この書籍が、情報セキュリティ、プログラミング、ゲーム解析およびリバースエンジニアリングなどでの各種プログラム解析に関して、一人でも多くの方のお役に立てることを切に願います。 この書籍の詳細情報につきましては、下記の専用ページを参照願います。 ・書関連情報ページ ・当サイト推薦図書ページ 今次更新 ◆3月6日更新 汎用プロセスメモリエディタ兼デバッガ『うさみみハリケーン』のバージョン0.41正式版を公開しました。 今次バージョンでは、新しい補助ツールとして、バイナリファイルの解析や編集を行うヘキサエディタ「へきさにゃん」を同梱しました

    iww
    iww 2022/07/12
    うさみみハリケーンの作者さん
  • 元任天堂・岡田 智氏の独立独歩 前編  “技術的に不可能”を覆したゲーム&ウオッチ 「ビデオゲームの語り部たち」:第27部

    元任天堂・岡田 智氏の独立独歩 前編  “技術的に不可能”を覆したゲーム&ウオッチ 「ビデオゲームの語り部たち」:第27部 ライター:大陸新秩序 ライター:黒川文雄 任天堂が世界的なゲーム企業となって久しいが,当然ながら設立当初からそうだったわけではない。さまざまな事業へのチャレンジがあり,成功や失敗,紆余曲折を経て今がある。 昭和40年代,筆者の幼少期の記憶にある任天堂は,たばこ屋のガラスケースに置かれていた花札だった。任天堂の公式サイトにある会社の沿革は,1889年に山内房治郎氏が花札の製造を開始したことから始まっており,花札こそが任天堂の原点と言える。 その花札の延長線上にトランプがある(1902年に製造開始)。当初は紙製だったが,任天堂は耐久性を向上させるために日初のプラスチック製トランプを商品化。さらにディズニー・キャラクターをあしらったり,遊び方を記載した説明書を同梱したりと

    元任天堂・岡田 智氏の独立独歩 前編  “技術的に不可能”を覆したゲーム&ウオッチ 「ビデオゲームの語り部たち」:第27部
    iww
    iww 2022/03/29
    『『これはゲームがメインで,時計の原価は50円くらいしかかかっていない』と主張したら,その50円にだけ課税されるようにしてくれた』 おおらかな時代だな
  • 最新版で学ぶElectron入門 - ウェブ技術でPCアプリを開発しよう - ICS MEDIA

    Electron(エレクトロン)とは、ウェブ技術デスクトップアプリケーションを作成できるテクノロジーです。HTMLCSSJavaScriptを使って開発し、WindowsmacOSの両OSのアプリケーションを1つのコードから作ることができます。近年、注目度が高まっておりマイクロソフトやGitHubなど、有名企業も採用しています。 Electronエレクトロン製のアプリケーションはChromiumクロミウム(Chromeブラウザの元となるもの)とNode.jsノードジェイエスがランタイムとなっています。ウェブコンテンツをそのままアプリケーションとして動かしたり、デスクトップアプリケーションとしてブラウザだけで実現できない機能を組み込めるのが特徴です。 利用用途として、テキストエディターやユーティリティーソフト、デザインツールなどの小規模な使い方から、イントラネット内のクライアントツー

    最新版で学ぶElectron入門 - ウェブ技術でPCアプリを開発しよう - ICS MEDIA
  • 『Skyrim』のキツネはプレイヤーをお宝に導くか。発売直後から囁かれてきた噂の真相を元開発者が明かす - AUTOMATON

    ホーム ニュース 『Skyrim』のキツネはプレイヤーをお宝に導くか。発売直後から囁かれてきた噂の真相を元開発者が明かす オープンワールドRPG『The Elder Scrolls V: Skyrim(以下、Skyrim)』 海外プレイヤーを中心に長年囁かれてきたある噂について、同作元開発者が興味深い事実を明かした。その噂は「キツネを追うと宝や重要な場所に辿り着く」というもの。キツネは宝を追っているのか否か、その答えはゲームの仕組みの内側にあったようだ。 『Skyrim』は根強い人気を誇るロングラン作品だ。最近では『Skyrim』冒頭で発生する「荒ぶる馬車」バグについて語る元開発者Nathan Purkeypile氏のSNS投稿が話題になるなど、いまだ多くのプレイヤーの興味を集めている(関連記事)。こうしたなか、同作ではある噂がまことしやかに囁かれてきた。それは、「野生NPCであるキツネを

    『Skyrim』のキツネはプレイヤーをお宝に導くか。発売直後から囁かれてきた噂の真相を元開発者が明かす - AUTOMATON
  • なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ

    開発室の雑談。営業側のマネージャが言うには 「今のプロジェクトで自動テストの導入を試みている話をしたら、XXXさんのところでも過去にいくつか導入を試みたけどもみんな上手くいかなかったって話になって」 なるほど? まあ確かに自動テストはシステム開発にとって魅惑の技法ではあるものの、では導入がうまくいっているか? というと普及率は低いと言わざるを得ない。私がお手伝いしたプロジェクトでは、元請け側から自動テストをやるお達しが来たわけだが、紆余曲折あって掛け声倒れのような状態になってしまった。 ビジネス書の煽りタイトルのような件だが、古式ゆかしき受注生産の業務システム開発プロジェクトに自動テストを導入しようとして失敗する事例を聞いたので、僕なりに分析して見出した要素を挙げておこうと思う。 V字モデル ソフトウェア開発の手法としてV字モデルというものがある。 オーダーメイドでシステムを作るにあたっ

    なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ
  • 糞コードは直すな。 - Qiita

    とりあえず落ち着け。 みなさん、毎日なにかしらのコードを読み、開発する日々を送っていると思います。そんな中で、 糞コードは死ぬべきである!!絶対に直すべき!! という感情に取りつかれてしまうことがあると思います。自分の技術力に自信のある人ほど、無理やりにでも直そうと試みると思います。それがどんな修羅の道か。そして、糞コード修正がどんな道を歩むのか。この記事では糞コード修正の罠とありがちなストーリーについて書きたいと思います。 ビジネスとしてのプログラムは質的に糞である 例えば、「携帯電話の利用料金」のプログラムがあります。 「携帯電話 透明性高め料金値下げを」という記事もあるように世の中の携帯電話の料金プランはかなり複雑です。例えば、auだと「auでんき」といった電気料金とパックされた電話料金プランがあります。また、「auスマートバリュー」といったプランもあり、家のインターネット回線をa

    糞コードは直すな。 - Qiita
    iww
    iww 2020/08/03
    『あぁ!!このコードむかつく!!これ直しましょう!! は大体死亡フラグ』
  • 1分で実行できる?インストール不要、C言語向けGoogleTestサンプル for Linux - Qiita

    先にタイトルに誇大な表現があることを謝っておきます。。。 http://qiita.com/igayu/items/eaa63d017e0590504999 でC開発者向けのGoogleTestの良いところを述べたつもりですが、じゃあ次は実際に動かしてみようよ、って時の手ごろなサンプルを用意してみました。GoogleTest自体がサンプルコードも提供しているみたいですが、慣れてないとビルド方法とか、英語だから読む気しない、って人もいます。それくらい常識、勉強しなさい、と切り捨てると仕事は回りません。せっかくGoogleTest、便利そうだね、って思ってくれた人にはもう少し背中を押してあげます。 ここで紹介するサンプルは以下の前提で書いています。 ・C言語開発者向けということでC++の文法には極力触れない ・Linux gccベース(私はWindows7にvmwareでCentOS6.7を仮

    1分で実行できる?インストール不要、C言語向けGoogleTestサンプル for Linux - Qiita
  • P++: 静的型付けをめざすPHP

    PHP: pplusplus:faq PHP 8から、PHPは「PHP」と「P++」という2つの言語を提供するようになる。P++はPHPとの下位互換性を削りながら除々にPHPを静的型付け言語にする試みだ。 PHP開発者の中には2つの流派がある。PHPの源流であり現在の形である動的型付け言語としてのPHPを良しとする流派と、PHPをより強い静的型付け言語へと発展させたい流派だ。良い悪いの問題ではない。どちらの流派も正当な理由がある。しかし、ゆるふわな動的型付け言語とガチガチの静的片付け言語は同じ一つの言語として同居できない。 そこで、コードネームP++として、PHPを静的型付け言語に発展させる新しい言語の開発が提案された。P++はforkではなく、PHPと同じコードベースを共有する。PHP 8のバイナリはPHPとP++を同時に実装する。言語の切り替えは何らかの宣言によって指定する。 P++は

    iww
    iww 2019/08/13
    別言語なのか。 use strict; みたいなおまじないで固くなるようにしてくれれば十分なのにな・・・
  • 静的コード解析 - Wikipedia

    静的コード解析 (せいてきコードかいせき、static code analysis) または静的プログラム解析 (static program analysis) とは、コンピュータのソフトウェアの解析手法の一種であり、実行ファイルを実行することなく解析を行うこと。逆にソフトウェアを実行して行う解析を動的プログラム解析と呼ぶ[1]。静的コード解析はソースコードに対して行われることが多いが、少数ながらオブジェクトコードに対して行う場合もある。また、この用語は以下に列挙するツールを使用した解析を意味することが多い。人間が行う作業はインスペクション、コードレビューなどと呼ぶ。日語では静的コード分析とも訳される[2]。 概要[編集] ツールが行う静的コード解析の洗練度は、個々の文や宣言だけを検証するものから、プログラム全体を解析するものまで様々である。解析結果の利用も様々で、Lintのように単に

  • デプロイの度に障害が起きるシステムを安全にした話 - エムスリーテックブログ

    鉄道では個人の注意力だけでなくシステムにより安全を確保している。 写真は「タブレット閉塞式」のタブレットを交換する様子。1つの区間にはタブレットを持った列車しか進入できないため、衝突事故を防ぐことができる。(作者 Spbear [CC BY-SA 3.0 ], ウィキメディア・コモンズより) こんにちは、エムスリーでソフトウェアエンジニアとして働いている小です。 私は基盤開発チームという、エムスリーの複数のサービスにまたがって使われるシステムを開発・運用するチームに所属しています。 基盤開発チームが担当するシステムの1つに、会員向けメルマガの配信システム「メールコンシェルジュ」があります1。 エムスリーはメールコンシェルジュで1日数十万通のメルマガを配信しており、機械学習でメルマガを最適化する施策2などもメールコンシェルジュの存在が前提になっています。 このようにエムスリーにとって重要な

    デプロイの度に障害が起きるシステムを安全にした話 - エムスリーテックブログ
  • C++ と const 参照 - NyaRuRuが地球にいたころ

    数年前,まだ私が C++ゲームを書いていたころ,深すぎる関数のネストは「一旦変数に入れ」て「読みやすくする」というコーディングスタイルにだいたい落ち着いていた.もちろん,「これは一旦別名を付けるだけで,変数に再代入する気はないよ」ということで const も付ける.ただあまり大きなデータのコピーは嫌だよねということで,戻り値が std::string や構造体の関数呼び出しを「一旦変数に入れる」ときは const 参照を好んで使っていた. A(B(C(a), b, D(E(c), d, e))); 「む,なんて読みにくいコード.ばらせよ」 const int target_id = C(a); const MessageBody& message_body = D(E(c), d, e); const Message& msg = B(target_id, b, message_bod

    C++ と const 参照 - NyaRuRuが地球にいたころ
    iww
    iww 2018/06/15
    『const 参照の意味は「この変数を通しては参照先を書き換えませんよ」であって,「この変数の中身は不変ですよ」ではない.』
  • コメントのいらないプログラムの書き方|NZ MoyaSystem

    パラメータを決める 次に関数に渡すパラメータを決めます。 関数の名前で表現されている処理を実現するには、どれだけのパラメータがあればよいか? と考えてみましょう。 今回の例でいえば「お客さんの年齢」と「日付」があれば、すべてのチケット価格が計算できます。 ということで、age と date の2つのパラメータを渡すことにします。 function calculateTicketPrice (age, date) { } パラメータの名前も、なにを表しているかわかるようにしてくださいね。 くれぐれも「hensu」とか適当な名前をつけたり、同じ変数にぜんぜん違う値を繰り返し代入したりすることのないようにしましょう。 テストを書く 次にユニットテストを書きましょう。 テストは常に更新される仕様書です。 業務ロジックをテストに説明させておけば、関数の仕様をコメントにいちいち書く必要などありません。

    コメントのいらないプログラムの書き方|NZ MoyaSystem
    iww
    iww 2018/05/15
    「なにをしてるか」のコメントなら、究極的には不要にできる。 だけど、「なぜしてるか」のコメントはなかなか不要にならないよな。 あと1年後には絶対忘れてるであろう見落としがちなフラグ処理とか
  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

    ざっくり言うと リスト構造のデータに対してランダムアクセスはしちゃだめだぞ。お兄さんとの約束だ! 発端 数年前に他部署の支援で作ったJavaのシステムに、ちょっとデカめのデータを突っ込んだらありえないほど遅いので助けてくれ、と連絡が入った。 まぁクエリとかインデックスをちょっと見れば直るっしょ・・・と鼻をほじりながら支援に向かった。 処理内容 遅い部分の処理は以下のようなものであった。 処理対象のデータをListで受け取る。 それをforループで1件ずつ前処理する。 処理結果をオブジェクトに格納し、ORマッパーでDBにINSERTする。 これだけ? そう、これだけだ。並列処理なんて高級なことはもちろんやってない。 インフラ調査 処理中のサーバのようすを調査する。今回のインフラは典型的な3層3サーバ構成。 WEBサーバはなにもかもが余裕。 APサーバではCPUを1つ使い切っている。 14コア

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
  • 第8章 Linux カーネルデバイスドライバー仕様

    章では、Armadillo-400 シリーズに固有な Linux カーネルのデバイスドライバーの仕様について説明します。 Armadillo-400 シリーズでは、カーネルコンフィギュレーションを変更することにより、標準で有効になっているもの以外の様々な機能を使用することができます。 Armadillo-400で、標準で有効になっていないデバイスドライバーを使用するためには、以下の手順でカーネルコンフィギュレーションをおこなう必要があります。 ボードオプションによりどのピンに機能を割り当てるか選択する。 ボードオプションは、make menuconfig でコンフィギュレーションを行う場合、Linux Kernel Configuration の System Type -> Freescale MXC Implementations -> MX25 Options -> Armadil

  • TM - WebTools

    iww
    iww 2017/11/19
    JavaScriptのコードを1行にして簡単に短くしてくれるツール。圧縮の過程で変数名や関数名が被りまくるので、結構怖い。
  • [速報]Java 9が正式リリース、Javaをモジュール化するProject Jigsawがついに実現。今後のJavaは6カ月ごとタイムベースのアップデートへ

    [速報]Java 9が正式リリース、Javaをモジュール化するProject Jigsawがついに実現。今後のJavaは6カ月ごとタイムベースのアップデートへ 米オラクルは9月21日(日時間9月22日未明)、Javaの最新バージョンとなるJava 9正式版を公開しました。 Java 9 is Out!!!!#JDK9 #Java9 #Javahttps://t.co/VE7BI4KPlK pic.twitter.com/kOdNiLJ1ky — Java (@java) 2017年9月21日 Java 9最大の新機能は「Project Jigsaw」として開発されたJavaのモジュール化機能です。おそらくJavaの開発のなかでももっとも難産なプロジェクトだったといえるでしょう。 難産の末にProject Jigsawがついに実現 Javaをモジュール化して必要な部分だけを使えるようにする

    [速報]Java 9が正式リリース、Javaをモジュール化するProject Jigsawがついに実現。今後のJavaは6カ月ごとタイムベースのアップデートへ
    iww
    iww 2017/09/22
    もうJavaは言語としては使わないからどうでもいいけど Javaメインの人はなんだか大変そうだな。
  • Visual Studio Community 2013のライセンス条項にみる利用可能ユーザについて - 新・日々録 by TRASH BOX@Eel

    id:eel3:20141114:1415964810 の続き。 Microsoft のVisual Studio Community 2013の日語サイトのFAQにも利用可能ユーザに翻訳が載ったのだが: 下に示すものは要約版になります。詳しくは製品に同梱されているライセンス使用許諾契約書および Visual Studio ライセンス ホワイトペーパーをご確認ください。 じゃあ見てみるか。 Visual Studio Community 2013のISOイメージをマウントしたら、直下にlicense.htmが置いてあったので見てみた。 1. INSTALLATION AND USE RIGHTS. a. Individual license. If you are an individual working on your own applications to sell or for

    Visual Studio Community 2013のライセンス条項にみる利用可能ユーザについて - 新・日々録 by TRASH BOX@Eel
    iww
    iww 2016/06/14
    『請負で他人のアプリを開発・テストするのに使ったらNG』