|DMM inside
「タイムゾーン呪いの書」は、もともと 2018年に Qiita に投稿した記事でしたが、大幅な改訂を 2021年におこない、同時にこちらの Zenn に引っ越すことにしました。 この改訂では Software Design 誌の 2018年 12月号に特集の一章として寄稿した内容も取り込みつつ、夏時間をめぐって各地で起きつつある変化について 2021年 6月現在の状況なども追加しました。そんな追記もしていたら記事全体が長大になってしまったため、この「知識編」と、「実装編」・「Java 編」に記事を分けました。「知識編」は、導入にあたる第一部です。 Qiita のほうは、引っ越した旨とこの引っ越し先へのリンクだけ追記して、しばらくそのまま残すつもりです。 はじめに タイムゾーンという概念のことは、ほとんどの人が聞いたことがあると思います。ソフトウェア・エンジニアでも多くの方が、時刻やタイムゾ
特に意味はないけどおしゃれかなと思って貼ったスクショ Scala Advent Calendar 2020 - Qiita 3日目です ここ2,3年の間にScalaの開発ツールチェーンは進化を続けていて、Scalaの開発体験はめちゃくちゃ良くなってきています。例えば、数年前だと IDEは基本的にIntelliJ一択、vimとかemacsで開発環境作れなくもないけどかなり大変 IntelliJの型チェックがうまく行かなくて、ちょっと複雑なコード書くとコンパイルは通るのに画面が真っ赤になる コンパイルが遅い(インクリメンタルビルドしても遅い) という感じだったのですが、現状はかなり改善されていて IntelliJ 以外にも metals という Language Server がかなり使いやすくなっていてあらゆるエディタで簡単にScalaを書けるようになった IntelliJ も metals
閏年(うるうどし)の話題。 Twitterで見かけた話題で「西暦1年は閏年かどうかぱっとわからん人おる?」という些か煽り気味のツイートを見かけたのだけども、反射的に「閏年じゃないに決まってるじゃん」とぱっと答えてしまわないだろうか。本当にそうだろうか? そう単純な話なのだろうか? プログラミングを学んでカレンダーを扱うことを学ぶ際に置閏法についても簡単に触れられることがある。置閏法というのは閏年や閏月(太陰暦では1年が13ヵ月になるケースがあり追加の月を閏月と呼ぶ)をどのようなルールで挿入するかという話で、まさにアルゴリズムであるからプログラミングの話題と相性がいい。 置閏法 現代の西暦の置閏法(ちじゅんほう)は 西暦を 400 で割り切れる年は閏年 上記以外で西暦を 100 で割り切れる年は平年 上記以外で西暦を 4 で割り切れる年は閏年 上記以外は平年 といった手続きで閏年(つまり2月
最新の情報を利用する場合は、キャッシュレス・消費者還元事業(https://cashless.go.jp/)のページより入手してください。 処理実装今回読み取りに使用するPDFは、以下のように店舗が一覧化されています。この一覧から、「No.」「都道府県」「市区町村」「事業所名(屋号)」「業種」「業種(サブカテゴリ)」「還元率」の7種類の情報を個別の文字列として取得しましょう。 ちなみにいろいろひっかかるこの一覧。「伊達の牛タン本舗」の各店でスペース有り無しが混在しているのが細かいけどすごく気になるし、No.10001にはおそらく間違いが2つ存在してます。まず気になる文字化けはハイフン。その上で「だし廊」と「だし廊 -NIBO-」は別店舗。この一覧の作者は詰めが甘いように思う。。 こんにちは!だし廊本店です! 遅くなり申し訳ございません! 今週の限定の献立表が出来ました! 今週もだし廊でお待
コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日本に住んで日本の仕事をしていると国内時差もなく1 夏時間もない2 日本標準時 (Japa
Javaに限らず、ソースコードの整形(フォーマット)に手を取られるのはムダなことです。 最近のIDEは自動整形を当然のように備えていますが、自動整形を自動で実行するのが、eclipseの Save Actions(保管アクション) 。 Save Actionsをうまく使えば、ソースコードの整形だけでなくいろんな処理をソース保存時に行えるようになります。 初めはソースが勝手にごそっと書き換わるので戸惑いますが、慣れると機械的な作業に一切手を取られなくなるので劇的にコーディングが早くなります。 設定箇所 eclipseの 環境設定 から設定します。 設定内容 最低でも次の2つは有効にしておきましょう。 Format source code Organize imports これでソース保存時にソースコード整形とimport文の整理が行われます。 これに加えて、私は次のような設定を追加しています
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。 Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。
Software design patterns, principles, and snippetsThe best designers will use many design patterns that dovetail and intertwine to produce a greater whole --Erich Gamma Get the book 📖Study the design patterns 💡 IntroductionDesign patterns are the best formalized practices a programmer can use to solve common problems when designing an application or system. Design patterns can speed up the devel
「ORMがトラブル起こすから嫌い」なんじゃなくて、「ORMが起こすトラブルが解決できないから嫌い」ってのがほんとのところじゃない?だったら解決方法を知ればいいんじゃね?というお話。「N+1問題」もろくに知らずにORMを批判せんでほしい。 This document summarizes a microservices meetup hosted by @mosa_siru. Key points include: 1. @mosa_siru is an engineer at DeNA and CTO of Gunosy. 2. The meetup covered Gunosy's architecture with over 45 GitHub repositories, 30 stacks, 10 Go APIs, and 10 Python batch processes usin
・最長一致数量子 ? 1または0回 * 0回以上 + 1回以上 {n} n回 {n,} n回以上 {n,m} n回以上、m回以下 ・最短一致数量子 ?? 1または0回 *? 0回以上 +? 1回以上 {n}? n回 {n,}? n回以上 {n,m}? n回以上、m回以下 ・強欲な数量子(絶対最大指定子) ?+ 1または0回 *+ 0回以上 ++ 1回以上 {n}+ n回 {n,}+ n回以上 {n,m}+ n回以上、m回以下 数量子の種類は 6 種類用意されていますが、それぞれに対して最長一致数量子、最短一致数量子、強欲な数量子の 3 つのタイプが用意されています。(強欲な数量子は絶対最大指定子と呼ばれることもあります)。 例えば直前の文字の 1 回または 0 回繰り返すことを表す数量子は ? ですが、単に ? と記述した場合は最長一致数量子となります。 ? のあとに ? を記述した ??
Androidってあまり良い本が無い印象なんですが、実際に仕事で少しでも役に立った本をシェアしたいと思います。 WEB+DB PRESS Vol.81 「Androidアプリ開発最前線」という特集が本当に役に立つ。 Android Studio、Gradle、テストやCIなど、まとまった情報がまだ少ない、最近のモダンなAndroidアプリ開発事情に関するノウハウがまとまっている。この特集書いてるのもクックパッドの人達なので間違いない感じ。 改訂2版 Android SDK逆引きハンドブック 定番の逆引き本。1冊あると便利。 Android UI Cookbook for 4.0 ICS アプリ開発術 Androidデベロッパーにはお馴染みの、あんざいゆきさんの本。 Android4系のUIが主に紹介されてる。サンプルコード便利。 Master of Fragment これも、あんざいゆきさ
Javaのサーバアプリにクライアント側からPOSTで文字列でXMLを送りつけたらXMLの解析時にパースエラーになって1時間ほどハマった時の話。 結論を先に言いますと、BOM付きのまま文字列としてサーバに送信してしまったのでJAXBでコケた。ということです。対策としてはファイルをBOMなしにしました。 当初Python内で文字列を書いてそれをJavaのサーバアプリ側にPOSTしていたときは問題が起こらなかったが、XMLファイルをあらかじめつくっておいてそれをPythonで読み込んでPOSTしたときにエラーになってしまった。 XMLのパースにつかっていたライブラリはJAXBというもの。 // クライアントからPOSTで受け取ったXML文字列をパース JAXBContext jaxbContext = JAXBContext.newInstance(Foo.class); Foo foo = (
原則について優れたオブジェクト指向開発のための指針。ただ、、、原則は原則。必ず守らなければならないのではなく、まずそれで考えることが重要。逸脱したとしても正当な理由やトレードオフが説明できればよい。一覧単一責任の原則(SRP)オープン・クローズドの原則(OCP)リスコフの置換原則(LSP)依存関係逆転の原則(DIP)インターフェイス分離の原則(ISP)参考アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技作者: ロバート・C・マーチン, 瀬谷啓介出版社/メーカー: ソフトバンククリエイティブ発売日: 2008/07/01メディア: 大型本 Principles Of Object Oriented Designオブジェクト指向設計@Syboos.jpオブジェクト指向設計の原則@それはBooksオブジェクト指向設計原則@ディノオープンラボラトリオブジェクト指向の法則
この記事はJava Advent Calendarの13日目の記事です. 昨日は@kisさんのJava SE 8でパターンマッチを実装するでした. 明日は@megascusさんです. 皆さんはおそらく普段からJavaを使ってプログラムを作っているかと思います. そんな皆さんはJava言語について多くの思い・想いを持っているかと思います. 例えば,「こんな事ができたら良いのに」だったり,「ここが良くないんだよなぁ」といった具合です. そういった言語特徴の追加や改善を自分の手でできたら素敵だと思いませんか? 幸いJavaはOpenJDKというオープンソースプロジェクトで開発が行われており,第三者の僕達でもソースコードを手に入れ自由に変更を加えることができます.*1 この記事では言語の拡張の仕方を述べ,OpenJDKを実際に用いて極々簡単な言語特徴を実装してみます. コンパイラ概要 コンパイラの
JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く