絞り込み

最新の投稿

ガジェット/ハードウェア Polygon
ガジェット/ハードウェア

~こんな時代もありました~ノートPCのCPU交換

現代のノートPCは高性能化が進むとともにそのロジックボードはSoCと化すことが多くなっている.CPUはロジックボードにはんだ付けされ,交換は容易ではない. 2013年前後までのノートPC,Intel Core iシリーズで言うと第4世代までのCPUを搭載したノートPCでは交換可能なCPUを搭載した機種もある.IntelのCPUの場合は末尾にMが付くCPUがそれである.例えばIntel Core i7-2670QMやIntel Core i5-3230Mなどである. 本記事では,Intel Celeron B720(1コア1スレッド1.7GHz)のもっさりPCのCPUをIntel Core i7-2670QM(4コア8スレッド2.2GHz,TB3.1GHz)に交換して高速化を図ろうとした備忘録を記す. 先程,ざっくりした説明でCPUが交換できるのかの基準を設けたが,実際はもう少し詳しく考える必要がある. 第一にソケットである.多くの場合LGA・PGAタイプのソケットタイプのCPUは交換可能になっている. LGAタイプのソケットは,ピンの上にCPUを載せる方式で,PGAタイプのソケットは穴にCPUのピンを差し込む方式である.ソケットの種類はIntel公式ページなどで確認することが出来る.例えば,Intel Celeron B720の場合は次のようになっている. →https://ark.intel.com/content/www/jp/ja/ark/products/63920/intel-celeron-processor-b720-1-5m-cache-1-70-ghz.html ここには記載はないが,Intel Celeron B720のソケットはPGA988である. Intel Core i7-2670QMのソケットはFCPGA988と記載されているが,FCは読み飛ばしても大丈夫(実害はなかった)なので,PGA988ソケットである. 第二に世代である.ソケットこそ同じだが互換性がない場合も考えられる.Intel Core iシリーズの第2世代Sandy Bridgeと第3世代Ivy Bridgeはよく似ているが,完全な互換性はない(BIOSアップデートなので対応されることもあるが).そのため世代が変わるような交換は行わないのが無難である.Intel Celeron B720の開発コードはSandy Bridgeであり,Intel Core iシリーズで言うと同じ世代のCPUになるので交換可能と考えることが出来る. 第三にチップセットである. パソコンに搭載または繋がれている機器の橋渡しをする役割があるパーツで,ロジックボードにハンダ付けされているが,チップセットによっては高性能なCPUをサポートしていないことがあり,交換後のCPUで安定して動作しないという事例が存在する.今回は下位モデルのPCをアップグレードするため,注意が必要な部分である.事前に公式の対応リストを確認したり,上位モデルが採用しているチップセットと同じかどうかを確認すべきである.今回は上位モデルと同じチップセットを採用しているため,問題ないと判断した. 交換前にBIOSのアップデートも行っておくと良いだろう. 問題がないことを確認したら,実際にCPUを交換していく.次のようなものを用意しておこう.交換するCPU精密ドライバ外したネジをまとめておく箱塗り替えるCPUグリス(シリコングリスではないもの)アルコール(無水アルコールが望ましい)かグリスクリーナーBAN いきなり全分解後の写真であるが,分解方法は機種によって異なるし,頑張れとしか言いようがないのですべて省く.CPUのヒートシンクを外して,CPUとご対面できたら,マイナスドライバでCPUのロックを外す.上に持ち上げてCPUを交換して,新しいグリスを塗ってヒートシンクを戻す.このヒートシンクは予めアルコールかグリスクリーナーで清掃しておこう.元通りに組み立てて完成である.次の写真のようにOS上での表示が変わった.晴れてスペックアップ完了である. CPUが1コアから4コア8スレッドに大幅に性能アップが期待されたが,HDDが足を引っ張ってしまい,もっさり感を完全に解消するには至らなかった.Windows 10やMacOS10.15などがそうだが,近年のOSはディスクを使用しすぎている気がするので,もう少しディスク使用率を低減する動作にしてほしいものである. 昔の動画ですが,やってることは同じなので載せておきます.

