教育用Webサービス「IronBrain」(ベータ版)

私は数年にわたって開発してきたトレーニングシステムを皆さんと共有したいと思います。 システムはウェブサイトとして表示されます



この記事では、IronBrainの背後にあるアイデアがどこから来たのか、どのように進化したのか、どのように正しく使用するのか、特定の実用的なケース、IBが具体的にどの程度役立つのかを説明します 。 また、開発中に発生した問題とその解決方法、IBの技術的な実装の詳細についても詳しく説明します。



すぐに警告します-このシステムは非常に高品質のトレーニングを目的としており、すべての人に適しているわけではありません



PS:このプロジェクトは完全にオープンで無料であり、商業的な焦点はありません。心から作られ、あなたの検討のためにレイアウトされています-突然誰かが便利になります...







エントリー



すぐに予約します-記事の公開日には、habr効果によりironbrain.orgサイトが落ちるか、大幅に遅くなる可能性が高いため、フォールバックオプションを提供しました-PCでサーバーをダウンロードして実行できます(Windowsの場合)。 それでも、この記事の主な目標は、実装ではなくアイデアを伝えることです。



アイデアが生まれた方法



プログラムのイデオロギーとその適用範囲を最も正確に伝えるには、プログラムが作成された理由、プログラムが解決したタスク、および開発方法を理解する必要があります。 私自身について簡単に説明すると、私の名前はヤロスラフであり、この記事の発行時点では、私はサンクトペテルブルクSUAIの4年目でした。 IBの根底にあるアイデアは、何年も前に生まれました。 しかし、まず最初に。



2007年にプログラミングに携わり始めました。 それから大多数は言語を独力で、そして原則として本やマニュアルから勉強しました。 手始めに、私は本を読んで、実際にそれらに書かれているものをテストしました。 しかし、時間が経つにつれて、この手法の非効率性が実現しました。 より生産的な学習パスを探し始めました-そして、最終的にそれらを見つけました。



友人は、48枚のノートを用意し、その中に本の内容の簡単な要約を書くことを勧めました。 最初は、「本にメモをとる」という考えは奇妙に思え、役に立たなかった。 すでにあるものを書き換えるのはなぜですか? 結局、私はいつでも本を開いて、必要な情報を見つけることができます。 たくさんの本がありますが、それらを常に持ち歩くことはできませんか? ほとんどの本の電子コピーは簡単に入手できます。電子インクの登場により、境界線はほとんど消去されます。1つのデバイスに1000本の本を入れることができます。 そして一般的に、アブストラクトのアイデアは過去の遺物のように思えました。それから本を手に入れる方法がなかったので、メモを取るか完全に書き直す必要がありました。



しかし、私は間違っていました。 メモを取ることの主な用途はこれからはほど遠いものでした。 大要を書くと、脳は情報を処理して結論を​​導き出します。 彼はそれを自分自身に通し、あなたにとってより良い形でそれを書きます。 そして、この処理された情報はずっとよく記憶されます。 特に、概要に独自の何かを追加した場合-発生した思考、非自明の結論または発言。 大要を書くと、理論的な結論を考えて描くことができます。これは最終的に実践に良い影響を与えます。 これが主な利点です。 メリット2-図書館やプログラミング言語などで知識を長期間使用していない場合、読んだ資料を思い出すのがずっと簡単です。



実際、口頭で要約を作成することで、ほぼ同じ効果を達成できます-読んだものを読んで熟考します。 だから、2010年に私は物理学の試験の準備をしていた-大要をコンパイルすることなく。 ちなみに、この小さな本を読み直そうという欲求はなかったので、最初の年の初めに後悔したものですが、私の記憶の基本をリフレッシュしたかったのです。



長年、これらの技術またはそれらの技術を研究し、私はそれらのメモを紙の形で保管していました。Assemler、Pascal、AcrionScript 2,3のノートは保存されていました。 私にとって本を調べることは、学習の大きなブレークスルーでした。 しかし、その後、私は何かが欠けていると感じ始めました。 私が考え始めた最初の問題は、紙のメモを電子的なメモに置き換えてみませんか? 試しましたが、画期的なものはありませんでした-docまたはodt-文書は本質的に同じノートブックであり、無限に強力で無限に軽量です-好きな場所に持って行きます。 しかし、これらのプロパティは実際には必要ありませんでした。 しかし、欠点がありました-ノートブックはまだリードするのにはるかに優れていて、私の目は休みました。 したがって、従来の形式の電子ノートは、いかなる形でも定着しませんでした。



