タグ

ブックマーク / qiita.com (1,430)

  • HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita

    はじめに ここ1年ぐらいかけて、Fixという名前のプログラミング言語を作っています。 コアとなる機能の実装がある程度落ち着き、実際にFixを使ってプログラムを書けるようになってきたので、そろそろ言語の紹介をしてみようと思います。 記事はFixのチュートリアルではなく、どういう思想で設計されていて、どういう特徴を持つ言語なのか、という点を紹介するものです。 意見・提案・助言などをいただけるとうれしいです。 リポジトリはこちらです。 ※ コメントやコミットメッセージは一応拙い英語で書いていますが、日語でissueを立てたりdiscordで意見・質問してもらっても大丈夫です。 ※ 急いで作った部分もあるため、コンパイラのコードは結構汚いです。ご容赦ください。 現状、Fixをローカルで実行するためにはLLVMのインストールが必要で時間がかかりますが、Fix playgroundを使えばブラウザ

    HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita
    mizchi
    mizchi 2023/08/06
  • jQueryへの別れ:現代的な開発のための必須JavaScriptメソッド - Qiita

    はじめに 私は長い間レガシーコードと共に仕事をしてきましたが、jQueryの重要性は依然として頻繁に話題に上がるトピックの一つです。ライブラリ自体は便利なままですが、それは別の時代のニーズを完璧に満たしていました。 現在、私たちは既にES2023について話していますが、過去にjQueryがカバーしていたほとんどの機能は、すでに2015年にリリースされたES6に取り込まれています。 ES6の標準は既に広範にサポートされており、96%のレベルに達しています(出典:caniuse.com)。そのため、特に要素の選択、スタイリング、アニメーション、データの取得などの基的なタスクについては、ライブラリの使用を見直す良いタイミングかもしれません。 以下のトピックは、いくつかの標準的なjQueryのパターンと、それに相当するバニラJavaScriptでの手法を示す参考資料として役立つと思います。 要素

    jQueryへの別れ:現代的な開発のための必須JavaScriptメソッド - Qiita
    mizchi
    mizchi 2023/06/23
    IDEが発達した今、ショートハンドはほとんど意味ないよ
  • ChatGPTとLangChainで恋愛シミュレーションゲーム用AIを実装してみた - Qiita

    株式会社バンダイナムコ研究所のLaiです。LangChainで実装した恋愛シミュレーションゲームAIエージェントについて解説したいと思います。 TL;DR スタンフォード大学の「Generative Agent」論文のコンセプトを基に実装 恋愛シミュレーションゲームのテーマに合わせて一部の設定を調整 LangchainのGenerativeAgentクラスを中心とした実装 コンセプト 今月、スタンフォード大学とGoogleが「Generative Agents: Interactive Simulacra of Human Behavior」という論文を発表しました。この論文では、LLM (ChatGPT)をベースにした生成エージェントの構造が提案されました。これらのエージェントは、社会に関する様々な推論を行い、自身の特性や経験を反映した日々の計画を立て、その計画を実行し、反応し、適切な

    ChatGPTとLangChainで恋愛シミュレーションゲーム用AIを実装してみた - Qiita
    mizchi
    mizchi 2023/05/02
  • Deno KV ベータ版発表!cloudflare KVとcloudflare D1のいいとこ取り? - Qiita

    2023年4月29日、Deno KVのベータ版が発表されました! 現在はベータ期間中のため、deno deployからKVを使用するにはwaitlistから登録する必要があります。 後述しますが、ローカルで試す場合はコマンドラインフラグに--unstableを付けることで実行できます。 この記事では、競合製品であるcloudflare workers KVとの比較を行いつつDeno KVの特徴を挙げていきたいと思います。 特徴1:ローカルとdeno deployの両方で動作 Deno KVはdeno deployから使用することができる分散データベースです。deno deploy自体が世界各地の「エッジ」でサーバーを実行するサービスなのですが、Deno KVのデータベースも分散配置されているため、最寄りのデータベースに高速にアクセスすることができます。内部実装ではFoundation DB

    Deno KV ベータ版発表!cloudflare KVとcloudflare D1のいいとこ取り? - Qiita
    mizchi
    mizchi 2023/04/29
    transaction 付きの KV で面白いんだけど、さすがに d1 のいいとこ取りは言い過ぎ
  • V8の奥に潜むプログラミング言語 Torqueを触ってみた - Qiita

    はじめに 「JavaScriptのMath.Powはなぜ速いのか」という質問を読んでいたら、V8の組み込み関数に「Torque」という言語が使われているという記述を見つけました。 高速化のために、プログラミング言語処理系の中だけで使われるプログラミング言語...ロマンを感じずにはいられません。実際にTorqueを動かしてみましょう。 バージョン V8: 記事執筆時点(2022/9/18)のmainブランチ 言語の概要 TorqueはV8組み込み関数の最適化処理を記述するために使われています。C++ではなくあえて別言語を使うのは、ロジックの可読性を上げるためだそうです。 プログラミング言語 V8 Torqueによって、V8プロジェクトに貢献する開発者は無関係な詳細実装に煩わされることなく、VMへの変更の意図に専念し変更を表現することができるようになります。この言語はECMAScriptの仕様

    V8の奥に潜むプログラミング言語 Torqueを触ってみた - Qiita
    mizchi
    mizchi 2023/03/27
  • JavaScriptにセミコロンは入れるのか?入れないのか? - Qiita

    結論 どちらでもいい セミコロン付けても付けなくても落とし穴はある ESLintを利用することで落とし穴を検知できる 私はセミコロンつけない派 自動セミコロン挿入とは 自動セミコロン挿入(automatic semicolon insertion) この仕組みのおかげでセミコロンを使わなくてもコードを書くことができ、コンパイラが行末を察してセミコロンを挿入してくれる 自動セミコロン挿入のしくみはECMAScriptで規定されており、自動セミコロン挿入はJavaScriptエンジン間で可搬性がある 自動セミコロン挿入には落とし穴があり、ルールを理解しておく必要がある 第1のルール:セミコロンが挿入されるのは、"}"トークンの前か、改行の後か、プログラムの末尾だけ

    JavaScriptにセミコロンは入れるのか?入れないのか? - Qiita
    mizchi
    mizchi 2022/08/14
    各種JSパーサのセミコロン周りの苦慮を見てると、ASIの仕様を廃してセミコロン必須にしたほうがエコシステム側の進化は間違いなく進むはず。どうせ利用側もformatterで自動挿入するだけ
  • 2022年Reactを使ってる人には必ず知っていてほしい最強のdata fetchingライブラリであるRTK Queryの優位性とメンテナンスの際に役立つTips - Qiita

    import type { ConfigFile } from "@rtk-query/codegen-openapi"; // https://redux-toolkit.js.org/rtk-query/usage/code-generation#simple-usage const config: ConfigFile = { schemaFile: "https://petstore3.swagger.io/api/v3/openapi.json", apiFile: "./store/emptyApi.ts", apiImport: "emptySplitApi", outputFile: "./store/petApi.ts", exportName: "petApi", hooks: true, }; export default config; import { empty

    2022年Reactを使ってる人には必ず知っていてほしい最強のdata fetchingライブラリであるRTK Queryの優位性とメンテナンスの際に役立つTips - Qiita
    mizchi
    mizchi 2022/07/02
  • IEが終了したので、webpackやbabelは不要? - Qiita

    IE終了により、webpackやbabelを使う必要がなくなるのか、フロントエンドからビルドステップを完全に消し去ることはできるのか。 そもそもなぜフロントエンドを「ビルド」していたのか そもそもなぜwebpackやbabelを使ってJavaScriptをバンドル(1ファイルにまとめる)していたのか 1. HTTP/1.1とモジュールシステムの相性の悪さ ブラウザにはES Moduleというモジュールシステムが導入されています。これはimport文で他のファイルを読み込むことができるシステムです。 HTTP/1.1については、ブラウザ側で同時接続数制限があります。これは、ファイルを多数読み込む必要があるES Modulesには不向きでした。 2. ブラウザのES Module対応率の低さ ES ModulesはIE非対応です。開発するWebサイトがIEをターゲットにしたい場合、ES Mod

    IEが終了したので、webpackやbabelは不要? - Qiita
    mizchi
    mizchi 2022/06/19
    たぶん<link rel="modulepreload"> のことだと思うんだけど、先読みしようが n>3 なRTTには勝てずパフォーマンス問題は依然としてあります。正しく先読みを構築しようとしたら結局バンドラと同等の解析が必要です
  • 月数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
    mizchi
    mizchi 2022/05/12
    迫力ある
  • Braveはフォントを取得できないようにした。いっぽうChromeはフォントを根刮ぎ取得しようとしている。 - Qiita

    Braveフォントを取得できないようにした。いっぽうChromeフォントを根刮ぎ取得しようとしている。ChromeGoogleSecuritybraveブラウザフィンガープリント JavaScriptから、現在表示されているフォントを取得することが可能です。 仕組みを簡単に説明すると、フォントによって文字の横幅は異なるので、font-familyを変えてみてwidthが変わったらそのフォントがインストールされている、みたいな識別方法です。 つまり、フォントを表示させて、そのフォントが入っているかどうかをチェックすることで、ブラウザフィンガープリントになります。 Braveフォントを取得できないようにした How Brave defends against font fingerprintingの記事において、Braveフォントによるフィンガープリント防止について解説しています。 H

    Braveはフォントを取得できないようにした。いっぽうChromeはフォントを根刮ぎ取得しようとしている。 - Qiita
    mizchi
    mizchi 2022/04/14
    ローカルフォントがフィンガープリントに使えるのは問題なんだけど、パーミッションの要求は十分現実的な対策になってる。というか「ユーザーの同意に頼るのは安全策ではない」と主張してるのこの人以外みない
  • 遅いDocker for macを「Mutagen compose」で爆速にする(M1対応) - Qiita

    Mutagen compose Mutagen composeは、Mutagenというローカル環境とリモート環境のディレクトリを高速に同期させることができるオープンソースの開発ツールをDocker composeと統合させたツール。 つまり、Docker環境でホスト側とコンテナー側のファイル同期を高速で行うのに特化したサードパーティーのツール。 事前準備 mutagen-composeのインストール

    遅いDocker for macを「Mutagen compose」で爆速にする(M1対応) - Qiita
    mizchi
    mizchi 2022/04/03
  • 「SwiftUIでMVVMを採用するのは止めよう」と思い至った理由 - Qiita

    2022/04/23 追記 記事の続編として、以下の記事を書きましたので、合わせて御覧ください。 仕事SwiftUIでTCAを使ってみて、かなり知見がたまったので、その解説です。 MVVMからTCAへの移行を考えているのであれば、参考になると思います。 宣言的UIに、MVVMって不要なのでは? iOS開発の現場で、宣言的UIが当たり前に使われるような時代になりました。 SwiftUIの開発体験、素晴らしい です。最高です。 しかし最近、SwiftUIで当たり前のように 「MVVMで開発しよう」 となったときに、 「ほんとにそれでいいんだっけ?」 と疑問に思いました。 自分の考えを深掘ってみると 問い: iOS開発で、宣言的UIにMVVMを採用することは当にいいんでしたっけ? 結論: 「SwiftUIを使うのであれば、MVVMを採用するのは止めよう」 理由: ViewModelの存在

    「SwiftUIでMVVMを採用するのは止めよう」と思い至った理由 - Qiita
    mizchi
    mizchi 2022/03/14
    react もすぐに flux の提案が出たので自然な流れ
  • WebAssembly: data セクションの最適化 - Qiita

    概要 WebAssembly 逆アセンブル1 と Rust 製の WebAssembly オプティマイザの twiggy を駆使して、WebAssembly ファイル中の data セクションのサイズ削減を図る 対象読者 WebAssembly を極限まで小さくするための、いかなる苦労を厭わない人 この記事中に、ツールを使えば簡単に WebAssembly を極限まで小さくできる、魔法のような方法が紹介されていると期待していた人はブラウザバック推奨 WebAssembly Text Format にアレルギーのない人 使用ツール WebAssembly for VSCode Visual Studio Code 上で、次の機能を提供する拡張機能 WebAssemblyWebAssembly Text Format に変換する WebAssembly Text Format の色付け

    WebAssembly: data セクションの最適化 - Qiita
    mizchi
    mizchi 2022/02/05
  • プログラミングスクールの講師を2年間続けて限界が来て辞めた話 - Qiita

    はじめに 某プログラミングスクールで二年間講師をしてました。 受講生の方からの評価点は平均より高く、最終的には全インストラクターの中から代表に選ばれる立場にまでなりました。 始めた経緯 もともと、プログラミングスクールをいつか開きたいと思っていたこともあり、業務委託契約で経験が積めそうなところに応募。 即採用していただき、正社員で働く傍、副業としてプログラミング講師に。 エンジニア歴は当時は5年 得意な言語はPHPのみでした。 コロナ禍で全てが変わった 特定を避ける為に細かな時期は記述しませんが、この復業を始めてから今も尚世界を苦しめているウイルスの流行で事が大きく変貌していきました。 というのも、私が請け負っていたプログラミングスクールでは生徒様が作成したいと言う物をベースにプログラミングを教えるスクールでした。 その中で、コロナ禍前までの生徒様達は明確に、 「ECサイトが作りたい」 「

    プログラミングスクールの講師を2年間続けて限界が来て辞めた話 - Qiita
    mizchi
    mizchi 2021/10/16
  • 妄想的DHH理解 - Qiita

    Caution この記事はDHHファンの妄想によるシナリオが多分に含まれます。 というかほとんどです。 成り立ちが間違ってることも当然あるように思うので話半分で読んでください。 これは一体 最近のRailsフロントエンドやDHHの活動には一連の流れがあるわけですが、一部トレンドに沿ってない部分がある故にそれが汲めないというところがあるのではと思います。 それらの流れを記憶が定かなうちにつないで記録しておこうという記事です。 前提知識 Railsの生みの親、Rubyist Basecamp(社) DHHがCTOやってる会社 Basecamp(サービス) Basecamp(社)が開発してるプロジェクト管理ツール Trixを開発してたある日 Basecamp(サービス)に組み込まれてるリッチテキストエディタのtrixをcustomElements使って開発してたある日、DHHはあることに気づく。

    妄想的DHH理解 - Qiita
    mizchi
    mizchi 2021/09/21
  • なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか - Qiita

    この記事は個人ブログのうち技術に関する箇所のみを抜粋した転載です。 なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか -Junks, GC cannot sweep- またブログには書いたのですが、諸事情により先に英語版が存在します。 こちらも書いたのは僕なので、剽窃などではないことはご了承ください。 [元記事]: Why we replaced Java with Typescript for Serverless in dev.to はじめに サーバレス(serverless)は昨今もっとも注目を集める設計手法の一つで、おそらく多くの開発者が大なり小なり自分のプロダクトに応用し始めているのではないでしょうか? 僕自身、完全にサーバレスに魅せられてしまい、昔ながらの自分でサーバやミドルウェアを管理しながら運用するみたいな世界には戻れる気がしません。 そもそもスケーリ

    なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか - Qiita
    mizchi
    mizchi 2021/04/13
  • chmod -R 777 /usr を実行したCentOS7で、一般ユーザがroot権限を得られることを確認する - Qiita

    chmod -R 777 /usr を実行したCentOS7で、一般ユーザがroot権限を得られることを確認するLinuxSecurityrootpermission Teratailで、suコマンドでrootログインできないという質問があり、てっきり/etc/pam.d/suまわりの設定かと思いきや、そうではなく、自己解決で説明された原因に一同驚愕ということがありました。 /usr/share/nginx/html に権限を追加したくて、横着して chmod 777 -R /usr とコマンド実行した記憶があります。 CentOS7、suコマンドでrootにログインできない、パスワードは絶対あっているのになぜ? /usr 以下のパーミッションをすべて777に設定したら、逆に動くべきものが動かなくなる例なのですが、これをやるとセキュリティ上問題であることは言うまでもありません。究極的には、

    chmod -R 777 /usr を実行したCentOS7で、一般ユーザがroot権限を得られることを確認する - Qiita
    mizchi
    mizchi 2021/04/08
  • ngrokで複数ポート開いてWebSocketで通信する - Qiita

    これまでのあらすじ スマホのブラウザ上で加速度データを取得してWebSocketでサーバに送りたい! ↓ センサーデータを取得するためにはhttpsじゃないと動かない… ↓ ngrokを使ってhttpsで立てちゃお ↓ クライアント用と通信(wss)用とで2つhttpsが必要になったぞ ngrokで複数ポートhttpsで立てる ngrokのサイトにログイン ngrok - secure introspectable tunnels to localhost Setup & Installation > 3 Connect your accountをコピペしてターミナルで実行→設定ファイルに認証情報が追記される さらに手動で設定ファイルを書き換える 各OSにおける設定ファイルの場所はこちら Default configuration file location _ ngrok – docum

    ngrokで複数ポート開いてWebSocketで通信する - Qiita
    mizchi
    mizchi 2021/04/03
  • git push -f をやめて --force-with-lease を使おう - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    git push -f をやめて --force-with-lease を使おう - Qiita
    mizchi
    mizchi 2021/03/25
    force-with-lease 知らなかった。便利じゃん
  • ウォーターフォールを世に広めたとされる米軍がアジャイルに移行中という話 - Qiita

    また、この図の説明においては理想的なケースにおいても1つ前の工程に戻る事が述べられています。 " Hopefully, the iterative interaction between the various phases is confined to successive steps. " (投稿者訳) 理想的には、各段階において工程が前後する範囲は直近の工程に限られる。 理想的でない場合はどうかというと、テストから設計まで工程が戻りうると示唆しています。 "The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as dist

    ウォーターフォールを世に広めたとされる米軍がアジャイルに移行中という話 - Qiita
    mizchi
    mizchi 2021/03/18