> 内容を見る

プログラミング Polygon
プログラミング

後編:Kotlinの批評をしてみた~不満編~

こんにちは、オキリョウと申します! 前回の記事ではKotlinを学習するメリットについて書かせていただきました。 しかし、メリットばっかり書くのはあまりよろしくないように感じます。 そこで今回は、私がKotlinを学ぶ上で感じた不満等について書いていきたいと思います。 *前回の記事も合わせて読まないと偏った考え方を持ってしまう可能性があります。気をつけてください  1.   プログラムを初めて学ぶ人には敷居が高いそもそもKotlinはJavaの後釜となるべく作られた言語です。なので、Kotlinを勉強する人の大半はJavaも勉強したことある人です。 それに伴ってKotlinの入門記事はjava等の他の言語を勉強していることが前提のものが多いです。 実際に前回紹介したKotlin Koansも初めてプログラミングを触る人にとってはかなり難易度の高いものとなっています。 実際に私も最初にKoansをやって挫折しかけました。 もしKotlinから学びたいという人はAndroidの入門記事などで勉強したほうがいいかもしれません。また、Kotlinを知っている人に聞いて回るのも手だと思います。  2.   新しすぎるKotlinは2011年にできた言語です。しかし、実際に注目を浴びたのは、googleがKotlinをandroid用の言語として正式に採用した2017年です。ですので、Android開発に関しては実質3年分の情報しかありません。 そのため、Androidのアプリを組む際には、Javaで書かれたコードを参照することもよくあります。 Androidはましな方です。 例えばデスクトップ用アプリを作る際に使う「Compose for Desktop」は発表されてからまだ半年すら経っていません。完全に情報不足です。 従って、実際に組むときはかなり試行錯誤する必要があります。  3.   気軽にスクリプトを書くことはできないKotlinは静的言語ですので、毎回コンパイルが必要になります。しっかりしたアプリを作るうえでは非常に心強いですが、簡単なスクリプトを書こうとしたときには逆に障害になります。 例えばパソコンの自動化をしたい!となったときです。Pythonだとファイルにコードを数十行も書けば実現可能です。コンパイルとかも必要なく、長くても1時間あれば完成するでしょう。 しかしKotlinでそれをしようとするとそれこそ「Compose for Desktop」を使ってアプリを作ることになると思います。勉強時間等を兼ねて大体1週間くらいかかるでしょう。もちろんクオリティはいいものになるとは思いますが・・・ このように、Kotlinで何かを作るとなると腰を据える必要があります。  まとめKotlinはその性質上、初心者には厳しい言語と言えます。また、比較的新しい言語でまだまだ発展途上です。そのため情報不足なところが多いです。気軽に何でもKotlinで・・・とはいきづらいところがあります。 しかし、それらに目をつぶってもいいような魅力がKotlinにはあります。勉強する価値も十分にあります。皆さんもぜひ、Kotlinを勉強してみてください!そしてもっと情報を増やしてください。

> 内容を見る

プログラミング Polygon
プログラミング

前編:Kotlinの批評をしてみた~メリット編~

