「PHP」を含む日記 RSS

はてなキーワード: PHPとは

2022-08-12

anond:20220812171944

動けばいいというだけでも、本番サーバのどのディレクトリPHPソースをアップしてとか、場合によってはサーバリモートログイン必要だし、簡単ではないと思うんだよな。

動かしたいものWebページである以上、仕方ないが。

anond:20220812165900

確固たる目的があるということで、PHPをいきなり勉強するのって環境作るだけで結構ハードル高いと思うけどなあ…。

xamppとか入れれば割とすぐデスクトップでも動作確認できるけど、そもそもラサバモデル理解できるのか?とかね。

それでもCLIよりハードル低いと感じるなら止めないけど。

anond:20220812164004

目の敵にしてる人がどういう人かは知らんけども

今ってプログラミングを始める入口のドアが無数にあって、それこそデザインの人がHTMLの延長線上でPHPに手を付けたりするでしょ

そういう「入門」のしかたを邪道とは言えなくなってきた現実があるのよね

これは肌感覚だけど

そもそもプログラムって何?」というレベルの人が「何をやりたいか」なんて決まっているわけがないので、最初から「何をやるか」を決めてかかるのはナンセンスという話。

こういうのってだいぶレアな状況だと思うんだよね

プログラミングが何かわからない人は少ないし、大抵は「〇〇がしたい、でもそれにはプログラミング必要……じゃあ勉強するかぁ」みたいなケースがほとんどだと思う

彼らもどのみち何処かでコマンドライン弄くる必要はあるんだけど、まずはCLI!って言われちゃうハードル高すぎるというか、

「私が知りたいのはこういうのじゃない〜」ってなると思う

2022-08-11

anond:20220811214433

言わんとすることは察するが、おとなしく Python をやれ。挫折しにくいから。個人的には Ruby > JavaScript > Python > PHP > Perl だけど。

anond:20220811130852

日本の平均年収レベル業務フリーランスするのに必要スキルが、絶えず勉強しなきゃ身につかない人は、

どういうペースで勉強するかはともかく勉強必要だよね

自分業界に入った頃はVisualBasic使ってWindows用の業務アプリ作れますって人や会社が大量にいたんだけど、今はそんな需要ほとんどないわけで

その次にきたC#Java業務システム作れますPHPRuby使ってWebサイト作れますブームも終わったし

少なくとも10スパンで新しいスキルセットを取り入れるくらいの勉強必要じゃね

anond:20220811212438

クセがあるというのはインデントを適切につけないと動かないみたいなところを言ってるんじゃない?

PHPなんて適当でも動いちゃうもんなー

Pythonが初めて学習する言語にいいとかない

GoやらRustやら新しめの有力な言語は静的型の言語

JavascriptTypeScriptが生み出されて、PythonPHPは型宣言が取り入れられて、Rubyも型チェックを取り入れようって話が出てる。

実際にコードを書いてる人らは、動的型の言語なんてやってられんってみんな思ってる。

機械学習をやりたいとかじゃなかったら初心者Pythonやる理由はない。

anond:20220811150131

そして反社・・・DQ3サブタイトル風に)

2022-08-11

プログラミングとか好きだけど業界スキルマウンティングとかキャリアポルノばっかりだよな

牧歌的だった昔はこんなことなかったのにな

文系高卒

ITパスポート基本情報技術者などの資格は持っていない

プログラマ歴1年 クラシックPHP開発経験

バージョン管理Github仕様経験はない

LinuxCUI作業も出来ない

ソースコードコピーペーストして何となく動くようにすることはできる、なぜ動いているかは全く理解できていない

理系国立大

第二種情報処理技術者陸上特殊無線技士一種は持ってる

プログラマ歴だけなら長い

LaravelのコードのようなモダンPHP開発経験

バージョン管理GitHub仕様経験はある

LinuxCUI作業はできるけど、あんまりシェル芸とかワンライナーみたいなの嫌い

