サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
qiita.com/7shi
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Cursor の Pro 版でサポートされる AI 機能は非常に強力であり、無料版と比較して多くのメリットがあります。しかし、個人開発者や学生など予算に限りがある人にとっては、Pro 版の利用は難しい場合があります。 本記事では、Cursor の無料版で Gemini や GitHub Copilot を設定することで、Pro の使用感に近付ける方法を紹介します。 Gemini は無料枠があります。 GitHub Copilot は基本的に有料ですが、学生・教職員や OSS 開発者への免除があるため、無料で利用できる場合があります。 概要 単純に VS Code を Cursor の無料版に置き換えた場合、差分としてよく使う機能は以下の通りです。 AI Chat でのメンション:Codebase (RAG)、Git、ファイル指定 RAG を別途構築する手間がないのは便利です。 Git 機能
v0 は Next.js の開発元 Vercel 社が提供する AI ベースのウェブデザイン特化型のプロトタイピングサービスです。Cursor は AI による支援機能を搭載したコードエディタです。 本記事では v0 でプロトタイピングしたコードをローカルに移し、続きを Cursor エディタで開発するという一連の流れで、使用感をレビューします。また、Next.js の初心者として、AI のサポートを受けながら進めていく上での最低限必要な知識についてもまとめます。 v0 v0 の主要機能は v0.dev/chat と呼ばれる AI チャットインターフェースです。このチャットを通じて、ユーザーは自然言語でデザインの指示を行うことができます。AI がこの指示を解釈し、対応する Next.js のコードを自動生成します。 デザインを開始すると、画面が左右に二分割され、右側にデザインが表示されます
量子コンピューターの初歩の初歩を説明します。数学的準備を最低限に留めるため、簡略化した表記法を採用して、基本原理の直観的理解を目指します。前提とするのは 2 進数のビット演算と中学数学で、量子力学の知識は前提としません。blueqat ライブラリによる検証法も説明します。 シリーズの記事です。 量子コンピューター超入門 ← この記事 量子コンピューター超入門2 一般的な表記法 はじめに 量子コンピューターは革新の可能性を秘めた分野です。しかしながら、量子力学に基づくため、その動作原理を理解するのは容易なことではありません。 量子力学では複素数による確率振幅の重ね合わせ、量子もつれ、測定による量子状態の収束など、古典物理学とは全く異なる概念が導入されます。これらを厳密に記述するには、大学レベルの数学が必要になります。こうした複雑さは量子コンピューターを理解する上で障壁となります。 本記事では
Amazon CodeWhisperer のテストとして JavaScript で四則演算器を作ってみました。Visual Studio Code を使用しました。 この記事のコードをまとめました。 同じ題材を Github Copilot で扱った記事があります。 使用感 Github Copilot と同じようなタイミングで反応しますが、やや反応が鈍いようです。期待したタイミングで反応しないときは [Alt]+[C] で反応させられるのが地味に便利です。Github Copilot では [Ctrl]+[Enter] がありますが、別フレームが開かれるなど挙動が異なります。 私の環境では Github Copilot はしばらく使っているとぐるぐる回ったまま反応しなくなることがありますが、Amazon CodeWhisperer では今の所そのような現象は起きていません。 今回はかなり
HTML の Element を画像に変換するライブラリ html2canvas を試しました。Chrome では良好ですが、Firefox では文字のサイズが変わってレイアウトが崩れるようです。 See the Pen Test: html2canvas by 七誌 (@7shi) on CodePen. ↑ 左が撮影元の Element、右がそれを画像化したものです。内容はデザインでよく使われる lorem ipsum と呼ばれるダミーテキストで、意味はありません。 シリーズの記事です。 dom-to-imageを試す html2canvasを試す ← 今回の記事 複数の画像を生成してローカルに保存 公式: http://html2canvas.hertzen.com/ 驚異的な力技で実装されているようです。 動的コンテンツを画像化できるJSライブラリ "html2canvas" を使
Python でクラス変数をインスタンス変数と取り違えたため、思ったように動かなくてハマりました。参考までにメモしておきます。 概要 よくあるミスのようで、同じ話題を扱った記事があります。 Pythonではインスタンス変数をクラス定義直下に書いてはいけない(戒め) ポイントはこのコメントに集約されています。 pythonの挙動は、self.odds を参照するとき、まずインスタンス変数を参照して、なければクラス変数を参照します。 別の記事でも注意喚起されています。 Pythonのクラス変数とインスタンス変数 | UX MILK クラス変数にアクセスする場合は、特別な理由がない限り「インスタンス.クラス変数」や「self.クラス変数」のようにアクセスすることは避けるべきです。Python ではインスタンス変数をインスタンスオブジェクトから生成することができ、意図せずクラス変数をインスタンス変
Wikipedia は全ページのダンプを提供しています。巨大なデータですが圧縮したまま扱えるようにインデックスが用意されています。実際にデータを取り出してみます。 準備 ダンプデータについての説明は以下にあります。 Wikipedia:データベースダウンロード - Wikipedia ファイルサイズが巨大なため、解凍したXMLを通常のエディタやブラウザで開かないようにご注意ください。 Wikipedia 日本語版のデータは以下にあります。 https://dumps.wikimedia.org/jawiki/ 記事執筆時点で入手可能な2020年5月1日版より、以下の2つのファイルを使用します。 jawiki-20200501-pages-articles-multistream.xml.bz2 3.0 GB jawiki-20200501-pages-articles-multistrea
import win32com.client cat = win32com.client.Dispatch("SAPI.SpObjectTokenCategory") cat.SetID(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices", False) for token in cat.EnumerateTokens(): print(token.GetDescription()) Microsoft Ayumi - Japanese (Japan) Microsoft Naayf - Arabic (Saudi) Microsoft Ivan - Bulgarian (Bulgaria) Microsoft Herena - Catalan (Catalan) Microsoft Jakub - Czech (C
量子力学では非局所性ということが言われます。簡単なプログラムを作って計算で確認してみました。 プログラムで扱うための視点から量子力学や量子コンピューターの世界に入っていくのもありだと思うので、この記事では可能な限り量子力学などの物理の知識を前提としないで説明を試みます。 スピン 何らかの粒子について考えます。具体的には指定しませんが、電子や光子を想像していただいて構いません。 【参考】スピン角運動量 - Wikipedia ここでいう「粒子」は電子やクォークなどの素粒子であっても、ハドロンや原子核や原子など複数の素粒子から構成される複合粒子であってもよい。 粒子はスピンと呼ばれる性質を持っています。今回は単純化して「特定の方向を向いている」と考えます。 測定 ある方向を指定して、スピンがそちらを向いているかを測定できます。結果は真 (true) か偽 (false) かで得られます。
ジェネレーターを DSL のように使って関数モナドと State モナドを模倣してみました。記述をそれっぽく見せることに重点を置いたため、bind や return を正確に実装したわけではありません。 この記事は次の記事の Python 版です。同じことが出来るはずなので確認したくなりました。 ジェネレーターで関数モナドとStateモナドを模倣してみた 結果的に、ジェネレーターの return の仕様の変遷や、デコレーターが有用なことなどが分かりました。 実装 実装を並べると、関数モナドと State モナドの差分が分かりやすいです。 def function_monad(g): def f(state): it = g() value = None try: while True: value = it.send(value)(state) except StopIteration a
ジェネレーターを DSL のように使って関数モナドと State モナドを模倣してみました。記述をそれっぽく見せることに重点を置いたため、bind や return を正確に実装したわけではありません。 関数モナド(のようなもの) See the Pen Function Monad by 七誌 (@7shi) on CodePen. State モナド(のようなもの) See the Pen State Monad by 七誌 (@7shi) on CodePen. この記事には Python 版があります。 Pythonでもジェネレーターで関数モナドとStateモナドを模倣してみた 実装 実装を並べると、関数モナドと State モナドの差分が分かりやすいです。 function functionMonad(g) { return state => { let it = g(), re
setTimeout と Web Speech API を Promise でラップする例を示します。 Promise とメソッドチェーンだけでは何がやりたいのか分かりにくいかもしれませんが、async/await もセットで考えることで狙いが分かりやすくなると思います。 ※ Web Speech API の例は単純なので、触れたことがなくても分かると思います。 C# との比較については以下の記事を参照してください。 PromiseとTaskCompletionSource setTimeout Promise の例としては定番です。 コールバック 非同期 API にコールバックを渡す処理をネストすると、いわゆるコールバック地獄になります。 setTimeout によって1秒後に1、その2秒後に2、その更に3秒後に3を表示する例です。 setTimeout(() => { console.
Haskellではモナドと呼ばれる部品を組み合わせてプログラムを作ります。関数の評価に失敗したときにエラーを起こさずに処理する方法の初歩を説明します。Maybeモナドを手っ取り早く使うことを目的としているため、モナドの作り方や圏論には言及しません。 シリーズの記事です。 Haskell 超入門 Haskell 代数的データ型 超入門 Haskell アクション 超入門 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 ← この記事 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 Haskell 構文解析 超入門 【予定】Haskell 継続モナド 超入門 【予定】Haskell 型クラス
ニューラルネットワークによる手書き数字認識について、各ノードへの元画像の影響を視覚化します。 アルゴリズム 【注】適当に思い付いたアルゴリズムです。どの程度正確に影響度が測れるかは未検証です。 比較の基準としてピクセルがすべて0のソースで各ノードの値を計算します。 評価対象とする画像を用意します。1ピクセルだけソースに入れて各ノードの値を計算して、すべて0のときと値を比較します。これをすべてのピクセルに対して行ったものを、ノードごとに特定のピクセルが与える影響とします。 これを画像化することで、視覚的に影響を見ることができます。 準備 『ゼロから作るDeep Learning』のサンプルを使います。 https://github.com/oreilly-japan/deep-learning-from-scratch 初回実行時にMNIST(手書き数字のデータ)をダウンロードするようになっ
実数と虚数の形式的な和を複素数と呼びます。複素数は $a,b$ という2つの実数により $a+bi$ と一般化できます。$b$ は $i$ の係数です。 積 $i^2=-1$ にだけ注意すれば、通常の代数式と同じです。 let compStr = Seq.map (fun e -> [| ""; "i" |].[e]) >> Term.strPower let compProd title = Term.showProd title "" compStr (function | [x; y] when x = y -> term -1 | es -> Term.fromE es) id Term.byIndexSign (fun _ -> true) let ca = [term(1, ["a_0"], []); term(1, ["a_1"], [1])] let cb = [term(
内積は計算方法としてはそれほど難しいものではありませんが、色々な応用があるためイメージしにくい計算です。幾何学的な意味付けがありますが、そのようには解釈しにくい計算にも応用されます。例として、日常的にも触れる機会の多い計算書(見積りなど)を取り上げます。NumPyによる計算を添えます。 行列で何を計算しているのかいまいち実感が湧かないという方へのヒントになることを目指しています。 シリーズの記事です。 見積りで考える内積 ← この記事 関数で考えるコベクトル 関数で考える行列 関数で考える双対性 コベクトルで考えるパーセプトロン
Haskellと比較しながらF#を説明します。練習では再帰に慣れることに重点を置きます。再帰によるリスト処理の例として各種ソート(挿入ソート、バブルソート、マージソート、クイックソート)を紹介します。 ※ 一応、Haskellは飛ばしてF#だけでも読めるようには配慮したつもりです。Haskellがよく分からなければ飛ばして読んでみてください。 この記事はHaskellの記事をベースにしています。 Haskell 超入門 2014.08.20 練習の解答例は別記事に掲載します。 【解答例】Haskellで学ぶF#入門 この記事には姉妹編があります。 C#/JavaScriptで学ぶF#入門 2017.01.04 この記事には関連記事があります。 doブロックとコンピュテーション式 2016.07.01 functionのインデント 2016.12.14 F#を手っ取り早く試すために、私が常用
C#やJavaScript(ES2015)と比較しながらF#の文法を説明します。手続型の延長線上で取っ掛かりをつかむことを目的とします。関数型については深追いしません。 とりあえず手続型的な発想でも構わないので、F#を使ってみます。 関数型特有の概念の説明には重点を置きませんが、その導入になるようには意識します。 一気に関数型に飛ばないで、ベターC#として慣れていくような入り方を目指します。 関数型の理解を深めるのは慣れてからでも遅くないというスタンスです。 この記事は以前開催していたF#入門のテキストを改訂したものです。 この記事には姉妹編があります。 Haskellで学ぶF#入門 2017.01.11 F#を手っ取り早く試すために、私が常用している環境を紹介します。 F#開発環境の紹介 2016.12.30 F#について F#の構文は見慣れないものだと思います。この記事ではC#/Jav
私が常用している F# スクリプトの開発環境を紹介します。個人的には、小規模なプログラミングでは最強の使い勝手だと感じています。これが便利で F# を使っていると言っても過言ではありません。 【2018.07.31】記事を全面的に書き直しました。以前の内容は非推奨です。 F# を試してみたい方は、入門記事を参照してください。 2017.01.04 C#/JavaScriptで学ぶF#入門 2017.01.11 Haskellで学ぶF#入門 Visual Studio Code の拡張機能では Markown+Math もお勧めです。 Visual Studio CodeとMarkdown+Mathの紹介 特徴 Visual Studio Code の拡張機能 Ionide-fsharp の紹介です。 Ionide-fsharp には様々な機能がありますが、今回は F# スクリプトでの使い勝
Haskellでは失敗を処理するのにモナドと例外の2つの方法があります。手っ取り早く失敗を処理することを目的として、それらの初歩を説明します。 シリーズの記事です。 Haskell 超入門 Haskell 代数的データ型 超入門 Haskell アクション 超入門 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 ← この記事 Haskell 構文解析 超入門 【予定】Haskell 継続モナド 超入門 【予定】Haskell 型クラス 超入門 【予定】Haskell モナドとゆかいな仲間たち 【予定】Haskell Freeモナド 超入門
C#を学習すると共変と反変という用語がでてきます。難しそうな用語ですが、その取っ掛かりとして戻り値と引数に的を絞って図によるイメージで説明します。数学的な知識は前提としませんし、コードも簡単なものしか出て来ません。型周りの知識を整理するのにも役立つでしょう。 この記事で最終的に説明したいことは、次のようにデリゲートから参照するメソッドの戻り値や引数の型を変える規則についてです。 C Foo(A a) { return new C(); } // 戻り値はBの派生クラスC、引数はBの基底クラスA delegate B Delg(B b); // 戻り値と引数ともにB Delg d = Foo; // 型が一致しないのに、なぜ許されるのか? この規則はイメージしにくく混乱を招きがちですが、図による直感的な説明を試みます。 ※ 具体例で用語に慣れることも目的としています。なるべく話を単純にするた
ベクトルの外積と呼ばれる演算には3種類あります。 テンソル積 $\otimes$ ウェッジ積 $\wedge$(楔積) ベクトル積 $\times$(クロス積) これらについて簡単に紹介します。 ※ 外積と言えばベクトル積を指すことが一般的です。ここでは使用頻度ではなく、説明の都合で番号を振っています。 内積と外積を同時に扱えるクリフォード代数の幾何積も紹介します。 最後に、代数式・テンソル積・ウェッジ積・ベクトル積・幾何積・四元数を計算するプログラムを掲載します。 シリーズの記事です。 多項式の積を計算 外積と愉快な仲間たち ← この記事 ユークリッド空間のホッジ双対とバブルソート 四元数を作ろう 四元数と行列で見る内積と外積の「内」と「外」 八元数を作ろう 八元数の積をプログラムで確認 外積の成分をプログラムで確認 多元数の積の構成 十六元数を作ろう 関連するコードをまとめたリポジトリ
構文を解析するプログラムをパーサと呼びます。実装方法にはいくつか種類がありますが、今回は再帰下降という方式を取り上げます。既存の実装を使うのではなく、1から実装しながら説明します。 この記事ではJavaの新しい言語機能は使わずに、なるべく基本的な文法だけで記述します。 この記事には関連記事があります。再帰下降を理解してから、応用編として読むのが良いでしょう。 Java パーサコンビネータ 超入門 2016.05.12 Java パーサコンビネータ 超入門 2 2016.05.14 JSONパーサーを作る 2016.12.26 四則演算器 構文解析の練習として、簡単な四則演算器を作ります。文字列で式を与えると計算して答えを返します。 例: "1+2*3" → 7 まずは次の計算ができることを目指します。 "12+34+56" → 102 数字 パーサの基本的な考え方として、1文字ずつ順番に見
構文を解析するプログラムをパーサと呼びます。実装方法にはいくつか種類がありますが、今回はパーサコンビネータという方式を取り上げます。既存の実装を使うのではなく、1から実装しながら説明します。 この記事は再帰下降構文解析の知識を前提とします。詳細は次の記事を参照してください。 Java 再帰下降構文解析 超入門 2016.05.16 Javaには既存のパーサコンビネータがありますが、この記事では使用しません。 jparsec ParsecJ この記事ではHaskellのParsecを参考にしています。もちろんHaskellやモナドの知識は前提としません。それと断らずにモナドに由来する何かは出て来ますが、それが見抜けなくても問題ありません。興味があれば以下の記事を参照してください。 Haskell 構文解析 超入門 2015.07.31 今回はラムダ式を多用するためJava 8以降を対象としま
MSYSはWindowsでgccを動かすためのミニマムなUNIX風環境です。最新版のMSYS2はArch Linux由来のpacmanを搭載するなど大幅に使いやすくなっています。 勉強会で一斉にインストールすることを想定して、インストール後の設定について説明します。 ※ 設定は好みが別れる部分もありますが、よく分からない時にとりあえずやっておけば便利だと思われるものを紹介します。 インストール方法 本家に書いてある通りです。 https://msys2.github.io/ 手順5.と6.の環境が大幅に書き換わる場合は close するよう求められます。ターミナル(mintty)をウィンドウ右上の[×]ボタンで閉じて、スタートメニューから MSYS2 Shell を開いて作業を続行します。 【注】ショートカットに登録されているバッチファイルがなくなって MSYS2 Shell が開けなくな
VAXとはPDP-11の後継となる32bitマシンです。UNIX V7をVAXに移植したUNIX/32Vがあります。バイナリを通してUNIXを学習します。 この記事は以前開催していた池袋バイナリ勉強会の初回編で教えていた内容をVAX向けに書き直したものです。 この記事には姉妹編があります。 PDP-11による機械語入門 2015.11.08 8086による機械語入門 2015.11.09 環境設定 UNIX/32Vのバイナリを動かすためのインタプリタと、その上で動く当時のコンパイラを使用します。 インタプリタはJavaで作られているためJDKが必要です。 http://www.oracle.com/technetwork/java/javase/downloads/index.html WindowsではMSYS2が必要です。 MSYS2でRicty Diminishedを使う設定など 2
構文を解析するプログラムをパーサと呼びます。実装方法にはいくつか種類がありますが、今回はパーサコンビネータという方式を取り上げます。既存の実装を使うのではなく、1から実装しながら説明します。 C++ではBoost.Spiritが有名ですが、この記事ではHaskellのParsecを参考にしています。もちろんHaskellやモナドの知識は前提としません。それと断らずにモナドに由来する何かは出て来ますが、それが見抜けなくても問題ありません。興味があれば以下の記事を参照してください。 Haskell 構文解析 超入門 2015.07.31 今回はラムダ式を多用するためC++11以降を対象とします。ラムダ式なしで実装するとあまりにも冗長になり過ぎて、便利さよりも煩雑さが勝ってしまうためです。興味があれば、以下のリポジトリを参照してください。 https://bitbucket.org/7shi/p
次のページ
このページを最初にブックマークしてみませんか?
『7shi - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く