SUAIの初年度の最初のセッション(これは遠い2011年でした)の準備をしていたとき、大学レベルで代数を勉強するために、わずか1週間で短時間でタスクに直面しました。 試験は厳しいものになると約束されていたため、そこに書き留めることは非常に困難です。 一部の資料は私の講義ノートにあり、一部は本から取らなければなりませんでした。 メモを読み直すと、講師が試験の問題のリストに載っていたものよりも大幅に多くを与えていることに気付きました。 将来、エンジニアとして仕事をするつもりで、代数の深い知識が役立つとしたらどうでしょうか? 一般的に、提出された資料の量のこの違いについて深く考えました。 また、チケットをコンパイルするアプローチ自体は学習に非常に優れており、たとえば新しいプログラミング言語やライブラリを学習するなど、個人的な目的にも役立つことがあります。 チケットはあなたに考えさせます。 私は古典的な方法で準備し、与えられた質問リストにほとんどのチケットを書いて、この試験に完全に合格しました。



物理学のコースを始めた最初の年の2学期に、私はそれをより深く研究することを考えました、そして1つは事前に試験の準備をします。 講師が読むすべてのトピックのチケットを作成してみませんか? そして、すべての資料を「引き出し」、より多くの質問を作成して、彼に思い出させて熟考させることを強制しますか? 私はノートブックの後半でそれらを作成しようとしましたが、紙の上では非常に不便で、どの問題が何に関連するのか不明確であり、すべての資料を別々に書き直したくありませんでした。 必要なのは、とりわけ、チケットをランダムにカットする方法を知っているプログラムであり、このチケットを再発行しないように、このチケットを覚えているかどうかも保存します。 しかし、それから私はそれを作ることを推測しませんでした。



2011年の夏にキプロスでリラックスしていたとき、個人文書を保存し、Word / Writerにはない必要な機能を追加するためのユニバーサルプログラムを作成するというアイデアを思いつきました。 とりわけ、私はチケットにメモを取るというアイデアを思い出し、このプログラムに基づいて簡単に実装できると判断しました。 プログラムにIronBrainという名前を付けることにしました。 元のアイデアによれば、プログラムは非常に大雑把ではありますが、マウスとモニターを介して脳の知識をコンピューターと同期させることでした。 しかし、この一般的なアイデアは、私が望んでいたほどには実現しませんでした。 実際、文書を作成してから再度読むと、知識をPCと同期しますが、非常に非効率的です。 多数のドキュメントがある場合、特定の期間ですべてを単に再読することは面白くないでしょう。



IronBrain Evolution



2年目に私はすぐに働き始めました。 次に、すぐに動作し、通知パネルに配置され、グローバルホットキーで実行される厳しいデスクトッププログラムの形のIronBrainを見ました。 だから私はやった。 インターネットと研究での長い調査により、C ++ / Qtを使用することが最良のソリューションであることが示されました。 「最高」とは、このプログラムがユーザーにとって最適であることを理解しました。サードパーティの仮想マシンのインストールを必要とせず、クリーンな実行可能ファイルとして実行し、ほとんどのデスクトッププログラムのように見えます。 同時に、Qtは望ましいクロスプラットフォームを提供します-特定のオペレーティングシステムに接続したくありませんでした。 私はJava / Swingにも目を向けましたが、その考えは捨てました。 Javaインターフェースは非常に遅いように思えました。



次に、C ++の無知とQtの無知という2つの大きな問題に直面しました。 それは、C ++の非常に基本的なコースがないことでした-私はそれについての要約を持っていなかったので、普通に勉強する時間はありませんでした。 Qtでは、非常に基本的なことを理解するために、本のいくつかの章を読む必要がありました。 最終的に、C ++の知識不足はその複雑さを増し、時には私は何時間も座ってプログラムのコンパイルを達成しようとしました。 開発は非常にゆっくりと進み、学期の終わりにのみ何か効果的なものを発表しました。 確かに、C ++ / Qtの知識は、開発プロセス、特にC ++ではあまり成長していません。 ちなみに、これは、外出先でC ++などの言語を学ぶ必要がないもう1つの明確な証拠であり、「本で」学ぶのに時間を費やす方が良いでしょう。



実際、私のプログラムがどのように機能するかについての良いアイデアを持っていなかったという事実によって、開発は遅くなりました。 私は非常に愚かに行動し、文章を格納するオブジェクトの大きな配列を作成しましたが、同時に、ある文章から別の文章に質問を投げかけることができました。 アイデアはこれでした-最初にユーザーが答えを書く-つまり アブストラクト自体の断片。 次に、プログラムは彼に各行に質問を提示するように強制します。したがって、ほとんどの要約は質問を使用して引き出すことができます。 しかし、それは非常に悪い考えでした。 すべてに加えて、プログラムはしばしば「プログラムが無効な操作を実行し、閉じられます」という典型的なエラーでクラッシュしました-ポインタでエラーが発生しました。 しかし、主なアイデアは実装され、機能しました。2013年初頭にQIronBrainに数か月滞在しました。 彼はすでに大きな利益をもたらし始めました。 下のスクリーンショットでその様子を確認できます。