(かっこ悪くてもミスらない方法がすき

ソースコードコピーペーストして何となく動くようにすることはできる

Cの黒魔術とか、なぜ動いているか全く理解できないときもあるけど、デバッガとかあればなんとかなるはず

正直、なんかもうこの手の世界がつまらない

多分、自分が年を取ったからだけなんだろうけど、つまらものはつまらんのだ

もっとソーシャルハックとでもいうか、ヒューマンな方をやれば良かった

最近話題新興宗教とかマインドコントロールとかもそうだけど、

プログラミングなんかより、他人心理とか感情コントロールする方が生活に役立つ

プログラミングとか好きだけど業界スキルマウンティングとかキャリアポルノばっかりだよな

牧歌的だった昔はこんなことなかったのにな

文系高卒

ITパスポート基本情報技術者などの資格は持っていない

プログラマ歴1年 クラシックPHP開発経験

バージョン管理Github仕様経験はない

LinuxCUI作業も出来ない

ソースコードコピーペーストして何となく動くようにすることはできる、なぜ動いているかは全く理解できていない

理系国立大

第二種情報処理技術者陸上特殊無線技士一種は持ってる

プログラマ歴だけなら長い

LaravelのコードのようなモダンPHP開発経験

バージョン管理GitHub仕様経験はある

LinuxCUI作業はできるけど、あんまりシェル芸とかワンライナーみたいなの嫌い

(かっこ悪くてもミスらない方法がすき

ソースコードコピーペーストして何となく動くようにすることはできる

Cの黒魔術とか、なぜ動いているか全く理解できないときもあるけど、デバッガとかあればなんとかなるはず

正直、なんかもうこの手の世界がつまらない

多分、自分が年を取ったからだけなんだろうけど、つまらものはつまらんのだ

もっとソーシャルハックとでもいうか、ヒューマンな方をやれば良かった

最近話題新興宗教とかマインドコントロールとかもそうだけど、

プログラミングなんかより、他人心理とか感情コントロールする方が生活に役立つ

経験エンジニア採用してしんどかった

anond:20220811091202

文系高卒経験経験1年)エンジニア採用して死ぬほど大変だった

経緯

優秀な新人正社員採用できたので、一緒に新人研修受けさせればいいやと思いついでに契約社員で1名採用

だめなら3か月でポイするつもりだった

文系高卒

ITパスポート基本情報技術者などの資格は持っていない

プログラマ歴1年 クラシックPHP開発経験

バージョン管理Github仕様経験はない

LinuxCUI作業も出来ない

ソースコードコピーペーストして何となく動くようにすることはできる、なぜ動いているかは全く理解できていない

問題点

勉強する方法を知らない

中学高校大学受験経験がないため、そもそも勉強する方法」「本を読む方法」を知らない。

漫然とテキストを読んではいるが、「情報」を「知識」として取り込むことができない。

言語能力が低い

日本語が非常にへたくそ

主語述語目的語あいまいで、自分が考えていることを他人に伝える能力が著しく劣っている。

同時に他人が何を言っているのか意図を把握することもできない、故にメモを取ることができない。

伸びしろが少ない

よって同じ量の学習量を費やしても成長スピードが極めて遅い。

対策

そもそも

そもそもプログラミングソフトウェア技術知識がどうこう言うレベルではない。

思考能力に欠陥があるので本を読ませる。

理科系の作文技術 (中公新書 624) 新書 – 1981/9/22

知的複眼思考法 誰でも持っている創造力のスイッチ (講談社+α文庫) 単行本2002/5/20

世界一やさしい問題解決の授業―自分で考え、行動する力が身につく 単行本2007/6/28

ワイド思考の整理学 (単行本) 単行本2017/1/23

ケツを蹴り上げて文章を書かせまくる

「お前はプログラマどころか知識労働の適性が全くないので他人の倍の時間勉強しろ」と入社1週目に伝えた。

日報時報議事録を書かせまくって添削する。

これを3か月ほど繰り返しようやく中学レベル言語能力が身についてくる。

技術的には

並行して基本情報技術者試験の勉強と、RHELOSLAMP環境の構築をさせる。

LAMP環境構築の目的は以下


現状

まあ💩プログラマなので、掃除ゴミ出しさせて安月給でいいならしばらく様子を見る。

2022-08-06

anond:20220806180020

年収の高いプログラミング言語を知ってそれを勉強したって、低学歴業務経験PHPとかだから高収入会社転職できるわけないし興味もてない。

2022-08-01

anond:20220731183342

自動安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋) 