こんにちは、オキリョウと申します! 私はプログラミング言語のひとつである「Kotlin」に非常に思い入れがあります。 最初に作ったアプリはKotlinで書きましたし、Qiitaに書いた記事も全部Kotlinが絡んでいます。 そこで、そんなKotlinを2回に分けて布教批評していきたいと思います。何番煎じだという感じですが、自分なりの目線で書くので読んでいってください。   今回はKotlinを勉強するメリットについて書いていきたいと思います。  1.   スマートに書けるKotlinの文法の特徴として簡潔に、分かりやすく書けるというものがあります。以下のコードを見てください。fun main(){    for(i in 1..20){        when{            i % 15 == 0 -> println("FizzBuzz")            i % 3 == 0 -> println("Fizz")            i % 5 == 0 -> println("Buzz")            else -> println(i)        }    } } よくあるFizzBuzz問題の回答をKotlinで書いてみました。どうですか?簡潔で美しく感じませんか?   このコードも見てくださいfun match(data1: String, data2:String?): String{     data2?.let{ it ->         return if(data1 == it){             "Match"         }else{             "Not Match"         }     }     return "data2 is null" }こちらは2つのデータが同じかどうかを確認する関数ですね。また、片方の引数はnullableです。 そもそもKotlinはnull安全を採用しているので、いちいちnullかどうかで処理を書く苦労を減らすことが出来ます。また、nullチェックをするときでも2行目のように書いてやればスマートに書けます。 Return文もKotlinならではの書き方です。Kotlinのifはそれ自体が式なので、このように書いてやるだけできっちり処理してくれます。 こんな感じでKotlinを使うことでかなりスマートに書くことが出来ます。他にもスマートに書くための様々な文法があります。ぜひ一度調べてみてください。 ちなみに私はdata classが一番気に入っています。  2.   なんでも書けるKotlinなら何でも書けます。マジで何でも書けます。 KotlinはAndroidアプリしか書けないと考えている人もいるでしょう。しかし、そうではありません。 バックエンドからフロントエンド、デスクトップ用のアプリ、さらにはIOSアプリまで書くことが出来ます。 一つ勉強すれば全部書くことが出来るというのは結構魅了的なことだと思いませんか?  3.   響きがいいこう、Kotlinと言われるとかわいらしい感じがしますよね?それだけで勉強していく価値は十分にあります。 ちなみにKotlinというのはフィンランド語で「やかん」の意味ですので、小鳥とは全く関係ありません。が、公式が用意しているKotlin例題集「Kotlin Koans」は、日本語の「公案」から来ているそうです。親しみがわきますね! ↑昔のロゴ  まとめKotlinを使うことで、スマートなプログラムを簡単に書くことが出来ます。また、Kotlinであればできないことはほぼありません。 ちなみにですが、聞いた話によるとAndroid開発者は人材不足らしいです。つまりKotlinを勉強しておけば就職にも優位に働くかもしれません。 皆さんもKotlinを勉強して素晴らしいプログラミングライフを過ごしましょう!

> 内容を見る

プログラミング Polygon
プログラミング

初心者にこそ勧めたい競プロの世界