QIronBrainの外観








それから、質問と回答のために2つのRichTextEditorが必要だと気付きました。 理想的には、完全にやり直すために、アプリケーションのアーキテクチャを根本的に変更する必要がありました。 私はそれをやった。 同じ小さなC ++ / Qt知識を使用して、1週間以内にゼロから実用的なExaminerプロトタイプを作成し、QIronBrainから唯一成功したアイデアを引き出しました。 その後、このIronBrainの生まれ変わりを1年以上使用し、さまざまなトピックについて約600のチケットを作成しました。 さらに、パラドックスは、まったく変更しなかったということです-最初のバージョンをリリースした形で使用しました。 クラッシュすることはほとんどなく、非常にオークで信頼性が高いことが判明しました。 QIronBrainの場合のように、データは単一のXMLファイルとして保存されていました。 基礎として、QTextEditクラスを使用しました。これにより、コンテンツをHTML形式で受信し、HTMLに基づいて構築することができました。



審査官の様子








Examinerが行ったのは、チケットとそれらの階層を作成し、特定のセクションからチケットを直線的に運転できるようにすることでした。 それは十分すぎるほどでした。 2013年半ばに、いくつかのリファレンスプログラミング言語を選択して詳細に検討することにしました。 私の知識は表面的に異なる言語で散らばっていました。 最初は、C ++がそのような言語になると思っていました。 しかし、多くの熟考、ホリバーの思慮深い読書、さまざまなサイトの空室の分析と評価の後、Javaが必要であるという結論に達しました。 すぐに言ってやった。 半年間、Schildtの本の半分以上を読んで概要を説明し、QuizfulからEnthuwareまで、さまざまなテストを実行しました。 ちなみに、テストからは本とほぼ同じくらいの知識が得られ、言語の微妙な点についての拡張された知識でした-不可解に詳細な質問を分析し、それらのチケットを編集しました。 合計で、約500のJava SE 6チケットを作成し、知識をまったく新しいレベルに引き上げました。 これにより、かなりハードコアなシミュレータで「Java SE 6 Programmer Certified Professional」試験に合格し、その後、実際の認証機関で既に「Java SE 7 Programmer I」に合格することができました。 、JavaでのOracle認定の道を開き、さらに厳しい試験に合格する可能性がありました。



2014年の初めに、私はAndroidに興味を持ち、Androidのチケットをさらに100個作成しました。 確かに、アンドロイドは本であまりよく研究されていません。 または、複雑すぎる本を取りました。 いずれにせよ、得られた経験やグーグルに基づいてチケットを作成することはできましたが、Examinerは厳密に階層的でした-最初からチケットを作成して、知識のいくつかの領域に結び付けることはできませんでした。 2014年半ばに、Examinerを完成させて公開することは害にならないという結論に達しました。この全体についてハブで記事を書きます。 Java / Swingでプログラムを書き換え、チケットデータベースの検索や階層外へのチケットの追加など、便利な機能を追加することにしました。



約2か月の作業で、新しい機能が実装され、多くの点が改善されたJIronBrainプロトタイプを作成しました。 しかし、根本的な間違いを犯したことに気付きました。 私が使用したGUIツールは、最高とはほど遠いものでした。 ExaminerをQtで開発したとき、QTextEditが私にとって大切だったQtWidgetsライブラリはこれ以上開発されないことがわかりました。 QtQuickControlsは代替品として登場しましたが、当時は私が望んでいたものの多くは提供していませんでした。 そして、いつこのレベルにファイナライズされるかはわかりません。 Java / Swingではこれが当てはまらないことを期待していました。 ただし、Swingも廃止されたライブラリと見なされており、長い間ファイナライズされておらず、重大なバグは修正されておらず、OracleはJavaFXをSwingの代替として位置付けています。 ユーザーが複数のスペースを続けて入力すると、setHtml(getHtml())で失われると、JTextPaneで個人的に問題が発生しました。 もちろん、このすべてを松葉杖で修正できますが、本当に良い方法はありませんか? JavaFXでインターフェースを書き換えることを考えましたが、これも重大なエラーになることに気付きました。



JIronBrainの外観








