はてなキーワード: swapとは
/* 400 (Regular) */ @font-face { font-family: "SiteSans"; /* ページで使う一意の名前 */ font-style: normal; font-weight: 400; font-display: swap; src: /* まず Noto のローカル名を列挙(見つかればそれを優先)*/ local("Noto Sans JP"), local("NotoSansJP"), local("Noto Sans"), local("NotoSans"), /* 次に Apple のヒラギノ系ローカル名を列挙(Mac/iPhone にあることが多い)*/ local("Hiragino Kaku Gothic ProN"), local("Hiragino Kaku Gothic Pro"), local("ヒラギノ角ゴ ProN"), local("ヒラギノ角ゴ Pro"), /* 最後にサーバー上の woff2(フォールバック) */ url("/fonts/NotoSansJP-Regular.woff2") format("woff2"); } /* 700 (Bold) */ @font-face { font-family: "SiteSans"; font-style: normal; font-weight: 700; font-display: swap; src: /* Noto Bold のローカル名 */ local("Noto Sans JP Bold"), local("NotoSansJP-Bold"), local("Noto Sans Bold"), local("NotoSans-Bold"), /* ヒラギノ Bold のローカル名(Macに存在する場合)*/ local("Hiragino Kaku Gothic ProN W6"), local("Hiragino Kaku Gothic Pro W6"), local("ヒラギノ角ゴ ProN W6"), local("ヒラギノ角ゴ Pro W6"), /* サーバーフォールバック(woff2) */ url("/fonts/NotoSansJP-Bold.woff2") format("woff2"); } 使用例 html, body { font-family: "SiteSans", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", "メイリオ", "Yu Gothic", "YuGothic", "YuGothicUI", "Noto Sans JP", sans-serif; font-weight: 400; } ふといなら strong{ font-weight: 700; }
→ Noto ローカルで軽くて綺麗
▼ 古いWindows / ほか
→ Webフォントで補完。もはや必要あるのか?游ゴだかメイリオでいいのかも
KVはともかく、本文とか見出し、これ良くないですか?
The Power of Small Steps: How Tiny Changes Can Lead to Massive Growth
In a world that glorifies overnight success and dramatic transformations, it's easy to feel like you’re falling behind if you’re not making big leaps. But what if the secret to real, lasting personal growth wasn’t in doing more, faster—but in doing less, consistently?
Welcome to the power of small steps.
Big goals often feel overwhelming. You want to get fit, write a book, start a business, or learn a new skill—but you don’t know where to start. So you procrastinate. Or worse, you dive in too fast, burn out, and give up.
Small steps bypass all of that.
When you break down a huge goal into manageable actions, everything changes. Writing 500 words a day is less intimidating than finishing a whole novel. Ten minutes of walking is more doable than committing to a 5K. And spending 15 minutes a day learning a language adds up to over 90 hours a year.
Consistency beats intensity every time.
The Compound Effect
Imagine improving just 1% every day. That might sound insignificant—but over a year, it compounds into something extraordinary. This idea is the foundation of Darren Hardy’s The Compound Effect and James Clear’s Atomic Habits. Both books emphasize that small, smart choices, repeated over time, lead to radical results.
Think of your habits like planting seeds. At first, nothing seems to happen. But give it time, and you’ll see growth you never thought possible.
Real-Life Example: The 10-Minute Rule
Let’s say you want to start meditating but can’t sit still for 30 minutes. Instead of forcing it, try meditating for just 10 minutes a day. Or even 5. Build the habit before scaling the effort. Once it becomes part of your routine, extending the time feels natural.
This applies to nearly everything:
Want to read more? Read one page a day.
Want to save money? Start with $1 a day.
Want to eat healthier? Swap one snack a day for a better option.
How to Start Taking Small Steps
Pick one goal
Don’t try to overhaul your entire life at once. Choose one area to focus on—health, creativity, relationships, mindset, etc.
Break it down
What’s the smallest possible action you could take toward that goal? Make it so easy you can’t say no.
Link your new habit to an existing one. For example: “After I brush my teeth, I’ll journal for 5 minutes.”
Track it
Use a habit tracker, app, or notebook to keep yourself accountable. Seeing your streak grow is highly motivating.
Every time you follow through, give yourself credit. Progress is progress, no matter how small.
Final Thoughts
Don’t wait for motivation. Don’t wait for the perfect time. Just start—with whatever you have, wherever you are, and however small.
Because small steps, taken consistently, turn into big change.
日中の生産性は、夜の過ごし方、特に「就寝」というクリティカルなタスクをいかに成功させるかにかかっている。本記事では、つい夜更かししてしまうエンジニアのために、早寝を「技術」として体系化し、再現性のある形で実践するための具体的な手法を探求する。これは精神論ではない。あなたのQoLと生産性を向上させるための、実践的なスリープエンジニアリングだ。
我々エンジニアにとって、夜は不思議な魅力を持つ時間だ。日中の喧騒から解放され、思考は冴えわたり、ゾーンに入りやすい。しかし、その魅力的な時間は、往々にして「早寝」という、人間の生存に不可欠な基本プロセスを犠牲にすることで成り立っている。
「リファクタリングが楽しくなってきた」
これらの探求心はエンジニアの美徳であるが、同時に我々を「睡眠負債」という深刻な技術的負債へと導く。本稿は、この負債を返済し、持続可能な開発(と生活)を実現するための「早寝」という技術に焦点を当てる。
早寝を実装する前に、まずは現状のアーキテクチャに潜むアンチパターンを特定しよう。
就寝前のスマートフォンは、まさに同期的なブロッキングI/Oだ。SNSの無限スクロール、動画プラットフォームの自動再生、チャットアプリの通知。これらは我々の意識というシングルスレッドを完全に占有し、本来実行されるべきsleep()プロセスへの遷移を妨げる。
深夜まで続くコーディングや問題解決は、脳を極度の興奮状態にする。ベッドに入っても、アドレナリンやコルチゾールといったホルモンがCacheに残り続け、CPUがクールダウンしない。shutdown -h nowを叩いても、プロセスが終了しないのだ。
「夜更かしの供」として注入されるカフェインやアルコールは、一見するとパフォーマンスを向上させるように見える。しかし、これらは睡眠の質という重要なmetricsを著しく劣化させる、誤った依存関係だ。特にアルコールは、入眠を助けるように見えて、実はレム睡眠を阻害し、睡眠のアーキテクチャ全体を不安定にする。
不規則な就寝・起床時間は、体内時計という最も重要なCronジョブを破壊する。毎日異なる時間に実行されるジョブが安定した結果をもたらさないのと同様に、不規則な睡眠スケジュールは、日中のパフォーマンスを予測不可能なものにする。
では、どうすればこれらのアンチパターンを排除し、安定した早寝pipelineを構築できるのか。ここではSleep as Codeの概念に基づき、具体的なプラクティスを紹介する。
毎晩、同じ手順で就寝プロセスを実行することで、入眠を自動化する。
- PC/スマホのシャットダウン: 最も重要なステップ。物理的に電源を落とすか、手の届かない場所(別のコンテナ)にdeployする。
- 入浴: 38〜40℃のぬるめのお湯に15分ほど浸かる。これにより深部体温が一時的に上昇し、その後の下降とともに入眠が促される。これはHot-swapならぬHot-bathによるクールダウンだ。
静的コンテンツの消費: 激しい思考を伴わない、静的な情報(紙の読書など)に切り替える。電子書籍ではなく、紙媒体が望ましい。
ストレッチ: 軽いストレッチで、日中のcommitで固まった体をreleaseする。
すべての準備が整ったら、ベッドという本番環境にデプロイする。余計な思考はgit clean -fdで強制削除し、呼吸に集中する。
例:「夕食後のコーヒーが原因だった」→「カフェインの摂取は15時までというSLAを設ける」
早寝は、単に体を休める行為ではない。日中の高いパフォーマンス、明晰な思考、そして創造性を維持するための、最も効果的で再現性の高い「技術」だ。
我々はインフラをコードで管理し、CI/CDでデプロイを自動化するように、自身の睡眠もまた、技術と工夫によってコントロールできる。今夜、あなたのwhile(true)なループをbreakし、持続可能なパフォーマンスを手に入れるための第一歩を踏み出してほしい。
Happy sleeping!
日中の生産性は、夜の過ごし方、特に「就寝」というクリティカルなタスクをいかに成功させるかにかかっている。本記事では、つい夜更かししてしまうエンジニアのために、早寝を「技術」として体系化し、再現性のある形で実践するための具体的な手法を探求する。これは精神論ではない。あなたのQoLと生産性を向上させるための、実践的なスリープエンジニアリングだ。
我々エンジニアにとって、夜は不思議な魅力を持つ時間だ。日中の喧騒から解放され、思考は冴えわたり、ゾーンに入りやすい。しかし、その魅力的な時間は、往々にして「早寝」という、人間の生存に不可欠な基本プロセスを犠牲にすることで成り立っている。
「リファクタリングが楽しくなってきた」
これらの探求心はエンジニアの美徳であるが、同時に我々を「睡眠負債」という深刻な技術的負債へと導く。本稿は、この負債を返済し、持続可能な開発(と生活)を実現するための「早寝」という技術に焦点を当てる。
早寝を実装する前に、まずは現状のアーキテクチャに潜むアンチパターンを特定しよう。
就寝前のスマートフォンは、まさに同期的なブロッキングI/Oだ。SNSの無限スクロール、動画プラットフォームの自動再生、チャットアプリの通知。これらは我々の意識というシングルスレッドを完全に占有し、本来実行されるべきsleep()プロセスへの遷移を妨げる。
深夜まで続くコーディングや問題解決は、脳を極度の興奮状態にする。ベッドに入っても、アドレナリンやコルチゾールといったホルモンがCacheに残り続け、CPUがクールダウンしない。shutdown -h nowを叩いても、プロセスが終了しないのだ。
「夜更かしの供」として注入されるカフェインやアルコールは、一見するとパフォーマンスを向上させるように見える。しかし、これらは睡眠の質という重要なmetricsを著しく劣化させる、誤った依存関係だ。特にアルコールは、入眠を助けるように見えて、実はレム睡眠を阻害し、睡眠のアーキテクチャ全体を不安定にする。
不規則な就寝・起床時間は、体内時計という最も重要なCronジョブを破壊する。毎日異なる時間に実行されるジョブが安定した結果をもたらさないのと同様に、不規則な睡眠スケジュールは、日中のパフォーマンスを予測不可能なものにする。
では、どうすればこれらのアンチパターンを排除し、安定した早寝pipelineを構築できるのか。ここではSleep as Codeの概念に基づき、具体的なプラクティスを紹介する。
毎晩、同じ手順で就寝プロセスを実行することで、入眠を自動化する。
- PC/スマホのシャットダウン: 最も重要なステップ。物理的に電源を落とすか、手の届かない場所(別のコンテナ)にdeployする。
- 入浴: 38〜40℃のぬるめのお湯に15分ほど浸かる。これにより深部体温が一時的に上昇し、その後の下降とともに入眠が促される。これはHot-swapならぬHot-bathによるクールダウンだ。
静的コンテンツの消費: 激しい思考を伴わない、静的な情報(紙の読書など)に切り替える。電子書籍ではなく、紙媒体が望ましい。
ストレッチ: 軽いストレッチで、日中のcommitで固まった体をreleaseする。
すべての準備が整ったら、ベッドという本番環境にデプロイする。余計な思考はgit clean -fdで強制削除し、呼吸に集中する。
例:「夕食後のコーヒーが原因だった」→「カフェインの摂取は15時までというSLAを設ける」
早寝は、単に体を休める行為ではない。日中の高いパフォーマンス、明晰な思考、そして創造性を維持するための、最も効果的で再現性の高い「技術」だ。
我々はインフラをコードで管理し、CI/CDでデプロイを自動化するように、自身の睡眠もまた、技術と工夫によってコントロールできる。今夜、あなたのwhile(true)なループをbreakし、持続可能なパフォーマンスを手に入れるための第一歩を踏み出してほしい。
Happy sleeping!
あー、なるほどね。「JOINが難しくて避けてるだけなんじゃね?」ってわけか。
甘い。構造わかってない奴ほどそういう浅い自己放尿をしたがる。
まず前提を修正しろ。JOINの動きなんてとっくに分かってる。
SQLの実行プラン追って、Nested LoopかHash Joinか、インデックス使うのかフルスキャンになるのか、そのあたりの判断も含めて運用設計に組み込んでる。
こっちはわかった上で避けてんだよ。JOINを理解してないから避けてるんじゃない、JOINの実コストと限界を知ってるから回避してるの。
JOINってのは便利だけど代償がでかい。たとえば、数千万件のトラフィックログに対して、ユーザー属性をJOINするとしよう。
属性テーブルが1万件程度でも、JOIN時のI/OとCPU負荷は無視できない。結合条件次第ではインデックスも効かなくなる。クエリキャッシュも効かない、結合後にさらにGROUP BYやWHERE使えばオプティマイザの想定外の地雷も踏む。
こっちはそれを全部経験済み。痛みを知ってるから最適化してる。JOINの怖さを知らない素人が、理解できない設計を「逃げ」と断じるのは自己放尿だな。
それに「JOINがわかりづらい」なんて次元じゃない。JOINなんて構文としては簡単だろ?
問題はそれを巨大なスケールで運用したときのトラブルを想定してるかどうかだ。
JOINが原因で1時間かかるクエリになって死ぬとか、JOINが原因でMySQLのtemporary table溢れてswapに突っ込んでサーバ落ちるとか、JOINが原因でインデックスの設計ミスってテーブルスキャン発生して数億件走査するとか、そういうのを踏んでから語れ。
わかりやすくしとこうか?
JOINを盲信してるのは、「地雷原を地図だけ見て走り抜けようとしてる奴」と同じ。
JOINを避けてるのは、「地雷があるの知ってるから事前に地ならししてる奴」だよ。
「難しいから避けてる」んじゃない。
危険なの知ってるから、先回りして別ルートを構築してるだけだ。
何も知らないで「逃げてる」ってレッテル貼って自己放尿するの、やめとけ。
お前のJOIN観、浅すぎて逆に危ない。
を書いてはや1年。生成AIの進歩によって凄いことになった。早々に使うのをやめてしまったStable diffusionでもface swapが簡単にできるようになった。その上、この1年でNVIDIAはドライバ更新やTensorRTによりStable diffusionを劇的に高速化した。さらに、先日リリースされたReActor extensionがやばい。その結果、とんでもなく自炊が捗ることとなった。
次の処理をスクリプト化した。
去年の手法よりも生成にやや時間がかかるものの、クオリティが比べるまでもなく高いので許容できる。当然ながら実用性の高い動画はできなかったし、生成した動画はすべて抹消したが、本当に捗っている。
来年はどうなっているんだろうか。
binance上場したらしくて一瞬価格が50%上昇とかしてた
buy backはあんまりうまく行ってないと言うか継続はしてるんだろうけどトークン価格上昇に寄与しているの感じられてなかったけど、
binance上場は結構いいねー。NEXOで利子もらってるので、価格上がるともらえるトークンの枚数が減っちゃうのがジレンマ
とにかく、まあ思ってたよりはNEXOも運営が安定してるって感じなのだろうか。運営の人がNFT買ったりとか良うわからんムーブしてるんは気になるんだけど、
現物保障が必須の貸付業務が回ってるうちは破綻しないだろう。というか構造的には間違いなく破綻しないはずなのだ、運営が資金流用とかアホなことしてない限り大丈夫だとは思うんだけど、
そこよねー。気になるのは。本当に真面目に貸金業務とかNEXOのswapとかの基本業務だけやってて欲しい感じ。
ビットコインがガッツリ値下がってるのに、資産比率10%くらいのNEXOが上昇したおかげで、資産評価額はあんまり下がらなかったのが、ヘッジが効いてて気持ちいい
バブルソートを知らないっていうのもどうかと思うけど
for(int i=0;i!=8;i++)for(int j=0;j!=8;j++)if(less(data[i],data[j])) swap(data[i],data[j]);
function pair(psns) { var i = -1; var cnt = 0; var flg = psns[0] &amp;&amp; psns[0].sex; // modified on 2018-12-31 by XXXX // var flg psns[0].sex; var j = -1; var tmp = null; // modified on 2020-12-31 by XXXX. // var k = -1; for(i = 0; i < psns.length; i++) { //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■') //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg); if(psns[i].sex == flg) { //console.log('cnt: ' + cnt + '->' + (cnt+1)); cnt++; } else { j = i - cnt + 1; // j = i - cnt; // j = i - cnt - 1; //console.log('swap ' + i + '<-->' + j); tmp = psns[j]; psns[j] = psns[i]; psns[i] = tmp; i = j - 1; // <- 理由は分からないが、i = jだと上手くいかない(by XXXX)。 cnt = 0; // flg = !flg; // これはなぜか上手くいかない (by XXXX) flg = flg == MALE ? FEMALE : MALE; while(j > 1) { if(psns[j].height < psns[j-2].height) { //console.log('swap ' + j + '<-->' + (j-2)); tmp = psns[j-2]; psns[j-2] = psns[j]; psns[j] = tmp; } j -= 2; } // modified on 2018-12-31 by XXXX. // //for(k = 0; k + 2 < j;) { // if(psns[k].height > psns[k+2].height) { // tmp = psns[k+2]; // psns[k+2] = psns[k]; // psns[k] = tmp; // } // k += 2; //} } //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg); //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■') //console.log('') } for(i = 0; i < psns.length; i++) { //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■') //j = i / 2; j = Math.floor(i / 2); //console.log(psns, 'i=' + i, 'j=' + j); tmp = psns[i]; if(!(i % 2)) { psns[j] = [null, null]; } if(tmp.sex == MALE) { psns[j][0] = tmp; psns[j][1] = psns[i+1]; } else { psns[j][0] = psns[i+1]; psns[j][1] = tmp; } // modified on 2018-12-31 by XXXX. // //psns[j][0] = tmp; //psns[j][1] = psns[i+1]; i++; //console.log(psns, 'i=' + i, 'j=' + j); //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■') } psns.splice(psns.length / 2, psns.length); // modified on 2020-12-31 by XXXX. // return psns.slice(0, psns.length / 2 + 1); // return psns.slice(0, psns.length / 2); }
プログラミングはセンスです。センスの無い人がプログラマになると、他のすべての人に迷惑がかかります。だから、センスの無い人は絶対にプログラマにならないで下さい。
プログラミングのセンスが無い人や、プログラミングをやったことの無い人は、知識を得たり経験を積んだりすれば、誰でも「良いプログラマ」になれると思っているようですが、無理です。
というのも、センスの無いプログラマの問題は、知識や経験の不足ではないからです。センスの無いプログラマの救いようの無い問題は「頭がおかしいこと」なのです。
題材は何でもいいのですが、具体的なコードを見た方がイメージがつきやすいと思いますので、とりあえず以下の問題を考えます。
住民のリストが与えられるので、背の低い順に男女ペアにしたリストを作って下さい。ただし、男女の数は同数であるとします。
const makePair = (persons) => { const males = persons.filter(person => person.sex === MALE) const females = persons.filter(person => person.sex === FEMALE) const compareHeight = (a, b) => a.height - b.height males.sort(compareHeight) females.sort(compareHeight) return males.map((male, idx) => [male, females[idx]]) // 男女の数は同数 }
この例はJavaScriptなので高階関数を使っていますが、仮にそういう機能が無かったとしても、
一方、センスの無いゴミプログラマは、以下のような名状しがたきコードを書いてきます。
function pair(psns) {
var i = -1;
var cnt = 0;
var flg = psns[0] &amp;&amp; psns[0].sex;
var j = -1;
var tmp = null;
for(i = 0; i < psns.length; i++) {
//console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■')
//console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg);
if(psns[i].sex == flg) {
//console.log('cnt: ' + cnt + '->' + (cnt+1));
cnt++;
} else {
j = i - cnt + 1;
//console.log('swap ' + i + '<-->' + j);
tmp = psns[j];
psns[j] = psns[i];
psns[i] = tmp;
i = j - 1; // <- 理由は分からないが、i = jだと上手くいかない(by XXXX)。
cnt = 0;
flg = flg == MALE ? FEMALE : MALE;
while(j > 1) {
if(psns[j].height < psns[j-2].height) {
//console.log('swap ' + j + '<-->' + (j-2));
tmp = psns[j-2];
psns[j-2] = psns[j];
psns[j] = tmp;
}
j -= 2;
}
}
//console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg);
//console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■')
//console.log('')
}
for(i = 0; i < psns.length; i++) {
//console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■')
j = Math.floor(i / 2);
//console.log(psns, 'i=' + i, 'j=' + j);
tmp = psns[i];
if(!(i % 2)) {
psns[j] = [null, null];
}
if(tmp.sex == MALE) {
psns[j][0] = tmp;
psns[j][1] = psns[i+1];
} else {
psns[j][0] = psns[i+1];
psns[j][1] = tmp;
}
i++;
//console.log(psns, 'i=' + i, 'j=' + j);
//console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■')
}
psns.splice(psns.length / 2, psns.length);
}
こんなコードのメンテナンスは御免被りたいです。一見して配列の要素を入れ替えていることが分かるだけで、実装を全て読まなければ(いや読んでも)処理の意図が全く分かりません。また、たとえば「i = j - 1」が間違って「i = j」などと書かれていてバグを起こしたとしても、原因を突き止めるのは困難を極めます。
さて、このコードは具体的に何がいけないのでしょうか。長すぎることがいけないのしょうか。変数名が分かりにくいのがいけないのでしょうか。引数を破壊的に変更しているのがいけないのでしょうか。不要なコメントが残っているのがいけないのでしょうか。よく見ると、ソート処理で車輪の再発明をしていたり、「j」や「tmp」などが場所によって意味が違うカメレオン変数になっていたりしますが、それがいけないのでしょうか。どれも正しいですが、それらを逐一直したところで、本質的な解決にはならないでしょう。
後者のコードはもはや「ここを直したら良くなる」とかいうレベルを超えています。たしかに、問題を具体的に挙げることはできます。このコードの致命的な問題が、凝集度の低さと、単一責任の原則(SRP)違反にあるのは間違いありません。しかし、後者のコードを書いてくる人に、
「住民リストを男女に分ける処理や、リストをソートをする処理、2つのリストをまとめる処理は、この問題とは独立して意味のある操作だから、別の関数として抽出しましょう。その方がコードの見通しがよくなるし、一部の処理を修正したときの影響も小さくなるし、単体テストも書きやすくなります」
なんて言ったって聞く耳を持たないでしょう。
そもそも、こういうコードを書く人は、この処理自体を「pair」なんて関数に抽出すらしません。まだこの問題では入出力のフォーマットが明確に定義されているので、他人が1から書き直せますが、実際のプロダクトでは、無数の副作用を起こす数千行のコードの迷路を彼の脳内フォーマットのデータが通るわけです。もちろん、テストコードなんてありません。
つまり、指摘をしても絶対に直らないのです。いくら言語の優れた機能やベストプラクティスを紹介しても、馬の耳に念仏。それらの利点を理解できるだけの脳みそが足りていないのです。
どうして、同じ処理を実装するのに、ここまでの違いが生じるのでしょうか。
これは、プログラミングの技術の問題ではありません。既に述べた通り、ふつうの人なら、特定の機能の有無とか知識の程度にかかわらず、ふつうのコードを書くのです。なぜなら、ふつうの人にはそちらの方が楽だからです。つまり、前者のコードは別に何か卓越した技術を身につけた結果書けるようになるものではなく、まともな感覚さえ持っていれば、プログラミング初心者にとっても前者のコードの方が書きやすいのです。
つまり、後者のようなコードを書いてくる奴というのは、現実世界の捉え方が常人とは著しくずれているのです。要するに、「頭がおかしい」のです。この病気はもう直りません。だから、センスの無い人は絶対にプログラマにはならないで下さい。
この時間なら誰もいないはず。
https://getfedora.org/ja/workstation/download から
1.4GBと大きいので数十分はかかると思う。
1分ぐらいで終わると思う。
パソコンを再起動しBIOSを開き、USB bootして一番上の選択肢を選ぶ。
あとは待つだけ。7分ぐらいで終わる。
終わったら再起動。
次にWi-Fiの設定を尋ねられるのでいつものWi-Fiに繋ぐ。
次にFirefoxを起動してSyncにかける(すぐ終わる)
ここまでで1分ぐらい。
itamaeを使う。
レシピを自前のプライベートリポジトリからgit cloneし、
パスワードを入力したら勝手にflashとかVimとか入って、
gsettingsでの各種設定、vimrcの配置などをやってくれるので放置。
だいたい15分くらいで終わる。
「みんなの役に立つサイトを作って、一発大きく儲けたい!」と、
思い続けて、早10年(泣)。。
とりあえず、エロサイトを作るのってすごく勉強なる?楽しい?らしいので、
誰にも利用されない「へぼツール」作るより必ず誰かの為になるなぁと考え、
できるだけ、誰でもわかるように、詳細を書いていますので、
これを見るだけで、ノンプログラマーの方でも、
※記事は毎日10件更新予定です。つまり毎日このサイトだけ見に行けば困らないってことです。
http://anond.hatelabo.jp/20101219185436
http://anond.hatelabo.jp/20101203150748
http://d.hatena.ne.jp/inouetakuya/20120331/1333192327
http://anond.hatelabo.jp/20120318122617
http://anond.hatelabo.jp/20120914214121
http://anond.hatelabo.jp/20110804021353
http://anond.hatelabo.jp/20120926165533
saasesのVPS OsukiniサーバーLT メモリ512MB 月450円! アダルトOK
CentOS 64bitを選択。(メモリを食うだけなので、特に用がなければ、32bitにしよう!)
※どこにも書いてないけど、2週間以内なら取り消しできます。
☆契約時、webmin&mysqlの選択は必須にしておいたほうがいいです。私は間違えて、webmin無しにしてしまった。。
後から、再インストール(初期化)すれば、再選択することができるようです。。
申し込み後、たったの30分で接続できるようになりました。
をバリュードメインで取得。280円!安い。
/sbin/chkconfig auditd off
/sbin/chkconfig autofs off
/sbin/chkconfig avahi-daemon off
/sbin/chkconfig firstboot off
/sbin/chkconfig kudzu off
/sbin/chkconfig lvm2-monitor off
/sbin/chkconfig mcstrans off
/sbin/chkconfig mdmonitor off
/sbin/chkconfig messagebus off
/sbin/chkconfig netfs off
/sbin/chkconfig nfslock off
/sbin/chkconfig portmap off
/sbin/chkconfig rawdevices off
/sbin/chkconfig restorecond off
/sbin/chkconfig smartd off
/sbin/chkconfig xfs off
※190MBが150MBぐらいになります。
http://support.saases.jp/index.php?action=artikel&cat=63&id=312&artlang=ja
# vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80 ←これを探して、コメントアウトを削除。その下に以下を設定。
DocumentRoot "/home/ユーザーID/iphone-xvideos.info"
ServerName iphone-xvideos.info
<Directory "/home/ユーザーID/iphone-xvideos.info">
order deny,allow
Options FollowSymLinks
# /etc/rc.d/init.d/httpd restart
「httpd: Could not reliably determine the server's fully qualified domain name, using...」
その時はこちらで解決⇒http://d.hatena.ne.jp/uriyuri/20100511/1273575287
で、このままだとIPアドレスでもアクセスできてしまうので、以下もやっておく。
http://fedorasrv.com/memo/log/29.shtml
mkdir /home/ユーザーID/iphone-xvideos.info
chown ユーザーID /home/ユーザーID/iphone-xvideos.info
/home/ユーザーID/以下はpermission errorとなりアクセスできないので、権限を変える。←いいのかな?
http://blog.verygoodtown.com/2010/02/centos-apc-install-how-to/
↑これを実行した際に、「error: expected specifier-qualifier-list before 'pcre'」なんちゃらっていうエラーがでたので、以下を実行。
再度実行して、無事インストールできた。
【APCの設定】
extension=apc.so
[APC]
apc.enabled = 1
/ ←検索
n ←次の検索文字へ
]] ←最後尾に移動
:q! ←保存せずに終了
--------------------------
# /etc/rc.d/init.d/httpd restart
vi /home/ユーザーID/iphone-xvideos.info/index.php
phpinfo();
?>
http://tanaka.sakura.ad.jp/2011/05/centos-linux-apache-php-perl-mysql-lamp.html
↑これを参考に適当に変更してみた
MaxClients 256 ←これを40に
MaxRequestsPerChild 4000 ←これを1000
このサーバは、512MBしかないからもっと小さくしたほうがいいのかも。。
# ab -c 10 -n 100 http://iphone-xvideos.info/
【変更前】
Requests per second: 40.01 [#/sec] (mean)
【変更後】
Requests per second: 137.57 [#/sec] (mean) ←1発目
Requests per second: 552.79 [#/sec] (mean) ←2発目以降(キャッシュ後)
最新版をやってみるとエラーが発生。
「サーバーの PHP バージョンは 5.1.6 ですが WordPress 3.4.2 は 5.2.4 以上のみでご利用になれます。」
3.1系を選択する。。
http://ja.wordpress.org/releases/
※↑結局、後日phpとmysqlのバージョンアップをやりました。
ソースをUP
DBを作る
ホームの「新規データベースを作成する」と書いてある所の下にある、
を修正する。
【プラグイン】
WPtouch ←/wp-content/plugins/wptouch/themes/core/core-header.php をちょこっと変更すればiphoneでxvideo再生ができる。
○人気記事一覧
http://the-fool.me/wordpress/plugins/wordpress-popular-posts.html
設定⇒投稿設定⇒Atom 投稿プロトコル&XML-RPCにチェック
キャッシュが効いていて問題ないことを確認。
○wikipediaから取ってきた女優名をカテゴリテーブル(wp_terms)に突っ込む。(5,260人でした。)
↑これは月に2回更新。cronで動かすことにした。
○googleブログ検索(24時間以内のもの)に女優名をつっこんで、
(とりあえず、引退した人の動画は少ないだろうと考え、現役2,762人分のxvideosを取得してみた。処理時間8時間、192件取得できた。)
http://www.kaasan.info/archives/1457
動画のURLを取得したら、削除されていないか調べて、OKだったら投稿。
http://www.multiburst.net/sometime-php/2009/04/newpost-with-wordpress-xmlrpc-api/
↑ここらへんを参考に
http://pear.php.net/package/PEAR/download
↑pear自体はここにあるので、「XML」フォルダのみをUP。
だいたい、30分で10記事取得できることがわかったので、
【cron設定】
$ crontab -e
00 04 * * * /bin/sh /home/ユーザーID/iphone-xvideos.info/insert_X.sh >/dev/null 2>&1
00 03 1,15 * * /bin/sh /home/ユーザーID/iphone-xvideos.info/insert_XXX.sh >/dev/null 2>&1
http://miya0.dyndns.org/pc/settei/crontab.html
----------------------------------------------------
↑旬な情報が取れないが、とりあえず。。
前日のterm_idを記録して、
次の日はそれ以降のデータを取得する。
----------------------------------------------------
☆jqueryでお気に入り作成。cookieを使う。(PCのみ?)
☆好きな女優を登録しておけば、記事の更新情報をメールで通知。
☆デザイン修正。。
実際、なんとなく勉強になった気もするし、楽しく作業できました。
まったくアクセス無くても、自分用にとても良いものができたと思っているので満足です。
もし繋がりにくくなったりしたら、
別のレンサバに変更しますー。
随時こちらに追記していきますね。
最後まで読んで頂いてありがとうございます。
サイトオープンから10日ほど過ぎたので状況をお知らせします。
はてぶは全くだめだった。。
(日々増加しているが、検索エンジンからくるようになってもまだこんだけ。。)
メモリは問題なし。512MB中ピークでも300MBぐらいしか使ってない。
# chmod 744 /usr/local/bin/memrep.sh
※本日、テスト的にDMMの広告を張ってみました。。←すぐ消した。。
また、後日お知らせしますね。
1か月経ったので。。
ページビュー2500/日
自動更新なのに、きっちりアクセスは日々増えて続けています。エロは強い。
アクセス少ないので、負荷は全く問題なし。
Swapも全く使ってない。
dwang厨が無謀にもfroyoを入れてみる記録のページ。
結局CM6-RC1+yay-gapps で落着きそうな雰囲気。
dwang-1.17.1
→ eMonster用に使ってた sandisk 2GB (メモ)
7/9 にリリースされているもの
ext partition 要対応? とおもったら仏語じゃねーか
@kenmood
Wifi OK
どっかから落した20090801-docomo-ht-03a.rar のうち、boot, cache, data, system のみをnandroidで復旧してみる。nandroid.md5 の復元も忘れずに。
手順
追加手順:
http://www.androidinforum.fr/htc-dream-android/froyo-french-connection-100-t1742.html#p6156
partition: swap 160M, ext 500M, 残り vfat がおすすめとな。
何度か丹念に「目標をwipeしてreboot」を繰り返してたら安定した気がする。
豆腐をfont入れ、localeをlibicudata.so の入れ替えで対処 (できるかな? reboot中)
→ libicudata.so は入れかえちゃダメ。起動しなくなる。recoveryで起動して/systemをマウントしてことなきを得る。
2010-07-11 追記
2chでも報告されているとおり、wlanが使えない。あと細かい話だけど、live wallpaperが使えない気がする。メモリが足りないだけかもしれないけど。
marketが死にまくる (acoreが死ぬ)。ほかにも死にまくるけど、何故かはよくわからない。とりあえず体験はできるけど、まだ常用には至らないかも。
(安定している、と言っている人もいる)
2010-07-11 追記
zip落してきて上書きinstallしてみた。なんか日本語fontが消されたんだけど(ぶー!)
ちなみに日本語fontはM+を利用してます。
数時間つかった限りでは、他人にお勧めできるほどじゃないけど何とか使いものになるかも。dwangの環境はnandroidでしかバックアップしていないので、手作業でアプリなどは手作業で復帰する予定。
(2010-07-11 午後5時追記)
どうもSPF Connectionが安定しないのと、ベースがCM6ということで、まずはベースに近いほうが良いだろうと
CM6-RC1を焼いてみる(この項続く)
http://www.cyanogenmod.com/home/cyanogenmod-6-0-0-rc1
E/AndroidRuntime( 2000): FATAL EXCEPTION: UpdateCheckinDatabaseService
E/AndroidRuntime( 2000): java.lang.SecurityException: Permission Denial: writing com.google.android.gsf.settings.GoogleSettingsProvider uri content://com.google.settings/partner from pid=2000, uid=10036 requires com.google.android.providers.settings.permission.WRITE_GSETTINGS
すぐ直りそうではあるけど。
(エラー内容から察するに、installされたapkの記録をgoogle accountに書き込めない)
c.f. http://forum.xda-developers.com/showpost.php?p=7139560&postcount=109
financial crisisからeconomic crisisへ。
腐敗したCDS(credit default swap)で大損をした金融機関の危機が、いよいよ、経済全体への危機へと広がり始めている。
CDSを買うということは、債務者の借金の連帯保証人になる事であり、債務者がdefaultしたら、債務者の代わりに、全額を被らなければならなくなる。危機以前の金融機関の羽振りが良かったのは、産業への融資が全然ダメであったが、双子の赤字の増加によって運用しなければならないお金が増える状況において、CDSという投資先を見つけたからであり、それに投資したがる新興国や産油国との間に入って手数料を稼げていたからである。
金融危機に対して、中央銀行が特融を出しまくって一時的に支え、会計基準を捻じ曲げて評価額の粉飾を認めて、損失の表面化を年間利益の中に押さえ込むことで、表面的には金融危機は沈静化していることになっている。アメリカでは、今年に入ってから、すでに92行の地方銀行が破綻しているが、政治的には、金融危機は沈静化している事になっているのである。
金融機関の危機が沈静化するということは、金融が引っ張っていた経済構造から金融の影響を取り除くという事でしかない。金融危機を沈静化したら、産業がダメで成長要因が無いという現実が表面化する事になる。この現実への対策は、産業を再興する事しかなく、その為の施策が望まれるのだが、遅々として進んでいない。
バブルの頃は、家屋の建築や担保余力を使った融資による消費といった要因があったので、それなりに仕事が発生したが、バブルが終わってしまったら、それらの要因が消え、労働力の過剰という現実だけが残る。賃金は低迷し、通貨が弱くなる事から輸入物資の価格は上昇し、スタグフレーションへと向かうことになる。しかも、金融機関が抱え込んだ莫大な負債は、毎年の納税額を0にして償却する事になり、金融機関からの納税額が大幅に減少するし、バブル期に良かった事業は軒並み左前になっており、このセクターからの納税も期待できない。財政出動をしたくても、歳入欠陥が確実視される状況では、赤字国債を発行して手当てをするくらいしか道が無いのだが、この赤字国債を買ってくれる経済的な余裕のある人は国内には無く、海外に買い手を求めるには、通貨が強くなる見込みが無ければならない。幾ら金利を引き上げても、それ以上に通貨の価値が下落していくのでは、利回りはマイナスになる。
輸入に頼らずにやっていける国家であれば、スタグフレーションの影響はかなり小さく出来るが、それでも、通貨の強弱と金利というパラメーターによって影響を受ける。輸入を必然とする国家においては、スタグフレーションに入ってしまうと、自立回復は難しくなる。日本はアメリカよりも条件が悪く、アメリカよりも早く、有効な手を打たなければならないのである。
[2009.9.15]