こんにちは。日々競技プログラミングの精進を重ねている、終に鮭といいます。 皆さん、プログラミングしてますか?あるいは興味がありますか? ――結構。プログラミングを始めたい/上達したいという方々におすすめのコンテンツがあります。それが 競技プログラミング です。競技プログラミングとは競技プログラミングは、オンラインゲームです! 1 2 3 4 5 これは割とマジなんですけど、もう少し真面目な説明をします。課題が与えられ、与えられた条件を満たすプログラムを書き、ソースコードをジャッジする、というものです。 解答を出すまでの速さを競ったり、多項式時間で解けない問題に対する近似精度を競ったり、コードの短さを競ったりします。AtCoderでは主に解答を出すまでの速さを競います(内々でコードゴルフしてる人もいたりするんですが、ここでは置いておく)。 で、オンラインゲーム要素なんですが、AtCoderではコンテストに出るとレーティングが付きます。Twitterで「青色になりました!」等と言いながら謎のグラフを上げてるアレです。 6 みんなアレをモチベに(ほんまか?)コンテストに参加してるんですね。なんならAtCoder Jobsで就活、インターン、バイトを有利に進められたりします。あくまで娯楽なんですけど。娯楽?プログラミングは娯楽ですよ。何言ってるんですか。……まあすべての人がそう思うわけではないんでしょうが。プログラミングを道具にパズルを解いてるみたいな感じで面白いんですけどね。競プロの強み娯楽に対してメリットを語りたくはないんですが、一応。アルゴリズムが身につく実装前から計算量がわかる 何よりもこれらですね。競プロをすると一般人(情報系学生等を除く)が一生学ぶことのないであろうアルゴリズムやデータ構造を学ぶ機会が得られます。いいですね。例えばDijkstra法とか、Segment Treeとか。大抵の人は普通にプログラミングしてても多分使わないでしょうし。 そして競プロにおいては計算量をオーダーで測ります。誤解されがちなのですが、(ほとんどの言語では)どこまでもチューニングして速くするわけではなく、定数倍の差は無視することがほとんどです。Pythonなんかはもとが遅すぎるので別ですが。 とにかく、プログラミングの抽象的な部分を深く学ぶことができます。みんなもアルゴリズムを勉強して、競プロをやろうね! ---- 1 chokudai(高橋 直大)🍆さんはTwitterを使っています 「ちなみに今はインターネットに普通に繋がるのでAtCoderってオンラインゲームがおすすめです。」 / Twitter https://twitter.com/chokudai/status/1244638270736097284 2 こたつがめさんはTwitterを使っています 「steamサマーセールってほんと!?僕もAtCoderっていうオンラインゲーム毎日10時間やってます」 / Twitter https://twitter.com/kotatsugame_t/status/1143844015176990721 3 prd🦍さんはTwitterを使っています 「少し宣伝。 我々はAtCoderというオンラインゲームを普段やっています。完全無料! ジャンルは競技プログラミングといって、いかに多くの問題にいかに早く正解できるかを競うゲームです。 プログラミングに興味がある人、力を試したい人、楽しく学びたい人、全てにおすすめです https://t.co/o0wpAOJKnR」 / Twitter https://twitter.com/prd_xxx/status/1044190250375888897 4 keymoonさんはTwitterを使っています 「基本無料オンラインゲームであるところのAtCoder」 / Twitter https://twitter.com/kymn_/status/1016531797792813056 5 kumakumaaaaaさんはTwitterを使っています 「趣味は競プロって言うと引かれることが多いので、競プロをバトルロイヤル形式のオンラインゲームと呼んでいる」 / Twitter https://twitter.com/kumakumaaaaa__/status/1338730125697814528 6 .終に鮭さんはTwitterを使っています 「入水しました!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! https://t.co/HnHiZ2dkJg」 / Twitter https://twitter.com/AAAR_Salmon/status/1363125630049525763

> 内容を見る

NoImage Polygon
電子工作

無線給電 補章

補章 結合係数の導出結合係数kの測定方法として、相互インダクタンスMからの導出法がある。 それでは、実際に導出を行っていこう。   一次側コイルと抵抗をつないだ回路に電源$$E_{1}=E \sin \omega t$$を接続したとする。 すると回路方程式はフェーザを用いて以下のようになることは明白だろう。   $$\dot I = \frac{\dot E}{\dot Z}=\frac{E}{\sqrt{2}\sqrt{R^{2}+(\omega L_{1})^{2}}}e^{-j\phi}$$  ここで、 φはインピーダンス偏角であるので、以下の通り。   $$\phi=\tan^{-1}(\frac{\omega L_{1}}{R})$$  つまり、i1は瞬時値を考えて以下を得る。   $$i_{1}=\sqrt{2}IM(\dot I e^{j\omega t})=\frac{E}{\sqrt{R^{2}+(\omega L_{1})^{2}}}\sin(\omega t-\phi)$$    二次側は開放しているので相互インダクタンスの影響しか現れないことを考えると、二次側電圧 は以下を得る。この際、二次側に電流が流れないのでコイルの抵抗による電圧降下は無視できることに注意したい。   $$v=M\frac{di_{1}}{dt}=M\frac{d}{dt}{\frac{E}{\sqrt{R^{2}+(\omega L_{1})^{2}}}\sin(\omega t-\phi)}$$  すなわち、                                                                                $$v=\frac{\omega ME}{\sqrt{R^{2}+(\omega L_{1})^{2}}}\cos(\omega t-\phi)$$      これで二次側電圧と相互インダクタンスの関係式が導かれた。 二次側電圧vのピーク電圧をvmaxとすると以下のように三角関数成分を消すことができる。   $$v_{max}=\frac{\omega ME}{\sqrt{R^{2}+(\omega L_{1})^{2}}}$$  それではMの式を導こう。先に示した式を変形して以下を得る。   $$M=\frac{\sqrt{R^{2}+(\omega L_{1})^{2}}}{\omega E}v_{max}=\frac{\sqrt{R^{2}+(2\pi fL_{1})^{2}}}{2\pi fE}v_{max}$$  つまり、結合係数kは以下で求めることができる。   $$k=\frac{M}{\sqrt{L_{1}L_{2}}}=\frac{\sqrt{R^{2}+(2\pi fL_{1})^{2}}}{2\pi fE\sqrt{L_{1}L_{2}}}v_{max}=\frac{\sqrt{R^{2}+(2\pi fL)^{2}}}{2\pi fEL}v_{max}$$  ここからはさらに変形を行っていこう。まずはωを含む式にkを変形する。   $$k=\frac{\sqrt{R^{2}+(\omega L)^{2}}}{\omega EL}v_{max}$$  ωL=RQであることを考えて以下を得る。(Q値の導出を参考)   $$k=\frac{\sqrt{R^{2}+(RQ)^{2}}}{RQE}v_{max}=\sqrt{\frac{R^{2}(1+Q^{2})}{(RQE)^{2}}}v_{max}=\frac{\sqrt{1+Q^{2}}}{QE}v_{max}$$  ここで、Q>>1であるならばQ>0より以下を得る。   $$k=\frac{\sqrt{Q^{2}}}{QE}v_{max}=\frac{v_{max}}{E}$$  すなわち、Q>>1であるならば結合係数は近似的に入出力ピーク電圧の比で与えられる。