最良の決定は、Web上でIronBrainを作成することでした。 判明したように、contenteditable属性は長い間存在しており、私がとても欲しかった理想的なRichTextEditorを提供してくれました。 HTML5は間違いなくどこにも行きません。 さらに、このRichTextEditorは、異なるデスクトップブラウザーとAndroidの両方で正常に動作します。 また、Swing for Androidを起動することはほぼ不可能です。 この事実は私を非常に傷つけ、将来はウェブにあると言うとき、彼らが何を意味するかを理解しました。 Webアプリケーションは一種のトランスフォーマーです。クライアントサーバーモードで動作することも、インターネットにアクセスせずにデスクトッププログラムとして実行することもできます。



A4シートを取り出して、Java / Swingアプリケーションの分析と、Webアーキテクチャに切り替えたときに得られるメリットを書きました。 これらは非常に重要であり、非常に有望な技術からGUI(HTML5)の構築に至るまで、エンドユーザーの利便性で終わります。ダウンロード、インストールなどは必要ありません。 IronBrainを再度書き換えるのが理にかなっていることに気付きました。 4回目。 誤った技術の選択の誤りについては、時間と労力を心から払わなければなりませんでした。 しかし、移行には価値があります。



実際、HTML5は私にすべてを与えてくれました。 どうやら、これは中小規模のGUIを構築するための世界で最も先進的なテクノロジーですが、最新のプロセッサーと高速ブラウザーを考えると、HTMLを使用してほとんどあらゆる複雑なインターフェースを構築できると思います。 非常に強力なRichTextEditorが組み込まれているとは想像もできませんでした。 私が取り組んだほとんどすべてのフォーラムでは、最初にコードを入力する必要があり、それから初めて「プレビュー」モードで視覚化されます。 さらに、多くのサイトはひどく遅いので、私のシステムも遅くなると思いました。 しかし、VPSでホストされているWIronBrainもほぼ瞬時に機能しました。 さらに、極端な場合、ローカルで実行することもできますが、速度の点ではデスクトップアプリケーションと同じになります。



約2か月で、WIronBrainをゼロから開発しました。サーバー部分はJava / Springで、クライアント部分はHTML5 / CSS / JSでした。 私はMySQLの古いベースを追い越しましたが、これは非常に満足しています。



WIronBrainの外観








アイデア



トレーニングは、特にITスペシャリストにとって、私たちの生活において非常に重要です。 何か新しいことを絶えず学んでいるなら、あなたはおそらく貴重な情報を失うという問題に直面しているだろう- 忘れるの人間の本性だ 。 誰もが独自の方法でこの問題を解決しようとします-たとえば、アブストラクトやノートブックの助けを借りて。



私はあなたに知識を保存するための特別なフォーマットをチケットの形で提供します。 あなたのすべての知識とスキル、あなたの人生経験のほとんどすべてはチケットの形で分解することができます 。 チケットとは何ですか? これは、それらに対する一連の質問と回答です。 これらは、理論的な質問と詳細な回答を伴うタスクの両方になります。 あなたはそれらを構成する方法を学ぶ必要があります-そしてそれが習慣になるように。



特定のエリアから何かを忘れた場合は、コンパイルしたこのエリアのチケットをカットし、テストの形式で実行できます。 本や要約を読み直すことに対するチケットの大きな利点は、 それらがあなたに考えさせることです 。 考え、覚え、分析することがたくさんあります。 あなたは自分自身をチェックします-あなたの答えが考えられているかどうか、そしてこのチケットが現在のテストで再び現れるかどうかを選択します。 そして、忘れられたチケットの質問について長い間熟考した後、答えを見ることでそれを簡単に思い出すことができます。



IronBrainシステムを使用すると、チケットの作成を自動化し、カットを整理して検索したり、その他の多くの便利な機能を使用したりできます。 何かを定期的に勉強すれば、質問のおかげで新しいレッスンが始まる前に最後のレッスンの要点を完全に思い出すことができます。 IronBrainは、新しいレッスンの前に過去の質問を提起し、どこかで間違いを犯したかどうかを明確にする教師として見ることができます。 また、重要なポイントを覚えることもできます。 これがIronBrainの主な利点です。 あなたの進歩を見て、多くを考えるようになるので、トレーニングははるかに面白くて楽しいものになります。 IBの主な利点の1つは、学習の楽しさを高め、その結果、生産性を大幅に向上させることです。 実際、 IronBrainの主な利点を実感し、トレーニングに対する従来のアプローチとの違いを確認するには、それぞれ1〜1.5時間で3〜4日しか必要ありません 。 試してみてください。



この記事のフレームワーク内でシステムを使用することの微妙な点を説明する意味はありません; IB内の「Documentation-> User Guide」セクションでそれらについて読むことができます。



特定のアプリケーション



汎用プログラミング言語を学ぶ