/**************************************

以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>

//CSVファイルが置かれてるディレクトリパス投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";

const CSV_DIR =

'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';

//ファイルパスCSV絶対パスで、拡張子必要。iimは相対パスでよく、拡張子不要

const FILE_PATHS = {

//投稿文が書かれたCSVファイル

textCsv: CSV_DIR + 'textNoAnker.csv',

//レス投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。

replyTextCsv: CSV_DIR + 'textReply.csv',

};

const SETTINGS = {

//投稿後の基本待ち時間

baseWaitTime: 5,

//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ

waitTimeRange: 5,

//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)

waitTimeForAvoidingPunishment: 60 * 30,

//メール

mail: 'sage',

//名前設定

nameSettings: {

//名前名無しなら''。

name: '',

//以下、偽装ワッチョイ設定。浪人ワッチョイを非表示にしてるときだけtrueにしてね。

//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。

nickname: false,

//妙なニックネームの後に付く8桁の文字列ランダムで決めて付加するかどうか。

korokoro: false,

//IPランダムで決めて付加するかどうか。

ip: false,

//地域ランダムで決めて付加するかどうか。

area: false,

},

postSettings: {

//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。

noAnkerPost: false,

//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrue場合投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。

replyPost: true,

//最初に取得するアンカー無し投稿CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力

noAnkerPostTextCsvStartRow: 1,

//最初に取得する返信用投稿CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力

replyPostTextCsvStartRow: 1,

//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。

textCsvLoop: true,

//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。

minAnker: 895,

//返信する場合名前に以下の文字列を含む投稿アンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列複数指定可能指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能

filterNames: [],

//↑とは逆に、名前に以下の文字列を含まない投稿アンカーをつけて返信する。↑と併用も可能

filterNamesNotIncluded: [],

//返信する場合、本文に以下の文字列を含む投稿アンカーをつけて返信する。

filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],

},

//自分IPアドレス確認VPNとかでIPを変更してマクロを動かしてるとき、突然VPN作動しなくなってIPが元に戻ったときマクロを止めるためのもの

ipSettings: {

//自分現在IPアドレス確認をする。

checkIp: true,

//以下の文字列自分現在IPアドレスに含まれている場合マクロを一時停止する。基本的自分の本当のIPアドレス入力

avoidTheIp: '133.206.99.224',

},

//浪人設定。最後動作確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないか確認できずわからない。

roninSettings: {

//浪人ログインしてるかどうかをチェックするかどうか。trueらするfalseならしない。trueにしていてもし浪人ログインしていないことを確認したらログインしにいく。

checkLogin: false,

//浪人ログインメールアドレス

mailAdress: 'abc@def.com',

//浪人ログインパスワード

password: '1234',

},

//false: run()実行させず(デバッグ用)

run: true,

//true: 投稿処理だけしない デバッグ

skipPost: false,

};

/**************************************

設定箇所終わり。

書き込めない時の早見表 - 5ちゃんねるwiki

https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>

/**************************************

メモ

クラスフィールド宣言できない。

・NULL演算子(??)は使えない。論理積(&&)は使える。

オブジェクトの分割代入はできない。

・importはできない。 <h3>o- *************************************/</h3>

/**************************************

関数 <h3>o- *************************************/</h3>

/**

* ここから始まる。

*/

function run() {

//設定ミスがないか調べる。

checkSettings();

var _TextCsvCursors = new TextCsvCursors(

new TextCsvCursor(

SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0

? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1

: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,

FILE_PATHS.textCsv,

SETTINGS.postSettings.textCsvLoop,

),

new TextCsvCursor(

SETTINGS.postSettings.replyPostTextCsvStartRow > 0

? SETTINGS.postSettings.replyPostTextCsvStartRow - 1

: SETTINGS.postSettings.replyPostTextCsvStartRow,

FILE_PATHS.replyTextCsv,

SETTINGS.postSettings.textCsvLoop,

),

);

var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);

const _MyPosterName = new MyPosterName({

name: SETTINGS.nameSettings.name,

});

//スレURL指定

const _ThreadUrl = openPromptThreadUrl();

//ループ

while (true) {

//IP確認する設定なら、それをする。

SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();

//スレを開く

openUrl(_ThreadUrl.fullUrlHttps());

//浪人ログインする設定なら、浪人ログインしているかどうかを確認し、していなければログインしにいく。

if (SETTINGS.roninSettings.checkLogin) {

if (!checkRoninLogin()) {

loginRonin();

continue;

}

}

//投稿に使うテキスト取得。

const p = (function () {

if (SETTINGS.postSettings.replyPost) {

//返信あり設定の場合。返信対象が無いか調べる。

const targetAnkerNumber = createPostDOMList()

.filterPostnumberHigher(_LoopStatuses.currentMinAnker())

.filterByPostername(SETTINGS.postSettings.filterNames)

.filterByPosternameNotIncluded(

SETTINGS.postSettings.filterNamesNotIncluded,

)

.filterByText(SETTINGS.postSettings.filterText)

.lowestPostNumber();

if (targetAnkerNumber !== null) {

//返信対象があったのでアンカー付き投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);

messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);

return {

...r,

updatedLoopStatuses:

_LoopStatuses.updateMinAnker(targetAnkerNumber),

};

}

}

if (SETTINGS.postSettings.noAnkerPost) {

//返信対象無し、或いは返信しない設定の場合アンカー無し投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsNoAnker();

messageDisplay('返信対象無し。アンカー無し投稿。');

return {

...r,

updatedLoopStatuses: _LoopStatuses,

};

}

return null;

})();

