学習コストが低く、キャッチアップがしやすいもともとKotlin書いてた人が誰もいないのに、キャッチアップまでが相当早かったです。 特に動的型付言語のRubyを書いていた人でも大きな戸惑いなく使用できたのは意外でした。 これはJava、Scalaに比べると大きな違いだと考えています。高品質なコードが書けている型の制約がきき、null-safeなど安全に書くための言語仕様がうまく働きます。集合に対する便利な操作を行うメソッドがあったり、記述量少なくシンプルに実装できるための機能がいろいろあります。
はじめに Java中心で仕事をしていた人がGoを書いてみると様々な文化の違いにぶつかると思います。そもそもオブジェクト指向言語と手続き型言語であるなど根本的に異なる点は多いのですが、「よりシンプルに」をモットーとするGoにはよりJavaエンジニアを困惑させる文化がたくさんあるように見受けられます。 本記事ではJavaエンジニアがGoを書いた際に感じた独特な文化を経験ベースで書いてみます。Goをこれから書くであろうJavaエンジニアのお役に立てれば幸いです。 対象読者 これからGoを書くことになりそうなJavaエンジニア Javaと比べたGo特有の文化を知りたい人 実際にGoの開発をするにあたって役に立つ思想を知りたい人 本記事の対象でない人 Goの構文や書き方を基本から学びたい人 とりあえずプロダクトを作って動かしてみたい人 実際に開発する上で意識しない裏の仕組みやアーキテクチャを知りたい
こんにちは。かえると言います。 Twitterでは https://twitter.com/harukaeru_en で活動しています。日本人です。 日本語版: https://twitter.com/harukaeru1981 何番煎じかわかりませんが、log4j2の任意コード実行ができるようなので、実際に実行してみて、どれぐらい危険なのかをここに書くことにしました。 どういう脆弱性なのか?(TL;DR) 簡単にいうと、Webサイトやゲームサーバなどのテキストボックスで のように書くと、そこのサイトにあるJavaのclassファイルを、標的のサーバ内で実行することができます。(実際はこれとはちょっと書き方は違っていて、これは擬似コードなので動きません) 標的のサーバでは、そのclassファイルを使って自由にコマンドを呼び出せます。 ↓のように、こういったコマンドをjavaファイルの中に書
Updates [04-13] "Data Binding Rules Vulnerability CVE-2022-22968" follow-up blog post published, related to the "disallowedFields" from the Suggested Workarounds [04-08] Snyk announces an additional attack vector for Glassfish and Payara. See also related Payara, upcoming release announcement [04-04] Updated Am I Impacted with improved description for deployment requirements [04-01] Updated Am I I
はじめに こむろです。 Spring4Shell についてです。どうせお前ら調査してたんだろ?と思ったあなた、大正解です。 結論 非常に広範な影響がありましたが、現時点で、Spring Framework 本体への修正パッチがすでに適用されています。そのためこれに準じたアップデートを実施することで脆弱性を回避できます。 spring-boot-2-6-6 spring-boot-2-5-12 spring-framework-5.3.18 Tomcat 9.0.62 またこれらのアップデートができない場合、以下の対応を取ることもできます。 不要なパラメータのマッピングを行わないようにコードを追加する (Binding のブラックリストへ class.* 系を追加) Java8 へ一旦ダウングレードする Tomcat 9.0.62 へ Update することで設定値自体の書き換えをできないよ
こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用とAWSによるサービスインフラの設計構築を中心とした、いわゆるバックエンド方面のテックリードとしてニコニコ漫画を開発しています。 本記事では、私たちが開発・運用しているRails製のjson APIバックエンドにおいて、mallocの実装としてjemallocを使うように変更したことについてお話します。 背景 私たちが2020年4月から開発しているニコニコ漫画のRails製json APIバックエンド(以降「新バックエンド」と呼びます)は、2010年8月のサービス開始以来サービスを支え続けているPHP製アプリケーションのビジネスロジックに関する式年遷宮的移行先であり、当初よりAWS ECS Fargate上で実行しています。*1 今年8月にリリー
「プロになるJava」ボツ原稿、今回は「13章 処理の難しさの段階」に入れようと思っていた、「アルゴリズムと計算量」の話です。 こういう話題でよくでる「こんな難しいプログラム組まないのでは?」という疑問についても最後にまとめています。 プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山本 裕介,杉山 貴章技術評論社Amazon アルゴリズムと計算量 ここまでいろいろな処理の計算手順について紹介しました。こういった計算手順のことを アルゴリズム といいます。 同じ処理をするアルゴリズムはいろいろ考えられます。そのとき気になるのは実行性能の問題です。 ただ、実行性能はコンピュータによってクセがあるので、アルゴリズムそのものについてを考えるときにはそういったクセを取り除いて考えたいものです。 そこで、アルゴリズムの性能について考えるときに
Spring Boot 2系のOSS版サポート終了を、モダンなアプリ開発環境を手に入れる“絶好のチャンス”とするための選択肢とは:「最高の開発者体験」の実現に向けて JavaとSpring Bootの進化は止まらない。Spring Boot 2系のOSS版サポート終了を、モダンなアプリケーション開発・運用を加速する“絶好のチャンス”として生かすにはどうすればよいのか。その決断をするのは今だ。 人気開発フレームワークのOSS版サポートが終了、その後はどうする? Javaアプリケーションの開発フレームワークである「Spring Boot」の2.7.x(2系の最終マイナーバージョン)が、2023年11月24日にOSS(オープンソースソフトウェア)版サポートを終了する。ユーザーは、3.1.xあるいは(2023年11月23日リリース予定の)3.2.xにバージョンアップするか、商用サポートサービス「V
関連キーワード Java | アプリケーション開発 | プログラミング プログラミング言語の選択は開発プロジェクトの成否を左右する。人気のプログラミング言語「Java」と「Python」は、内部構造や設計思想に大きな違いがある。両言語を複数の観点から比較することで、それぞれの言語が目指す方向性と、その結果として生じる長所および短所が明確に見えてくる。開発者が気にすべき違いとは何か。 JavaとPythonを4つの視点で比べると? 併せて読みたいお薦め記事 連載:JavaとPythonを比較 前編:Javaの「main」メソッドは何のためにあるのか 中編:Hello Worldプログラムから見る「Python」の“本質”とは? JavaとPythonについて知る 「Oracle JDK」からの移行で賢くJavaを使い続ける方法とは? 「Python離れ」まで起きかねない“GIL廃止”の波紋
情報処理推進機構(IPA)は4月20日、プログラミング言語「Java」の基本的な実行環境「Java SE」に重大な脆弱(ぜいじゃく)性が見つかったとして注意を呼び掛けた。活用範囲が広く攻撃された場合の影響が大きいため、IPAはできるだけ早急に修正プログラムを適用するよう呼び掛けている。 CVE識別番号はCVE-2022-21449。影響度を示すCVSS v3のベーススコアは、「情報改ざんの可能性がある」として10点中の7.5。この脆弱性を悪用すると、ネットワークアクセスさえできれば認証せずとも、遠隔地からデータやプログラムの不正操作を行える恐れがあるという。 対象バージョンはOracle Java SE 18、Oracle Java SE 17.0.2、Oracle Java SE 11.0.14、Oracle Java SE 8 Update 321、Oracle Java SE 7 U
ファイルの読み書きをマルチスレッドで並列に行うための仕組みを、各種プログラミング言語(C++、C、Java、Ruby、Python)で利用できるようにライブラリを整備した。メモリマップI/O、通常I/O、ダイレクトI/Oを同じインターフェイスで利用できる。Tkrzw-0.9.38からこの機能が利用できる。メモリマップI/Oと通常I/Oは全ての処理系で、ダイレクトI/OはLinuxとMacとWindowsで利用できる。 データベースライブラリTkrzwはマルチスレッド環境での並列処理性能を重視して開発しているが、そこで利用しているファイル層の機能を直接利用できるようにAPIを整備した。データベースとしてではなく、単なるフラットなファイルとして利用するためのAPIである。テキストにもバイナリにも利用できる。 C++ API C API Java API Python API Ruby API
長くなっちゃったから最初にまとめ まとめ picocli は便利。 デフォルトでサジェスチョンの機能がついている。なので、オプションやサブコマンドの定義だけしておけば、ミスタイプしたときにサジェスチョンを出してくれる。 オプションの場合は、先頭2文字が一致するオプション一覧 サブコマンドの場合は、先頭2文字じゃなくて、似たものを出してくれる こんなつぶやきを見かけて がくぞさんのこんなつぶやきを見かけて そういえばCLIのオプションパーザのライブラリは多種あるけど、定義されてないオプションが指定されたときにオプション名から類推して正しくはコレじゃない?ってサジェストしてくれるような機構まで盛り込んだライブラリってあるのかな?— がくぞ (@gakuzzzz) August 11, 2021 あぁ、たしかにそういうのフレームワークに含まれてたら便利だなー、picocli だったらありそうだけ
3年ぶりの長期サポート版となる「Java 17」正式版がリリース。M1 Macのサポート、Sealed Classの追加など Javaの新バージョン「Java 17」が正式にリリースされました。Java 17は、Java 11以来3年ぶりの長期サポート対象となるJavaのバージョンです。 Java 17 is now available! #Java17 #JDK17 #OpenJDK Download now: https://t.co/ui83Aehxoq Release notes: https://t.co/VKB0vfaPsP API Javadoc: https://t.co/VHs6UWdka8 Documentation: https://t.co/74Dk6r23Dt pic.twitter.com/NZvvxchXGT — Java (@java) September
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring) Webアプリケーションにおいて、マルチテナント型、つまり複数のユーザー組織がアプリケーションとデータベースを共有する構成にすることがあります。この構成の持つリスクとして、万が一バグにより他テナントの情報が見えてしまうとそれは情報漏洩となり、重大なインシデントとなってしまうことがあります。この重要性を考えると、「気を付けて実装する」だけではなく、仕組みで漏洩を防ぐような対策には価値があります。 そこで、今回はPostgresSQLの行レベルセキュリティと、SpringAOPによる処理を組み合わせて、ログインしているテナントのデータにしかアクセスできなくする仕組みを実現しました。 導入にあたり考慮した複数の選択肢、乗り越えたいくつかの壁
こんにちは!kintone フロントエンドリアーキテクチャチーム (フロリア) の西川 @nissy_dev です。 最近のフロントエンド開発で導入されることの多い TypeScript ですが、開発期間の長いプロジェクトに導入する際にはバックエンドとの結合部分の型定義をどう扱うかが問題になる場合があると思います。 今回の記事では、フロリアで取り組み始めた、HTML に埋め込んだ JSON データをフロントエンドで型安全に扱う施策について紹介します。 フロリアのプロジェクトの詳細については、 @koba04 が書いた次の記事をご覧ください。 blog.cybozu.io 目次 フロリアでのバックエンドからのデータ取得 HTML に JSON データを埋め込む方法の問題点 Java のクラスから TypeScript の型定義を生成できる typescript-generator types
JavaScriptは、ウェブアプリやバックエンドアプリにおける継続的な人気に支えられ、2021年第3四半期も最も人気あるプログラミング言語の地位を維持している。そのこと自体に驚きはない。詰まるところ、JavaScriptは何年にもわたって世界で最も普及している言語の座を維持してきているのだ。しかもSlashDataの調査によると、過去6カ月だけで250万人以上の開発者がJavaScriptコミュニティーに新たに参加したという。この値はSwiftのユーザーベース全体と同等であり、RustとRubyのコミュニティーを合わせた規模に匹敵している。 なお、このデータにはJavaScriptから派生したTypeScriptやCoffeeScriptも含まれている。 Pythonは首位と僅差とは言えないまでも、その人気は目覚ましいものがある。SlashDataによると、この言語は現在データサイエンス
めまぐるしく変化するテックの世界。技術を身に着けるうえで学ぶべきポイントや学習環境なども年々変わっています。 そこで「もしもいまの環境で、テックのことをイチから学び直すことになったら、自分はどんな風に勉強したいか」というIFストーリーを通じて、技術との向き合い方を考え直してみる企画「テック転生」。 今回は、ykws(@ykws__)さんに“自分だったらこう進めたい、モバイルアプリ開発の学習ロードマップ”を伺いました。 自己紹介 20年のモバイルアプリ開発の歴史 この20年で変わったこと この20年で変わらなかったこと プラットフォームを理解する必要性 個人開発からチーム開発へ 自分はどの部分を担当するのか 今からモバイルアプリを開発するなら 自己紹介 2004年から携帯電話向けの Java アプリ開発に携わり、2007年には携帯キャリア向けのコンテンツ提供やアプリ開発を行う会社を設立しまし
プログラミングの入門書で、変数だとかfor文なんかは丁寧に例えなどを使って説明されていることが多いのですけど、逐次実行はほとんど説明されていることがありません。 入門書を書く人にとって、逐次実行は自明であって説明が必要なものではないという認識があると思います。 プログラムに慣れた人にとって、プログラムが上から順に実行されるというのは当たり前で学習が必要なことには思えないと思います。 「見たままやん」 となるのではないかと。 けど、実際には上から順に動くというのがよくわからないようです。 「あ、プログラムって上から順番に実行されるんですね、わかってなかった」 と言われたことがあります。そういうふうに言ってくれる人がいるということは、言わないけどわかってなかったという人が何倍もいるはずです。 通常の文章というのは、基本的には一定の状態を仮定して書かれていて、前部と後部で表す状態が違うということ
「今後、COBOL技術者の減少は明らかだ。このタイミングで刷新できなければ機会を逸してしまう」。こう話すのは、伊藤忠食品の波元英夫情報システム本部本部長だ。酒類・食品卸売業などを手掛ける同社は富士通製汎用機の撤廃を目指し、汎用機で稼働しているCOBOLアプリケーションをJavaなどに刷新中だ。 汎用機では、主に会計・営業・物流といったシステムが稼働している。伊藤忠食品は、刷新プロジェクトの第1弾として、2023年8月に会計システムのマイグレーションを完了した。2026年春に残りのシステムを更新し、汎用機の撤廃を狙う。 機能変更が少ない会計システムから移行 伊藤忠食品に汎用機が導入されたのは1969年5月に遡る。以後、社内の技術者が中心となって更改や改修を重ねてきた。しかしCOBOL技術者の減少により改修・運用が困難になることや、運用コストが高いことなどから「2012年あたりから脱COBOL
オラクルは、カリフォルニア州レッドウッドシティで開幕したイベント「JavaOne 2026」で、「Project Detroit」(以下、Detroit)をOpenJDKのプロジェクトプロポーザル(プロジェクト提案)として発表しました。 DetroitはJavaにJavaScriptエンジンの「V8」とPythonランタイムの「CPython」を組み込むことで、JavaとJavaScript、Pythonの相互運用性を高めることを目的としています。 Detroitは、JavaにJavaScriptのスクリプトエンジンを組み込む目的で2018年にプロジェクトが始まったものの実装に至らず、2019年に中止となっていました。 それが今回、JavaもしくはJavaVM言語と他言語との相互運用性へのニーズが高まってきたことを背景に、JavaScriptとPythonをサポートするプロジェクトとして再
Kotlin – Wikipedia サーバーサイドKotlinの導入から一年が経ちましたという記事から更に2年が経過し、アプリボットではサーバーサイドにKotlinを導入してから3年が経過しています。 その間に開発中であったタイトルはリリースを迎え、安定的に運用・更新が行われるようになりました。そこで、Kotlinを導入した結果、開発者体験はどのように改善されたか、そうでなかったかを振り返ってみることとしました。 この記事はアプリボット技術研究室、室長の斎藤が、Applibot Advent Calendar 2021の5日目の記事として執筆しました。 本記事の主張 既存開発者/新規開発者にとっても学習曲線がゆるやかであるJavaの既存資産のKotlin環境への可搬性は高いIntelliJ IDEAの開発者体験の良さプログラミング言語としての細かい機能が便利になっている 学習曲線のゆるや
今回紹介する言語は、グラフデータベースのNeo4jで使う問い合わせ言語のCypherです。Cypherは一般的なデータベースを操作するSQLと同等の機能をグラフデータベースで扱えるように設計されたものです。グラフデータベースは見た目も面白く、データ管理だけでなく視覚化の点でも役立ちます。 Cypherで3と5の公倍数を表示したところ Cypherとは 以前、本連載では一般的なデータベース(RDBMS)で使えるSQLについて紹介しました。SQLはデータベースの問い合わせ言語であり、簡単なコマンドによりデータの挿入、変更、削除、検索を行います。 同じように、Cypherを使うことでグラフデータベースを操作できます。CypherはもともとNeo4jのために設計されましたが、2015年にオープンソースのプロジェクトとしても公開されています。 グラフデータベースNeo4jとは なお、Neo4jという
TIOBE Softwareが発表したプログラミング言語の人気ランキング「TIOBEインデックス」の2023月10月版では、JavaとC#のレーティングが1.2ポイントのわずかな差に縮まっている。 ソフトウェア品質の評価と追跡を手掛けるTIOBE Softwareは、2023年10月版の「TIOBEプログラミングコミュニティーインデックス」(通称「TIOBEインデックス」)を発表した。 TIOBEインデックスはプログラミング言語の人気度を示すランキングで、同社が毎月更新している。2023年10月のランキングでは「Python」が14.82%で首位を維持した。2位~5位は「C」(12.08%)、「C++」(10.67%)、「Java」(8.92%)、「C#」(7.71%)だった。 Python、C、C#は、それぞれ長期にわたって首位、2位、5位を占めている。C++は6月にJavaを抜いて3位
はじめに マイクラといえば「ゲーム」というイメージがあるかと思いますが, 実は「学習ツール」としても活用することができます. ここでは, マイクラを軸にクラウドサービス (Microsoft Azure) の利用方法と C# 言語を用いたプログラミングについてご紹介します. マイクラサーバの構築方法と, プログラムを活用したマイクラの自動化について知っていただけたら嬉しいです. 使用環境 Minecraft Java Edition 1.19 Windows 10 Microsoft Azure Visual Studio 2022 必要なもの Minecraft Java Edition Microsoft アカウント (Minecraft を遊ぶのに必要です) Azure クレジット (Azure for Students も可) 学生向け Azure クレジット (年間100ドル分)
Javaのログ出力ライブラリであるLog4jで、任意のコードをリモート実行される深刻な脆弱(ぜいじゃく)性・CVE-2021-44228、通称「Log4Shell」が発見されました。Log4jを提供するApacheソフトウェア財団(ASF)は、さらに新たな脆弱性・CVE-2021-45046が発覚したと報告しており、Log4jをバージョン2.16.0以降にアップデートするように呼びかけています。 CVE - CVE-2021-45046 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046 CVE-2021-45046- Red Hat Customer Portal https://access.redhat.com/security/cve/cve-2021-45046 Log4Shell Update: Secon
世界 30 億の Java エンジニア向けに、Java 言語仕様・JVM仕様のバージョンごとの差分を見れるページを作りました。 The Java Language Specification diffs The Java Virtual Machine Specification diffs ぜひご利用ください! なにこれ? Java の各バージョンごとの言語仕様・JVM仕様はこちらのページで公開されています。 Java Language and Virtual Machine Specifications ただ、バージョンごとの変更点がありませんでした1。 そこで、各ページからテキストを抜き出して2、GitHub 上で差分が見れるようにしました。 更新について 細かい誤字脱字の変更とかを除いた差分が作れるとより良いのですが、そうすると今後の更新に手間がかかってしまいまそうでした。 それよ
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。Yahoo!広告エンジニアの高見と申します。 2021年10月より「第11代黒帯〜プログラミング言語(Java)〜」 に就任しました。 この記事では、「ヤフーにおけるJava開発」と、私が従事している「Javaサポートチームの活動」について、紹介します。 (※黒帯制度とは:各領域において突出した専門性を持つ社員を黒帯として任命し、社内外における活動を会社として支援する制度) 1.ヤフーにおけるJava環境 2017年10月頃から全社でシステムのモダナイゼーションが推進されています。 この取り組みで、主要開発言語がPHPから、JavaとNode.jsに変更となりました。 Javaは、主にサーバーサイドアプリケーションで使
Java 19が2022/9/20にリリースされました。 https://mail.openjdk.org/pipermail/jdk-dev/2022-September/006933.html 今回、正式導入された機能がほとんどありませんが、Record PatternsやVirtual Threadは注目すべき機能です。 こちらの配信で解説しています。 詳細はこちら JDK 19 Release Notes Java SE 19 Platform JSR 394 OpenJDK JDK 19 GA Release APIドキュメントはこちら Overview (Java SE 19 & JDK 19) 追加されたAPIまとめはこちら https://docs.oracle.com/en/java/javase/19/docs/api/new-list.html APIの差分はこちら。
.app 1 .dev 1 #11WeeksOfAndroid 13 #11WeeksOfAndroid Android TV 1 #Android11 3 #DevFest16 1 #DevFest17 1 #DevFest18 1 #DevFest19 1 #DevFest20 1 #DevFest21 1 #DevFest22 1 #DevFest23 1 #hack4jp 3 11 weeks of Android 2 A MESSAGE FROM OUR CEO 1 A/B Testing 1 A4A 4 Accelerator 6 Accessibility 1 accuracy 1 Actions on Google 16 Activation Atlas 1 address validation API 1 Addy Osmani 1 ADK 2 AdMob 32 Ads
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く