HTML / CSS / JSは、小さなカスタムサイトを作成するのに十分なレベルで、本やマニュアルを読むことなく(ほとんどのフリーランサーのように)外出先で学習できます。 C ++やJavaなどのより複雑なプログラミング言語では、このアプローチは効果的ではありません。 プロジェクトの開発中にそれらを研究する場合、アーキテクチャエラーを犯すリスクがあります。これは後で支払うことになります。 もちろん、すべては実践と自分の過ちから学ぶことができます-しかし、これには何年もかかりますが、他の人の経験から本からはるかに早く学ぶことができます。



アルゴリズムは次のとおりです。C++ / C#/ Objective-C / Javaまたは別の産業用言語に関する本を取ります。 IBを開き、[チケット]→[グループ]セクションに移動して、言語のセクションとそのセクション(本のセクション)を作成します。 その中に、セクションから章およびサブセクションへの階層を構築します。 彼らはすでにチケットを持っています。 この本を読んで、理論の概要を説明し、練習します。コードを入力して操作し、変更して結果を確認します。 タイプミス、興味深い点、有用な機能が明らかになるので、実際に提出されたすべての資料を必ず確認してください。 あなたが発見したすべての知識と微妙さのために、「そのようなプログラムの書き方、どんな微妙さがそこにあるのか」などのチケットを作成します。 さらに、チケット用のエリアは貼られていません。 各章では、言語の名前で領域を示す方が適切です。 これにより、必要に応じて、このチケットセットを引き出し、同じトピックや他の書籍で経験的に取得したチケットと組み合わせることができます。



新しいレッスンの前に毎回最後のレッスンで作成したチケットを忘れて追い払うようにしてください-そうすれば知識はずっと良く積み重ねられ、多くのものが再考されます。 これはチケットの繰り返しであり、この特定のケースではIBの主な利点があります。 プログラミングトレーニングは、はるかに効果的で楽しいものになります。 特典番号2-検索により、チケットを簡単に見つけて、個人的なFAQとしてデータベースを使用できます。



頻繁にこれが起こります-あなたは新しい難しい章を読み始め、さらに概念的には難しいです-新しい概念、アプローチ、原則。 時々あなたは読んで、何を、なぜ理解していない。 IBは、このような章をそれほど難しくすることなく徐々に「取り入れる」のに役立ちます。 最も単純な定義であっても、理論に基づいて3〜4枚のチケットを作成するだけです。 そして翌日-これらのチケットを運転して学びます。 その後、トレーニングを続けると、多くのことが明らかになり、トレーニングが上り坂になることに気付くでしょう。 これは、概要-理論の絞り込み-が思考の一種の「フレームワーク」を提供し、そこからすべてを構築してその場所に配置できる「基盤」を提供するために発生します。



IBを使用して、かなり適切なレベルでJava SEを学びましたが、それでもこの知識をいくつかの方法で使用しています。 Shieldt Java 7 Complete Guide bookの約300枚のチケットが編集されました。 一見すると思うかもしれませんが、それほど難しくはありませんでした。 そして非常に生産的です。 1日で約1.5〜2時間、約4〜6枚のチケットが必要です。



グラフィックパッケージの学習



2013年、私はゲームの作成のトピックに興味がありました。難しいことではありませんが、最初から最後まで作られた小さなインディーゲームを自分で作成したかったのです。 しかし、3Dモデリング用のプログラムの無知は後退しました。 通常、そのような場合、彼らは別の個人設計者を雇いますが、最初にこの領域を自分で試してみたかったです。



ライセンスされた3D maxには多額の費用がかかりますが、ハッキングされたバージョンを使用したくありませんでした。これはクロスプラットフォームでもありませんでした。 価値のある代替品-Blender-があることを知り、それを研究することにしました。 ロシア語で非常に優れたビデオコースのシリーズをダウンロードし、閲覧と実験を開始しました。 また、得られた知識のチケットを並行して作成します。 QIronBrainはスクリーンショットの挿入を許可しませんでしたが、実際には必要ありませんでした。 テキストに質問を定式化するだけで十分です。たとえば、「ポリゴンを押し出す方法は?」または「3つのポイントを折りたたむ方法は?」、ホットキーの形式の回答、または必要なボタンの場所の説明などです。 基本的なトピックに関する質問と回答に加えて、純粋に技術的な質問と回答、たとえば「2D描画と360度回転でカップを作る方法」、そしてポイントごとのアルゴリズムの説明も尋ねました。 勉強するのに約2週間かかり、ほぼ毎日平均1.5-2時間で勉強しました。



