タグ

2018年5月11日のブックマーク (17件)

  • プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ

    僕は、プログラムをする上で変数や関数に良い名前を付けるのはとても重要と考えています。 というのも、良い名前を付ければ、それだけでそのコードがしたいことの説明になり、コメントと同等の働きをすることもあるからです。 自分がちゃんとそれをできているのかはさておき、僕は普段から、できれば読みやすくて分かりやすい名前を付けたいと思っています。他の人も読むコードであれば、できればプログラムでよく使われるような単語を利用して書いた方がより分かりやすいです。 ただ、よい名前を考えるのって、ちょっと面倒くさいんですよね。僕はこれまで、英語の辞書を利用して、考えたりしていたのですが、「何か、プログラムでよく使われる単語をまとめたものはないか?」と探したら、ドンピシャのものがいくつかあったので、それらをまとめて以下で紹介します。 photo by Michael Coté codic codic – デベロッパ

    プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ
  • codic - プログラマーのためのネーミング辞書

    codicは、プログラマーのためのネーミング辞書です。新しいcodicでは、翻訳エンジンを搭載しネーミングをジェネレートできるようになりました。

    codic - プログラマーのためのネーミング辞書
  • PHPでコールバック関数を利用する - Qiita

    PHPを再勉強中。 JavaScriptをはじめ最近プログラムを書くときに何かと使う機会が多いコールバック関数。 PHPでのコールバック関数の使い方をまとめてみました。 可変関数を利用する方法 PHPには可変関数という仕組みがあります。 これは変数名の後ろに()を付与することで、変数の値と同名の関数を呼び出すことができるというもので、この機能を利用することでコールバック関数を実現することができます。 参照:可変関数 <?php # コールバック関数 function callback_func() { return "foo"; } # コールバック関数を受け取る関数 function func($callback) { # 可変関数を利用して文字列で渡された名称の関数を呼び出す。 echo "callback function result :" . $callback() . PHP_

    PHPでコールバック関数を利用する - Qiita
  • MySQL 5.7と8.0でロック状態を確認する(sys.innodb_lock_waitsビュー) - Qiita

    MySQL 5.1+InnoDB Plugin 1.0以降でのロック状態確認方法としては、こちらの記事が有名です。 MySQL InnoDBにおけるロック競合の解析手順(SH2の日記/SH2さん) 利用しているのがMySQL 5.6以前だったり、MySQL 5.7を利用していても複数バージョンが混在している環境では同一のクエリで確認できるメリットがありますので、今でもこれを使われている方が多いのではないかと思います(MySQL Casual Advent Calendar 2017の20日目でも、@soudai1025さんがビューの作成を勧められていました)。 なぜあなたは SHOW ENGINE INNODB STATUS を読まないのか(そーだいなるらくがき帳/そーだいさん) 一方、MySQL 5.7では、sysスキーマにロック状態確認ができるビューとしてsys.innodb_lock

    MySQL 5.7と8.0でロック状態を確認する(sys.innodb_lock_waitsビュー) - Qiita
  • InnoDBで行ロック/テーブルロックになる条件 - (゚∀゚)o彡 sasata299's blog

    2009年11月22日16:29 MySQL InnoDBで行ロック/テーブルロックになる条件 MySQL にはよく使われるストレージエンジンとして MyISAM と InnoDB がありますが、違いの一つとしてロックの挙動が挙げられます。MyISAM はテーブルロック、InnoDB は行ロックが掛かるというのは有名な話じゃないかと。 ただ、最近知ったのですが、InnoDB だとしても必ずしも行ロックになるわけではなく、テーブルロックになる場合もあるようですね。。このことについて手元の MySQL 5.1.26RC で簡単ですが検証してみます。サンプルとして使うテーブルはこちら。 CREATE TABLE `lock_sample` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` int(11) NOT NULL, `c2` int(11) NOT

  • [MySQL] Transaction時のテーブルロック範囲を調べる - Qiita

    概要 Transaction時にUPDATEを投げたとき、どの範囲までロックされるのか調べる。 調査 テスト用テーブルの作成 mysql> show create table test \G; *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL DEFAULT '0', `index_value` int(10) unsigned DEFAULT NULL, `value` int(10) unsigned DEFAULT NULL, `multi_value` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ind

    [MySQL] Transaction時のテーブルロック範囲を調べる - Qiita
    himejimasandesu
    himejimasandesu 2018/05/11
    mysql
  • ロック待ちでハマる前に知りたかったMySQL InnoDBの行ロックとテーブルロックの挙動

    整合性をしっかりとらないといけない処理ではトランザクションをかけるのですが、どうもトランザクションのロック待ちでタイムアウトしてしまうことがあるようです。 java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction トランザクションでテーブル全体にロックがかかってしまう 要するに、「トランザクションを実行するためにロックを獲得しなければいけないが、他のコネクションがロックを握っていて、ロックが獲得できない」ということです。 これの根的な原因は何かと調べますと、InnoDBでトランザクションを使用するときに、行ロックではなく、テーブル全体にロックがかかってしまう場合がある、というところにたどり着きました。 「InnoDBで行ロック/テーブルロックになる条件」を見ながら、少し試してみます。 テーブ

    ロック待ちでハマる前に知りたかったMySQL InnoDBの行ロックとテーブルロックの挙動
  • InnoDB の行レベルロックについて解説してみる

    自分の浅はかな理解だと、Deadlock が起こる理由が説明できないケースに遭遇したので、InnoDB の行レベルロックについて調べてまとめてみました。 「行レベルロックだと、同じ行を更新する場合にしか Deadlock が起こらないんでしょ」と思っているような人が対象です。 また、主に InnoDBのロックの範囲とネクストキーロックの話 - かみぽわーる を参考にさせていただいたので、そちらの内容がすんなり理解できる方には冗長な内容だと思います。 MySQL のバージョンは 5.6.33 です。 サンプルデータ 次の SQL で作成したデータを扱うことにします。 CREATE TABLE `orders` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `product_id` int(10) unsigned NOT NULL, `us

    InnoDB の行レベルロックについて解説してみる
  • InnoDBで行ロック/テーブルロックになる条件を調べた #mysqlcasual Advent Calendar 2013 - あおうさ@日記

    はじめに この記事は、MySQL Casual Advent Calendar 2013 7日目の記事です。 〜 Casual に記事を書けばええんやでヽ(´ー`)ノ 〜 私がMySQLで えっ?! っと思った下記エントリーの挙動が何故そうなってしまうのかを書きたいと思います。 InnoDBで行ロック/テーブルロックになる条件 MyISAM はテーブルロック、InnoDB は行ロックが掛かるというのは有名な話じゃないかと。 ただ、最近知ったのですが、InnoDB だとしても必ずしも行ロックになるわけではなく、テーブルロックになる場合もあるようですね。 ... InnoDB であってもユニーク制約 or インデックスが張られているカラムで検索した場合以外はテーブルロックになってしまうようです。これは注意しないと思わぬところでテーブルロックになってしまって大変なことになりそう! http://

    InnoDBで行ロック/テーブルロックになる条件を調べた #mysqlcasual Advent Calendar 2013 - あおうさ@日記
  • LaravelのDIコンテナはどう使われているのか

    こんにちはー。ファガイです。 今日は知見的なものの共有をしようかなと思います。 この記事を見てるということはLaravelに興味があったり、実際に使っている方だと思いますがLaravelのコアで利用されているサービスコンテナ(DIコンテナ)がどのように作用しているのかを把握されてない方もいると思います。 そのあたりをこの記事では書いていこうと思います。(そう言いつつも、なんか色々網羅した気がします・・・) はじめにこの記事、結構長いです。解説には必要不可欠な情報ばかり含まれてます。 それを理解して読んでいただければと思います。。。 対象者Laravelを少し触ってきた人DIコンテナがなんとなく分かる人LaravelのDIの仕組みが魔法だと思ってる人環境Laravel5.3を想定。ただ、Laravel5.1でもほとんど同じソースなので気にせずに。まずDIって何よ?Dependency Inj

    LaravelのDIコンテナはどう使われているのか
  • PHPの静的変数 (static変数) の挙動まとめ - Qiita

    PHP には「静的変数」 (static 変数) と呼ばれる言語仕様があります。概要は PHP マニュアルの以下のページ PHP: 変数のスコープ - Manual を参照してください。 マニュアルでは関数内で使った場合の例しか載っていなかったので、クラスメソッド・インスタンスメソッド・trait などに使用した場合にどうなるのか調べてみました。 結論は、簡単に言うと クラス毎に独立 インスタンス間で共通 となっています。 検証過程 関数で使用した場合 これは PHP マニュアルに載っている例と同じです。関数を呼び出すたびに $num が 1 ずつ増加します。(PHP 5.1.0 - 5.5.13 で確認) <?php function testFunc() { static $num = 0; $num++; echo __FUNCTION__ . $num . PHP_EOL; } t

    PHPの静的変数 (static変数) の挙動まとめ - Qiita
  • PHPにおけるstaticキャッシュ

    PHPにおけるstaticキャッシュに関して。 PHPのおけるキャッシュはいくつかありまして、一般的にはmemcachedなどのKVS方式のキャッシュサーバーなどを使う方法が一般的かと思います。 キャッシュについて(主にmemcachedを中心に) ここでも紹介しましたが設定情報の読み込みだったり、マスタ的な情報を保存しておく場合はmemcachedがベストだと思います。 ただ、もっと局所的な部分ではstatic変数を利用したキャッシュも使えます。 例えばループの中でデータベースからあるキーを元にデータを取り出したい。ただし、重複することもあり、その場合、何度もデータベースにアクセスしていると非常に時間と負荷がかかります。 このような場合、一度呼び出された値はキャッシュしておくと、時間と負荷を軽減することができます。 下記がコード例です。 $dbUtil = データベースの接続のインスタン

    himejimasandesu
    himejimasandesu 2018/05/11
    php
  • MySQL(InnoDB)でのDeadLock調査 - Qiita

    最近MySQLでDeadLock問題にハマったのでその時の調査メモ 背景 とあるバッチプログラムで多数のBULK INSERT/UPDATEを行う処理の検証を行った際、 並列数を上げるとDeadLockが発生するという問題に直面。 一処理で同時に発行するSQLが多すぎてアプリのログからは原因が追いきれなかった。 (<この時点でアプリの処理やログ出力を見直す必要がありそうだが、それはひとまず置いといて ^^;) その原因調査に役立った情報やMySQLの仕様などを備忘。 原因調査 まずはロックの原因を特定するためにInnoDB ロックモニターを有効化 mysql> SHOW ENGINE INNODB STATUS; -- (省略) -- ===================================== 2017-09-30 06:06:40 0x7f215046a700 INNOD

    MySQL(InnoDB)でのDeadLock調査 - Qiita
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.15.2.1 InnoDB トランザクションの使用および情報のロック

    このセクションでは、MySQL 8.0 内の INFORMATION_SCHEMA INNODB_LOCKS および INNODB_LOCK_WAITS テーブルよりも優先される、パフォーマンススキーマ data_locks および data_lock_waits テーブルによって公開されるロック情報について説明します。 古い INFORMATION_SCHEMA テーブルに関して記述されている同様の説明は、MySQL 5.7 Reference Manual の Using InnoDB Transaction and Locking Information を参照してください。 どのトランザクションが別のトランザクションをブロックしているかを識別すると役立つ場合があります。 InnoDB トランザクションおよびデータロックに関する情報を含むテーブルを使用すると、どのトランザクションが別

    himejimasandesu
    himejimasandesu 2018/05/11
    mysql
  • なぜあなたは SHOW ENGINE INNODB STATUS を読まないのか - そーだいなるらくがき帳

    この記事は、MySQL Casual Advent Calendar 2017の20日目の記事です。 煽り気味のタイトルですがみなさん SHOW ENGINE INNODB STATUS 読んでますか? SHOW ENGINE INNODB STATUS \G 見づらいのなんとかならんのか。— そーだい@初代ALF (@soudai1025) 2016年12月20日 わかる。でもMySQLの振る舞いを知る中でSHOW ENGINE INNODB STATUSを読まざる得ない場面はそこそこあります。 どんな時に必要になるのでしょうか? そこでSHOW ENGINE INNODB STATUSにまつわる話を書きます。 SHOW ENGINE INNODB STATUS をまず読みやすくする まず末尾に \G を付けましょう。 これで3倍読みやすくなります。 次に pager less -S を

    なぜあなたは SHOW ENGINE INNODB STATUS を読まないのか - そーだいなるらくがき帳
  • MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.2.3 InnoDB のロックモード

    ロック読み取り (SELECT ... FOR UPDATE および SELECT ... LOCK IN SHARE MODE)

  • PHP Warning: Illegal offset type in isset or empty · Issue #112 · baopham/laravel-dynamodb

    himejimasandesu
    himejimasandesu 2018/05/11
    Laravel