> 内容を見る

電子工作 Polygon
電子工作

無線給電 第四章

第四章 電界結合方式電界結合の等価回路を以下に示す。なお、電極間で形成されるキャパシタンスをそれぞれC1、C2 (一般に$C_{1}=C_{2}$)、相互キャパシタンスをCmとしている。 図から、C1-Cm(C2-Cm)は漏れキャパシタンスとみなすことができる。また、相互キャパシタンスCmが大きいほど二次側に電圧を伝達しやすく成り、大きな電力を伝送することができることがわかる。相互キャパシタンスは電極面積を大きくしたり、電極間距離を小さくすることで改善することが可能であるが、どれも現実的にはある程度の制約が存在する。また、電極間に形成される容量は極めて小さな値である(試作電極板で200pF以下)から、これを超えて電力伝送するには大きな電圧や高い周波数が必要となる。 これを解決するために直列にインダクタを入れて共振させる方法(直列共振法)や、並列にキャパシタやトランスを入れることにより外部回路で共振系を構成する方法(並列共振法)などもあるが、電界結合方式自体が電磁誘導方式に対してマイナーであるため先行事例が少ない。故に、個人で電界結合を用いてワイヤレス給電を行ったという記録もほとんど確認されない(電磁誘導方式ならいくつも見つかるのだが)。しかし、1W程度なら個人実験レベルでも簡単に伝送することができる。図に示すのは私が実際に構築した電界結合方式の無線送電システムである。電極は中央に写っている200mm×100mm×5.5mmのMDFに貼り付けた銅箔であり、電極に限って言えば極めて軽量、低発熱である。 スペックを簡単に示す。   ・電源電圧 12V ・送電電力 1W(二次側負荷100Ω時) ・周波数 580kHz ・効率 30%(DC to AC) ・最大伝送距離 6mm   高周波トランスは自作したものであるから、効率は更に向上させることができると考えられる。1W伝送時の負荷は100Ω抵抗であったが、図の通り負荷としてRE-280モータをつないでも十分に動作する(この場合はFRDで半波整流して適当な平滑コンデンサを接続した)。これを見ても分かる通り、電界結合方式というのは案外簡単に実現できるのだ。しかし、効率や手軽さ、システムの大きさといった点では電磁誘導方式に負けているため、まだまだ改善が必要である。なお、次の目標は水中での1W伝送である。

> 内容を見る