私はブレンダーの基本を学びましたが、他の多くのタスクがあったので、将来のゲームを作成するプロジェクトを先送りにしました。 そして、6か月後の新学期に、コンピューターグラフィックスに関する学期末レポートを作成しました。 これは、IronBrainの大きな利点が影響する場所です。 Blenderを開いて、勉強したものの60%が原則として覚えておらず、さらに30%が非常に漠然と覚えていることに気付きました。 6か月間、3Dモデリングを実践しておらず、習得した知識をまったく実践したことがありません。勉強して忘れていました。 どうする トレーニングにまともな時間を費やしました。 同じビデオコースを2度目に見直すのは、退屈で非生産的でした。 もちろん、資料の再学習ははるかに高速です。これをすべてレビューして、1週間で毎日覚えることができます(毎日1.5〜2時間)。 しかし、より効率的な方法がありました。



すべてのBlenderチケットを毎日2時間実行するのに約3日かかりました。 これは、ビデオコースを再視聴した場合の2分の1です。 そして、質問があなたに考えるようにさせるので、3倍より良いです。 (もちろん)優れた3Dモデルを作成し、問題なく合格しました。 それから1年が経ちましたが、すべてを忘れていましたが、Blenderが再び必要になった場合、簡単に思い出すことができます。

これに加えて、この場合のチケットの検索には大きな利点があります。 書籍の場合でも電子版をダウンロードして検索できる場合、ほとんどのビデオコースではテキスト検索が不可能であり、目的のフラグメントを検索して前後にスクロールするのは非常に退屈な作業です。



そのようなアルゴリズム-ビデオコースを受講し(グラフィックパッケージの学習に最も効果的です)、[チケット]セクションに新しいセクション「コンピューターグラフィックス」を作成します。 パッケージの名前に関するセクション(Photoshop、Gimp、3D maxなど)が含まれます。 ビデオコースの名前に関するセクションがあり、そのセクションにはチケットのあるセクションセクションがあります。 すべては本でメモを取ることに似ています。



試験準備



Javaを勉強したとき、この本を読んだ後、テストをさらに深くすることにしました。 QuizfulにはJava SEテストの膨大なコレクションがあり、多くの知識と経験が含まれています。多くの例は非常に複雑なものと呼ぶことができますが、それでも本には書かれておらず実際に役立つ実用的な経験が含まれている場合があります。他の人のコードで、そうではありません。さらに、Javaは十分に標準化されており、これらの同じ言語の「トリック」の95%は、言語仕様によって厳密に定義されています。そこで定義されている場合、誰かがそれらを必要としますよね?



特定のサイトでテストし、バグに取り組むことを決めたとします。これまで知らなかった言語またはそのライブラリのいくつかの新機能に出会います。 IDEを開いて、実験してください。ここで、忘れないように、この機能をどこかに書き留める必要があります。実際のテストやインタビューであなたに役立つことがあります-彼らはしばしばあらゆる種類のトリックを尋ねるのが好きです。そして最後に、テストには実際に役立つポイントがあります。



しかし、後で覚えやすいように、どこで獲得した知識を書き留めますか? IronBrainが助けになります。はい、チケットに基づいてチケットを作成します。一見奇妙に見えるかもしれませんが、それはごく普通のことです。問題に対するビジョンと理解をチケットに入れます。繰り返しますが、テストから質問と回答をコピーすることはできません。自分で調べ、確認し、考え直し、リメイクしてチケットを作成する必要があります。各IronBrainユーザーは、独自のチケットのコレクションを作成できます。それはノートのようなものです-あなたは他の誰かのものを使用することはできません。



アルゴリズムは大きく異なります。テストは本やビデオのコースではありません。構造はありません。そこですべてがランダムに混合され、これを階層に減らすことは意味がありません。[+チケット]メニューをクリックして、独立したチケットを作成します。ただし、少なくとも1つの領域に添付することを忘れないでください。



理論的には、このアプローチは、あらゆるトピックに関するほぼすべてのテストの準備に使用できます。または、テストから有用で実用的な情報を抽出します(ある場合)。



ソースコードのフラグメントを保存する



I前に長い時間がHabréの公表CodePasterについての記事を私自身はこのプログラムを長い間使用していましたが、最終的にはIBで通常の検索を行ったときにスコアを記録しました。はい、コードフラグメントはチケットとして保存することもできます。また、作業の一般的なロジックまたは特定のメソッドに従って、質問のリストを一部のフラグメントにスローします。ところで、これは、検索を使用するときに本当に役立ちます-質問のリストはこのコードが何をするかを説明しています。つまり コードフラグメントは単純にチケットとして追加でき、テストとして実行するのではなく、検索によってのみ見つけることができます。



スーパーインタビュー準備[仮定]