if (p) {

//投稿

postThenCheckError(

_ThreadUrl.serverName(),

_MyPosterName.randomize({

nickname: SETTINGS.nameSettings.nickname,

korokoro: SETTINGS.nameSettings.korokoro,

ip: SETTINGS.nameSettings.ip,

area: SETTINGS.nameSettings.area,

}),

SETTINGS.mail,

p.text,

);

//_TextCsvCursorsと_LoopStatusesを更新

_TextCsvCursors = p.updatedTextCsvCursors;

_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();

messageDisplay([

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

} else {

messageDisplay([

`返信対象が現われるのを待機中...。`,

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

}

//短時間で連投しまくると規制されるので一定時間待機。

wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));

}

}

/**

* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。

* @param {string} serverName サーバー

* @param {MyPosterName} _MyPosterName

* @param {string} postMail メール

* @param {MyText} _MyText

* @param {number} retryTimes

* @returns {void}}

*/

function postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes = 0,

) {

const r =

retryTimes === 0

? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(

postTo5chTread,

postConfirm,

)

: new ValuesOfPost(

serverName,

_MyPosterName,

postMail,

_MyText,

).postSubstring(retryTimes, postTo5chTread, postConfirm);

if (r) {

back();

return;

}

//エラーページに飛ばされた。エラー情報取得。

wait(7);

const error = createPostErrorMessage().analyze();

messageDisplay(error.message);

if (error.order === 'KILL') {

kill();

} else if (error.order === 'SKIP') {

return;

} else if (error.order === 'TRUNCATE') {

back();

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes + 1,

);

} else if (error.order === 'WAIT') {

wait(SETTINGS.waitTimeForAvoidingPunishment);

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

} else if (error.order === 'LOGIN') {

//動作未確認

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

}

return;

}

/**

* 現在IPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。

* @returns

*/

function checkCurrentIpNotTheIp() {

//IP確認ページへ飛ぶ

openUrl('https://www.cman.jp/network/support/go_access.cgi');

const _IpAdress = createIpAdressFromCMan();

if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {

pause('現在IP指定した値が含まれていることを確認。');

//ポーズ解除したならもう一度確認しに。

checkCurrentIpNotTheIp();

}

return;

}

/**

* 設定に致命的な問題が無いか検査

* @returns

*/

function checkSettings() {

if (

SETTINGS.postSettings.noAnkerPost === false &&

SETTINGS.postSettings.replyPost === false

) {

return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&

SETTINGS.postSettings.replyPostTextCsvStartRow < 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',

);

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||

SETTINGS.postSettings.replyPostTextCsvStartRow === 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',

);

}

}

/**

* 入力フォームを表示して入力されたスレURLを受け取る。

* @returns {ThreadUrl}

*/

function openPromptThreadUrl() {

const url = prompt('スレURL入力');

return new ThreadUrl(url);

}

/**

* 開いてるスレレス全て読み取ってPostListインスタンスを作って返す。

* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。

* createPostDOMListを使う。

* @returns {PostList}

*/

function createPostList() {

const posts = window.document.getElementsByClassName('post');

return new PostList(Array.from(posts).map((e) => new Post(e)));

}

/**

* 開いてるスレレス全て取得してPostDOMListに格納して返す。

* @returns

*/

function createPostDOMList() {

const posts = window.document.getElementsByClassName('post');

var arrPostDOMList = [];

for (let index = 0; index < posts.length; index++) {

//HTMLCollectionからElementを1つずつ抽出して配列に。

arrPostDOMList.push(posts.item(index));

}

return new PostDOMList(arrPostDOMList);

}

/**

* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。

* @returns {PostErrorMessage}

*/