あなたがモバイルアプリケーションプログラマであるとします。あなたは本からJava SEを学び、それのためにたくさんのチケットを作りました。ビデオコースでアンドロイドを勉強し、チケットも作成しました。次に、VPSサーバーを上げて、実用的なLinuxの多くの知識を得ました。ほとんどの管理上の問題を検索エンジンとサードパーティのサイトで解決しました。また、このすべての知識をチケットに変えました。その後、Android向けに「自分で」プロジェクトを行いました。開発プロセス中に、JavaとAndroidの両方で、書籍やコースに書かれていない多くのことに出会いました。また、チケットでこれらの実用的なスキルをすべて上回りました。作成した各チケットは、何らかの方法で、直接的または間接的にあらゆるエリアに含まれていました。その後、Linuxコースに行って、多くの興味深いことを教えてくれました。自宅でチェックしてチケットを追い越しました。次に、ハブでGitについての興味深い記事をいくつか読んで、自分自身に何かを書きました-新しいチケットをいくつか。



結論として、次のIB領域(Java SE、Android、Linux、Git)があり、各領域にチケットがあります。領域が交差する場合があります-チケットが両方の領域からの固有の知識に影響する場合。あなたは空席を見て、あなたの知識にほぼ対応する空席を見つけます。例えば、あるMobileMegaSoft会社の空席です。



これらすべての領域を含むIB方向を作成し、MobileMegaSoft方向と呼びます。これ以降、これらのエリアに以前作成して含めたすべてのチケットが含まれます。そして最も重要なことは、現在覚えているチケットの割合を計算し、忘れた可能性が高いチケットをカットすることもできます。たとえば、数週間、毎日数時間、チケットをカットして実行し、あなたの経験と、本で読んだものやコースで聞いたものを記憶することができます。この知識はすべてあなたの頭の中で組み合わされ、さらに、繰り返しの間に、多くのものと新しいアイデア、泥だらけのように見えたものを理解するのに異なる見方をします。古い結論を繰り返して、新しい結論を導き出し、新しい知識を得ることができます。何も言わないその繰り返しが学習の母です。 IronBrainを使用すると、特定のトピックについて長年にわたって蓄積したすべての知識を「空中に浮かぶ」ことができます。



したがって、面接の準備はほぼ完璧です。少なくとも理論的にはそのようにすべきです。私はまだ大企業の学生ではないので、小さな仕事をしました。ですから、私がIBを通じて準備していたので、彼らが私をそのようなクールな会社に連れて行ったとは言えません。たぶん数年のうちに、私が卒業したら、それをしようとします。



広範な知識を必要とする仕事[仮定]



あなたの知識が空港の飛行機だと想像してください。長期間使用しないと、アイドルアイドル状態になり、最終的に使用できなくなります。突然、艦隊全体を空中に保つ必要がありますか?従来のアプローチでは、これには多くの労力と労力が必要です...



理論的および実践的な知識はすべて、チケットの形で分解できます。この知識の源泉は関係ありません-誰かが教えてくれた、あなたは本から学んだ、自分でそれに到達した、またはいくつかのフォーラムで読んだ。簡単な例を挙げます。ITプロフェッショナルは常に多くのことを知る必要があります。そして、ここでIBはあなたを大きく助けることができます。プログラマーとして働いている場合、原則として大規模なテクノロジースタックを扱っています。また、テクノロジーごとに、IBエリアを作成し、作業に必要なすべてのエリアを収集するIB方向を作成できます。したがって、作業に必要な知識を含む多くのチケットの概要を説明します。はい、この知識は冗長である可能性があり、繰り返されるすべての知識の10%しか使用できません。しかし、この冗長性は避けられない自然なものです。 3つのライブラリから適切な選択を行うには、プログラマは少なくとも基本レベルで3つのライブラリすべてを知っている必要があります。そして、あなたが知っているように、選択の間違いは高価になる可能性があります。



IronBrainを使用すると、一定の知識を常に「空中」に維持できます。スライス機能を使用すると、特定のチケットセットからランダムに選択できますが、覚えていないチケットから選択できます。そして、各チケットに回答するとき-いつ、1日おき、1か月おき、1年おきなど、いつ思い出すかを選択します。確かに、私自身がIB Developerエリアを作成し、Java SE、Tomcat、HTML、JS、CSS、およびLinuxのエリアを含めました。何か新しいことを学んだら、関連するエリアにチケットを追加します。しかし、これまでのところ、私はこの切断技術を冷静に適用することができず、それがあなたに役立つかどうかを言うことを想定していません。できれば-それについて書いてください。 IronBrainにはベータ機能がありますが、これはそのうちの1つです。



弁護士の仕事には非常に多くの理論の知識が関係していると聞きましたが、仕事の成功はこのボリュームに直接依存しています。 IronBrainは、法科学の研究やこの分野での作業に非常に効果的に使用できると想定しています。しかし、これもまた仮定であり、私は間違っている可能性があります。現時点では、この方向でIBを効果的に使用した友人はいません。私は医学についても同様の仮定を立てます...



技術的な実装



私は、IBサーバー側にJava VS PHPを選択することを非常に長い間考えていました。この基本的なホリバーは、Office VS Freelanceのように、私の中では解決されておらず、解決されない可能性があります。まあ、大学で勉強を終えて、両方向で完全に自分を試してみる場合を除いて。私はJava側を選択しようとし、それに基づいて将来のキャリアを築きますが、正しい決定を下したかどうかはわかりません。 PHPは、Javaにはないフリーランスの素晴らしい機会を開くように思えます。たぶん、PHPを選択する必要があります。しかし、私は適切なレベルでJavaを知っていて、サーバー側にこのプラットフォームを選択しました。



IBはJava / Spring / Hibernateに基づいています。これは非常に頻繁に使用される古典的なスタックです。約2週間で、SpringとHibernateの基本を学びました。これらは非常に複雑な産業技術であり、私はそれらをどこでも普通に実践する時間と機会を持っていなかったので、おそらく、それは建築だけでなく、枠がいっぱいです。それらを研究するには、企業で理論と実践の両方の作業に数年かかります。厳密に判断しないでください。



Webプログラマーの友人からサイトのソースコードを開いて、すべてが曲がっていて斜めになっている方法を言うという伝統がありました。基本的に最初のWebサイトをリリースしたので、フロントエンドが構築されていることを理解しています。おそらく、Webプログラマの友人のフロントエンドよりもさらに悪いでしょう。 HTML / CSS / JSは、個別の学習と骨の折れる作業が必要です。私は、クライアントよりもサーバー側を専門としています。たぶん、GWTのようなライブラリを使用するか、少なくともAngularJSを接続する必要があります。しかし、私は従来のHTML / CSS / JS + JQueryでシンクライアントを実行しました。アーキテクチャ的には、コードはひどいですが、開発を始めたとき、どのように変更するのかわかりませんでした。



JIronBrainは、Java / Swingインターフェースを備えたデスクトップアプリケーションとしてリリースできます。その場合、コードの最後まで到達することははるかに困難ですが、プログラムはWebアプリケーションの大きなメリットを享受できなかったでしょう。したがって、私はその基盤をウェブ上に置いた。



可能性としては、WIronBrainの現在の実装は、クライアント上で最良のアーキテクチャを持たず、以前のすべての実装よりも優れた機能を発揮します。 HTML5は、contenteditableプロパティからWebソケットのサポートまで、素晴らしい可能性を与えてくれました。繰り返しますが、IronBrainの現在のバージョンはベータ版ですが、正しく使用すれば正常に動作し、トレーニングに既に使用できます。



MySQLはDBMSとして使用され、すべてのデータがそこに保存されます。非常に興味深い事実-ソースコードには、SQLで記述された1行はありません。データベースに関するすべての作業はORM Hibernateレイヤーを経由しますが、これは確かに非常に便利です。したがって、プロジェクトは特定のDBMSに関連付けられておらず、理論的には、任意のリレーショナルDBMSで使用できます。また、サーバー自体はDebianを実行する予算のVPSで調達されました。



おわりに



記事が大きくなった場合は謝罪します。IBに関連するすべてを最大限に活用したかっただけです。ところで、私は長い間この記事を書きたいと思っていました...



システムソースコードは完全にオープンで、GitHub利用可能です



あなたの人生の任意の領域にIronBrainを使用するために起こる場合は、上で詳細に私にあなたの物語を送るようにしてくださいkciray8@gmail.com。これは匿名で行うことも、公開しないことを示すこともできます。しかし、いずれにしても、私はどんなフィードバックにも喜んでいます。



さらに、私があなたの個人的なトレーニングシステム、あなたがどのように勉強するか、どのような方法などについて聞くのは非常に興味深いでしょう。書いてください...



敬具、ヤロスラフ別名KciRay



更新:

アイデアは全体として非常に好評で、特に多くの好意的なレビューがメールで送信されました。ありがとうございました。アイデアとシステムを徐々に発展させていきます。

ハブでの3日間の公開により、約4,000のユニークアクセスと約200の登録がシステムにもたらされました。

興味深い事実は、ironbrain.orgサーバーがクラッシュしたことがなく、サイトがまったく減速せず、habraeffectに正常に耐えたことです。



All Articles