function createPostErrorMessage() {

return new PostErrorMessage(

window.document

.g Permalink | 記事への反応(0) | 15:40

2022-07-29

ちょっとPHPを知ってデスクでウンウン唸ってるだけで時給1800円の仕事が転がってるのに真面目に汗を流して働いても1000円ちょっとしかもらえない

2022-07-27

低学歴の世界

2022-07-24

話題書籍の1章を読んだメモ

話題書籍を買って読みました。ひととおり読んだのですが、話題の1章を読みつつ取ったメモを、本が回収される前に置いておこうと思います

ちなみに最初電子書籍で読んだのですが、回収かもって話を聞いて紙も買いました。

以下にメモをそのままのっけるので、たぶん書籍と照らさないと意味不明だと思います


Web1・2のプロトコル

・Web1は「1970年代から1980年代」というのが若干謎ではあるが、この本ではそういう定義だとおもって受け入れる余地はあるか。実際、列挙されているTCP/IPSMTPHTTP最初RFCは70~80年代

HTTPWebサイトの「構築」をするものではない(Webサイトデータを取ってくるためのプロトコルである

レイヤー構造

TCP/IPの4層モデルとかOSI参照モデルとかを意識しているんだろうけれど、いまひとつWeb2とWeb3の対比ができていない。また、後段で「ブロックチェーンプロトコル」と主張する割に、このLayersにも「Protocol Layer」が存在しており、いまいち言いたいことが伝わってこない

・Web2 Layersの雑さは見ての通り。「中間レイヤー」としてなにを想定しているのかが気になるところ。「プラットフォーマーの上に載っている」という結論ありきで作られた図のように思える

データ通信方法

・Web1の例としてHTML/CSSWebサイトのことを提示しており、それはそれで正しいのだが、冒頭のWeb1は1980年代プロトコル云々というところと整合しない。

JavaRubyはわかる C++もそりゃあたくさん使われてるわけだが、この並びで出てくるのはちょっと違和感PHPとかは?

あとP2PはべつにWeb3独自ではない SkypeとかWinnyとか、クライアントサーバではない仕組みは2000年代からいくらでもある

ログイン方法

・このへんはあんま詳しくないのでよくわかんなかった そういえばログインIDメールアドレスを使わせるようになったのってなんでなんでしょうね

・この書き方だとSNSログインすると情報収集できそうに読めるけど、SNSログインを介したからって即ログイン先の情報プラットフォーマーが集められるわけではない

具体的なサービス

ブラウザのとこはそうだね~っていう感じだったが、Firefoxハブられてるのがかなしかった オープン云々のはなしをしたいならMozilla財団の果たした役割は相当に大きいと思うのだが、(この本に限らず)無視されてることが多い

OSの部分は突っ込みどころがいっぱいあるしスクショがバズったのですでに突っ込まれている

ここもLinux無視されているのが悲しいところ

プロトコルがどうこうのところ

あくまで例示で出てきてるだけなので本質的なところではないし、よくあるまちがいではあるのだが、POPはどちらかというと「受信したメールを取ってくるため」のプロトコルと呼んだほうがいいと思う じぶんが使っているメールサーバ(というかMTA)までメールが届くのはあくまSMTPが使われている 「プロトコルが一緒じゃないと~」という文脈で考えると、いったん向こうのMTAに到達しさえすれば、読み手POP3で受信しようがIMAP4で受信しようがどうでもいいわけで、例示としてあんまりうまくない

唐突にICMPが出てきてびっくりした 重要であることはまちがいないのだが、あんまりプロトコルの例」として出てくるとこはみないので

・後段で「Web3ではいろんなプロトコルがあるんですよ~」という話をするんだったら、ここでWeb3のプロトコルとしてBitcoinとEthereumしかさないのはなんか話が通りにくいのではないか

2022-07-23

anond:20220723103122

というかJavaの開発保守以外でエントリーレベルでも職があるのは

PHPPythonだけや。まぁ給与安いけどな

anond:20220723093644

PHP覚えようと思っていたので危なかったです。

教えていただきありがとうございました!

anond:20220723090948

お好きなものを使ってください。

PythonPerlRubyJAVA、C、C++、Rust、Go などなど

PHP初心者が使うとクソコード量産する上にスキルアップは難しいので無視して OK

2022-07-20

anond:20220713142100

php全く使わない現場でずっとphp勉強だけしてて、本題の仕事は全く出来ないSEたことある

2022-07-18

Linux躍進の謎

Linux誕生したのは1990年代

これはUNIX系OSの中でもほぼ最後発になる。

それも開発したのは俗に言うスーパーハッカーとかスタープログラマとかではなく、当時全く無名だった大学院生

から開発の目的だって勉強のためかお遊びなのかもよくわからない話だったり。

そこに来て、型落ちロースペックPCでも動かせるフリーUNIXライクOSとなると、今だったら

ジェネリックUNIX

みたいに冷笑されかねない話だ。

実際リリースされて間もない1990年代後半から2000年前後辺りまでは

流行の追っかけしか能がない、ワナビーのクソガキ共が使うおもちゃ

くらいの立ち位置だった。

当時流行っていたネットスラング類似する煽り方をするなら「アンチMS御用達」みたいな感じだろうか。

しかし今や、そんなのはとっくのとうに大昔の話というか

「そんな事があったんだー」

で終わるくらい、Linuxは誰でも、どこでも使うOSになっているのは御存知の通り。

UNIX系OSで最もメジャーと言うだけではなく、システム開発サーバ構築でWindowsサーバとともにほぼ必ず選択肢に挙げられるようになって久しい。

更に直近の10年で、気がつけば世界中で使われているスマホ殆どLinuxベース(Android)になっている。

まり誕生からの四半世紀で爆発的に発展・普及したというわけだ。

本当にLinuxを使うなんて今どき普通すぎて、特に取り立てて言うことではない。

一方でLinuxよりもずっとフリーUNIXとしての歴史があり、かつては定番だったBSD系なんて、今やAppleのお陰で辛うじて延命している状態なのだから、これまた隔世の感がある。

とはいえ気になるのは、何をどうやったらここまで信じがたい躍進をしたのか?という事情

ホビー用途ビジネス用途では要求される信頼性レベルが異なるので、誰かがそこに手を入れないとこのような発展は望めない。

そこでは大企業がきちんと専門家を入れる形で関わるならなお良い。

そうなるとやはり、まずIBMが白羽の矢を立て、次いでGoogle積極的コミットするようになった流れが大きいのだろうか。

このうちGoogleは「弊社はオープンソースフリーライドしているわけではない」アピールや自社サービスコストダウン、更にはモバイル分野への進出という諸々の目的に好都合だったのだと思う。

問題IBMだ。

しろ元々IBMAIXという自社製UNIXを売ってる会社であり、これを用いた各種サーバ構築はお家芸だったわけで。

更にこのAIXDB2WebSphereを組み合わせる方式は、2000年代くらいまではエンタープライズアーキテクチャの2大巨頭だった。

(もう1つはSolaris+Oracle+WebLogic)

そんな会社Linuxに手を出して、一体何の得があるんだ?という話なわけ。

一つ考えられるとすれば、AIXDB2WASも買えない貧乏人もとい中小規模の顧客から、せめて構築と運用手数料だけでも取るためとか?

まあ確かに一時期流行ったLAMP(Linux+Apache+MySQL+PHP)なら、ライセンス料なしでハード安価PCサーバになるので、導入のハードルは低い。

というわけでLinuxの草創期を知ってる人間からしたら、今の状況は世の中が変わりすぎなくらい変わったという感覚が強い。

Android不具合スマホメーカー依存or機種依存だったり、そもそもLinuxデスクトップ用途が未だに少数派なのは今後も変わらないだろうけど、逆に変わらないのは多分それくらい。

あとUbuntuは嫌い。

2022-07-13

CSSって技術の取得に終わりあるのかな

今、仕事ホームページ学習していて、

PHPと並行してCSS学習しているのだけど、

関数とか、書き方とかまあいろいろあーでもないこーでもない

言いながら聞いたり、自費学習とかしているのだけど

これ終わりなくね?正解もクライアント様(の気分)によってコロコロ変わるし

どこまで学習すりゃいいんだろ?

2022-07-08

ホームページの改修を作業・・・

・・・・<? php ←ここめんどくさくない?

毎回入力するの

2022-06-21

JSDoc形式コメントが嫌い

/** */

これ

まず、 /** で始まってるのにたいして、終わりが */

非対称で美しくない

 

複数行にすると各行に無意味に * から始める必要がある

コメントで不必要に見た目を拘るのはやめてほしい

エディタ自動挿入するから自分で打たなくていいとしてもコピペ時など問題になるだけ

あって嬉しいことなど一つもない

 

さらブロックコメントを使ってるせいでネストできない

コメント内で */ を使う場合問題が出る

また一時的コメントアウトしたいときにこのコメントがあるせいでまとめてコメントアウトできない

 

モダン言語なら /// などシングルライン形式のより優れたものがあるのにどうして採用しないのか

そもそもこの特に優れてもない JavaDoc comment を JS やら TS やら PHP やらがそのまま採用したのが問題

ログイン ユーザー登録
ようこそ ゲスト さん