サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
gup.monster
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 = (
2016年02月07日更新 https://msdn.microsoft.com/library/81h27t8c(v=vs.110).aspx によるとメンバーに対してdllexportはだめらしいので追記。 また、main側サンプルコードが中途半端だったので、C++03以前で書きました。古い環境で開発せざるを得ないこともあるので 今回はVisual C++でのDLLの一般的な作成方法についての記事です。 DLLの作成方法や使い方にはいくつか方法がありますがもっとも一般的なのを紹介します。 Windowsでgcc以外でダイナミックリンクライブラリを作ろうとするとわりと面倒です。 今回は暗黙のリンクと呼ばれる方法と実装を説明します。 ※ただしこの方法は個人だけで開発する場合だったり規模が小さい場合だったりの場合で、明示的リンクのほうが適している状況もあります(後述)。 暗黙的リンクの概要
はてなブログのサイドバーに設置できるカテゴリーのパーツいいのですが、 縦1列に並んで、非常に長くなっていやだ(´・ω・`)というのがあります。 カテゴリーが多くなると余計に長くなっていやだ。 ということで、ちょっとだけデザインを加えてカスタマイズしました。 適用前 なにこのカテゴリー長すぎ(´・ω・`)…… 改造方針 inline-blockを使って、li要素を横に並ぶようにします。 あとはhoverを使ってマウスオーバーしたときにちょっと光るようにします。 コピペでデザインCSSに追加しましょう 下記のコードをデザインCSSに貼り付けます。 /** * サイドバーのカテゴリーモジュール */ div.hatena-module-category div.hatena-module-body ul li a { color : #ffffff; /* 文字色 */ } div.hatena
Linuxって使うのにいろいろハードルがあるのですが、 その一つの大きな障壁がコマンドライン上でのテキスト編集作業ではないでしょうか? デフォルトで用意されていてかつメジャーなのが viというこれまた変な操作体系のエディタで 最初使ったらなんじゃこりゃ。入力できないし、編集できないし……。 終了の仕方がわからず、そっとターミナルを閉じた……。 なんて人は多いんじゃないでしょうか?僕です。 第一、viなんてよっぽどのモノ好きでないと使いこなせるようになりません。 というか必要に迫られないと覚えられないようなものです。 Linuxが使いたいだけなのに変な操作体系を覚えさせられる…。 おれはLinuxをやりたいんだ。 でもなぜかviの学習をしている……。ってなんだかおかしいですよね。 GUIが整っている環境なら、geditというエディタを使って編集という手もありますが、 なかなかそうもいかず、タ
2020-07-30 C++でのファイルの読み込み方法のまとめです。 よく使われるCでもできる方法以外の 標準C++ライブラリを使ったファイル読込み方法です。 Visual C++ 2013とg++で確認しました 4パターン用意しました。 1. char *型に一行ずつ読込む 2. string型に一行ずつ読込む 3. char *型に全部読込む 4. string型に全部読込む テスト用ファイル(test.txt) 123456 89※このファイルは1行目は改行ありで、2行目は改行なしです (ただし、Vimなどのエディタでは改行なしの最終行を作ることはできないことに注意)。 1. char*型に一行ずつ読込む ソースコード #include <fstream> #include <iostream> #include <string> int main() { std::ifstream
たまたまここを見てしまった人。興味ないよという人! これをやればあなたの好きなMacのOSX的なOS(Pear OS ナシOS)も 気軽にインストールできますよ! ただし今回はRHELクローンのCentOSですが。 超細かく解説していきますので、これであなたもLinuxユーザに。 勉強を兼ねて改めてVMware Playerをインストール & CentOS設定まで書こうと思います。 ところで、VMware Playerってなによってやつですが、 妄想でヴァーチャルな世界に嫁を作ってしまう。仮想の嫁。 仮想のマシンをPCの中に作ってしまうってものです。 マシンが1個だけども複数マシンがあるかのように扱えちゃうんです。 もちろん仮想のマシン内からリアルなインターネットに接続することも可能です。 脳内の中なら彼女作り放題だぜ!っていうあれです。 そうそう、なので、マシンのスペックが許す限りほかの
C言語では関数内で宣言した配列変数を素直にreturnする方法がありません。 知らないとこんなコードを書きがちですが、 この書き方では関数内で積まれたスタックがリターン時に解放されてしまうので、 返したアドレスが無効になってしまって、たまたま動くこともありますが、 最悪セグメンテーションフォールトになっちゃいます。 とあるパスの前のパスを返す get_directory()というのを考えてみます。 例) 例えば渡されたパスが/home/user1/hoge.txtだとすると/home/user1/というのを返す場合を考えてみます。 例1 ダメな例 コンパイル $ gcc -o string1.exe string1.c retarr.c: 関数 ‘get_directory’ 内: retarr.c:18:5: 警告: 関数が局所変数のアドレスを返します [-Wreturn-local-a
データ消失事件が起こり再度インストールしたときのメモ 環境は以下です。VMware Player上でCentOS 6.4を簡易インストール Host OS: Windows 8.1 Guest OS: CentOS 6.4 ※viエディタを使用しなくても設定できる方法を追記しました(2016/01/04) ①日本語化します。 1.キーボードを日本語化します。 GUI画面の左上のほうにSystemというのがあるので System > Preferences > KeyBoard と選択します。 新しいウィンドウが開くので、こんどはLayoutタブをクリックします。 中段あたりにAddがあるので、 Country: Japan Variants: Japanese と選択します。 そうすると日本語が追加されるので、追加されたところにラジオボタンの選択チェックがあるので、 日本語側のほうにチェッ
このところHOTな話題のbashの脆弱性で小手先の対策で 1. 全ユーザのデフォルトのシェルをtcshに 2. /bin/bashの実行権をなくすという方法を暫定的に採用しようことで 検証していたらCentOSが起動しなくなって泣きそうになった記録をダラダラと書きます。 断片的なLinuxの知識しか持ち合わせていないと簡単なことでも苦しみますね。 bashの脆弱性についてはここが詳細に書かれています。 bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた - piyolog ちなみにCygwinはどうなのかなーと思ったらやっぱりだめでした。 $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test $ bash -ver
C言語では言語仕様上、グローバル変数は良く使うと思います。 できるだけ避けるのは言うまでもありませんが。 そこでよく混乱するのがexternではないでしょうか? ヘッダなんかをインクルードすると あれ?そういえばexternって……どうなんだっけ…ってことになります。 私なんかはなんかの参考書でプログラミングを学び始めたときに、 externつけてもつけなくても一緒というような怪しげな解説を見た記憶があり、 それによって、余計に混乱してしまいました。 ただし、関数に関しては一緒です。 ここより正確な記載のあるサイトを見つけましたのでURLを記載します。 C言語のexternキーワードについて(関数編) – cloudtofu いまだに検索流入が多い(2019年8月時点)のでちょっとびっくりします。それだけC言語が息の長い言語であり、 年々使用者が減少しているのでしょうね。私自身もCはもう5
グローバルフック(またはシステムフック)を使ってWindows APIで遊んでみました。 フックというのは 引用元: wikipedia 主に元のプログラムに対する機能追加・拡張やカスタマイズの手段として使われるほか、デバッグのための情報収集にも有効である。このような有用な使い方の反面、既存のプログラムの動作を変更できることから、悪意を持ったプログラムによって利用される場合もある。例えばOSのキー入力処理のフックを使えばキーロガーを実装できることになる。 というものです。 メッセージを横取りして処理してしまうってやつです。 本格的なキーロガーだとおそらく横取りした後に気付かれないように ちゃんとまたメッセージを送りなおすんでしょうけど… ということで、キーボード入力をOS全体でフックしてみました。 これを行うにはDLL化しなくてはなりません(しなくてもいい方法はあるにはある)。 ちなみにこ
2020-05-18 2020/05/18 追記 いまだにアクセスがあるのでコメントを書きます。 これは古い記事ですが、今でも通用する内容かと思われます。 かなり怪しい記憶ですが、当時のバージョンは Java 6 Struts 1.2 Spring 1 MySQL 5.5 iBatis(バージョン不明だが、すくなくともMyBatisではない)だったかと思います。なんでもそうですが、下位レイヤーから疑えというのは何についても大事でいつの時代も変わらないと思います。 よく言われていたSSHパターンの変則系(Hibernateの代わりにiBatis)の構成でした。 開発環境でSpring Batchを動かすと今まで動いていたはずのところでエラーが出てしまいました。 Spring Batchを動かすとエラーが…… java.io.EOFException: Can not read respons
2024-06-09 Spring Bootでは例外処理はthrowしてしまえばわりとよしなにやってくれるが… それでも考えるべきことはある。 場合によっては例外処理をあまり使わず、オブジェクトの戻り値による処理をすることもある。 例外処理のパターン@Controller編 ErrorControllerを使う 例外処理のパターン@RestController編 ExceptionHandlerを使う その他リンク 例外処理のパターン@Controller編 基本的には @Controllerに個別で@ExceptionHandler @ControllerAdviceで@ExceptionHandler おすすめ Spring BootのError Controller 3番目は知らなかった 1番目と2番目はよく使うと思う 今回はError Controllerを紹介します @Slf4j
C++では関数からstd::stringを皆はどうやって返してんだろうっていう疑問がわきました。 フツーに考えてstd::stringをそのまま値で返す一択なのですが、 そこで問題になるのがコピーコスト…… っていうかそもそもコピーしてるの?とかいろいろ疑問が沸くわけです。 動作確認環境はg++ 4.8.3です。 実験用のコード 普通はこんなのなしだけどstringを継承したデバッグ用のクラス #include <iostream> class mystring : public std::string { public: // コンストラクタ mystring() : std::string() { std::cout << "mystring constructor" << " mystring() called!" << std::endl; } mystring(const cha
追記 (2018年7月3日) この記事はすさまじく古いです。 現在Windows環境でならAnaconda(+Jupyter notebook)を使うかPythonの標準パッケージマネージャーのpipを使うほうが賢明です。 PytnonでnumpyとmatplotlibをWindows上で使う場合のメモです。 いや、全部書いちゃっているからむしろ Windows上でPythonを使うメモのほうが適切かもしれません。 Visual Studioを利用してPythonを使っている方など参考にしていただければ。 Windows 64bitの場合でもPython 32bit版を使ったほうが良いと思います。 このあたりは好みの問題ですが……。 このあたりのインストール方法は下記記事が詳細に書かれていてわかりやすいです。 このあたりの手順はむしろLinuxやMacのほうが楽ですねきっと。 ええ、私はマ
テキストエディタVimの設定です。僕の.vimrcを晒します。 拘る人はめちゃくちゃ書くんでしょうけど、しょっちゅう違う環境で設定をやるハメになるので、なるべくシンプルに……。 ちなみに僕は最近どんな環境でもVimを入れてしまう一種の病気になっています。 EclipseにはVrapper、Visual StudioにはVsVim、フツーのWindows環境にもkaoriya-gvimを、でもなんかだるくなってCygwin + vimに、Linuxにはvimを……ってそれはフツーか。でもコピペとか日本語切り替えとの相性がやっぱり微妙なんでわりとsakura editorとメモ帳も使います。Emacsもいいんじゃないかなーとも思ってますがキーバインドをカスタマイズするのがめんどくさそうです。Sublime textも気になります。見た目いいですよね。あれ。 Sublime text “恋に落ち
Part1はこれ ものすごくありがたい情報をいただきました。 RVOについて(NRVOというのもある) これを無効化するオプションがありますよとのこと。 id:yohhoyさんのアドバイスが gccであれば-fno-elide-constructorsオプションを指定すると、 RVOが無効化されて結果が変わるかと思います。 ということでやってみました。 コードは前回のをちょっと端折ってこれで検証 ソースコード Part1で書いたものの一部抜粋バージョンです。 フツーにコンパイル $ g++ -o rvotest.exe rvotest.cpp 実行結果 テスト3_a function test3 called!! mystring constructor mystring(const char *str) called! [test] テスト4_a function test4 calle
Parallels Desktop for Macの紹介 MacにはBootCampというのがあってWindowsを別パーティションにいれて、 起動を切り替えて使うことができますが、 いろいろ問題があります。まず、切り替えるのに再起動が必要なこと。 これだけでも結構不便なのに、さらに問題はツールでも入れない限り、 Windowsでスクロールの挙動が逆になったり、キーボードがとても使いづらくなったり…… というのがあります。 この状況を一挙に解決してくれるソフトがParallels Desktop for Macです。 これはVMware Playerと一緒で仮想環境でWindowsを動かします。 仮想環境といっても通常の使い方をする範囲では遅さを全く感じません。 なにより同時に扱えるところが良いです。 また、デフォルトでCoherenceモードといって、 ほぼMacとWindowsをシーム
C++でオブジェクトを返す関数を書いてもいいのか問題→OKです。 遅かったらプロファイル取りましょうで終わりです。 かなり過去にC++でstd::stringをどう返すべきかという記事を書いたこともあり結局いま、例えば、関数内でvectorを加工してその結果を呼び出し側で使いたいニーズがある場合のコードはどう書くのが正解なの? ということを思い至り備忘録として残しておきます。 ※話が複雑になるので、例えばsortするときのようにあらかじめあるvectorを加工する場合ではないことを明記しておきます 主にC++11が出る前のように void foo(std::vector<int>& v) { ...(vector書き換え) } std::vector<int> vec = { 1, 2, 3 }; foo(vec); とやるのがいいのか、 std::vector<int> foo() {
Visual Studioの出力ウィンドウまたはイミディエイトウィンドウに なにか文字列を出力したい時は コンソールアプリケーション、Windowsアプリケーションに 関わらず、OutputDebugString()を使うとそれが実現できます。 使い方はputs()と同様です。改行はつけなきゃダメですが。 printf()と同じ使い勝手のものも作りました。 いつ使うんだよvsprintf()。今でしょ。 https://msdn.microsoft.com/ja-jp/library/cc428973.aspx イメージはこんな感じです。 やりたいことのイメージ はい、これでできましたね。めでたしめでたし…… で終わるのはアレなので、 もし、C++のcout/wcoutで使いたいときはどうすればよいかというと、 出力を乗っ取ればよいのです。 wcout版だとこうなります。 wcoutの出力
ふとニュースなどをみていて、新型コロナウィルスの感染状況のグラフのサイトを見つけて、お、綺麗だしシンプルでいいなと思ったのがここ。 よくある質問の部分も、一見、グラフを眺めていて、ん???と思う疑問点が書かれてあって良い。 「具体的な基準はMITライセンスに準拠します」とさらりと書いてあるだけなのがクール。もちろんGitHubへのリンクもあります。 これ厳密に従うとちょっと面倒なんですよね。とはいえ、数あるライセンスの中でも緩い縛りのMITライセンス。 単なるリンクまたはiframeであれば著作権表示はいらないのですが、せっかくなのでスクリーンショットを拝借しました。 ということで厳密に対応してみました。ただ、ライセンスファイルはブログの関係上置けないので、貼り付けました。 https://github.com/kaz-ogiwara/covid19/ MIT License Copyri
以前このブログで紹介したMaven + Eclipseでマルチモジュールプロジェクトを作成するのなかでサンプルコードで示したものの特にマルチデータソースのやり方についての解説です。 この記事に書いてある通り、PostgreSQLとMongoDBを組み合わせる場合を例として書いてあります。 完成版のソースコードはこちらです。 ミドルウェア バージョン Spring Boot 2 Java 1.8 Apache Maven 3 細かいバージョンはGitHubを参照してください。 Spring-Data-JPAとSpring-Data-MongoDBを利用した場合のやり方を解説します。 構成の概要 プロジェクト/モジュール/パッケージは次のようになっています。 2モジュールありmulti-module-batchはサンプルを動かす利用側コード multi-module-commonはデータアクセ
最初にざっくり説明すると、C++の名前空間はC#にある名前空間と同じ概念です。Javaでいうとpackageに近い概念です。 前方宣言(forward declaration)はC++特有のものだとおもわれます。 前方宣言について あるクラスで包含(コンポジション: Composition)をしたときに、つまりとある別のクラスを利用したいときに、そのクラスのメンバーとして持つときに使うものです。言葉で説明するとちょっとわかりにくいですが、こんな感じです。よく皆さんやってるかと思います。 あんまりいい例が思い浮かばなかったんで2DのRPGの地図上のキャラクターのクラスを例とします。 Character.h #pragma once #include "Image.h" class Character { public: int getHp() const; void setHp(int hp
2018/08/12更新 最近開発でAngular(2+) + TypeScript + Spring Bootを使っています。 それぞれのバージョンの詳細はこんな感じです。 Angular 6 TypeScript 2.7.2 Spring Boot 1.5 Java 8 Maven 3 Node.js 8.11.3 Angular-CLI 6.0.8 実際の構成例 GitHubに置きました。 AngularのチュートリアルとSpring Bootのチュートリアルを混ぜたものです。 ArpitSuthar (Arpit Suthar) · GitHub のをforkしました。 大まかな構成 TypeScriptをどう、SpringのTomcatと連携させるか考えていました。 あんまり複雑な構成にしたくなく、AngularJS(1系)の時のようにお手軽に使えるようにしたかったのです。 それ
起こっていた問題 特にブラウザのアドレスバー上でGoogle検索をしようと日本語入力をしようとしたときに まともに日本語が打てなくなる事象がたまに発生します。 ブラウザ以外のテキストエディタ上では特に問題になりません。 環境情報 ちなみに私の環境は以下です。※Mac macOS Ventura13.0のほうでもESETを使っていますがそちらはこの問題が起きてないです。 種別 ソフト バージョン OS Windows 11 Pro 22H2 ブラウザ Google Chrome 119.0.6045.125 ウィルス対策ソフト ESET Internet Security 16.2.15.0 原因と思われるもの 何だろうと思い探るとESETで問題があると報告がありました。 文字の入力がおかしいです - Google Chrome コミュニティ ただここで指摘されているバージョンと少し違います
ほとんど独り言のような記事です。 なんとなく理解して、なんとなく覚えるMVCとか3層アーキテクチャ この2つ全く別物なんですが、ごっちゃにして覚えてる人多いですよね。 日本人だけかと思ったら、海外の人もそうみたい……。 正確ではないけどstackoverflowに書いてあった回答でわかりやすい回答がありました。 そもそもMVCと3層アーキテクチャはカテゴリーからして違うそうですよ。 MVCと3層アーキテクチャの違い ハイパーざっくりかくと違いはこうです。いや、 MVCが明らかに違うじゃないか!!!って意見はあると思います。 3層アーキテクチャ Client <-> Middle <-> Data MVC Middle ^ | | v Client <- Dataこれですね。3層アーキテクチャはわりと一言で表せて、 Middleの層を必ず介してClientとDataがやり取りされる。 正確に
まだ多重継承でダイヤモンドの錬成をしていない僕ですが、 ついに近代汎用術式に手を出すことにしました。 現時点で最新版のBoost C++ 1.57.0をVisual Studio 2013で使うためのメモです。 汎用術式でありながら暗黒術式ではあるのですが、導入と使うのは割と簡単です。 いままで意識的に避けていたのがもったいない気がしてきました。 Getting Started on Windowsでかいつまんで説明します。 http://www.boost.org/doc/libs/1_57_0/more/getting_started/windows.html 一部説明を変更しています。 BoostをGet http://www.boost.org/users/history/version_1_57_0.html からダウンロードしてね! Boostを配置 好みだけどCドライブ直下に
C/C++で配列の長さの求め方です。 超基本中の基本なのですが、しばらくC/C++の配列を使っていないと アレレってことになってしまいます。 今日はそれでハマりました。 sizeofを使って配列の長さ(要素数)を求めたはずが、 なんでか落ちる…バッファオーバーランっぽい。 こんなコードです。 int hoge[20]; for (int i = 0; i < sizeof(hoge); i++) { hoge[i] = 0; // バッファオーバーランしちゃうよーぎえー(´・ω・`) } memset()使えよとかそういう問題ではありません。 ちなみに、次のパターンなら通常の環境の場合バッファオーバーランにはなりません char hoge[20]; for (int i = 0; i < sizeof(hoge); i++) { hoge[i] = 0; // おっけー!一応ね… } そう
クラス設計は難しい... 前回のエントリーで書いたテトリス Windows APIとC++でテトリス - Gobble up pudding のプログラムを書いて、オブジェクト指向というよりクラス設計は難しい、 本当に難しい!!ということを痛感しました。 絶対にコレ!っていう定石みたいのがほとんどないからなのでしょうか。 一方、フレームワークやライブラリを作っている人のクラス設計は本当に綺麗。 一方僕の書くようなものはともすれば 気を付けてはいるものの 密結合になりがちだったり、 汎用性に欠けたり、変更に弱かったりします。 この差はなんなんでしょうか。センスなんでしょうか? 経験なんでしょうか。 たぶん経験が大きいと思われます。 テトリスで考えてみる... 今回のテトリスの例で考えてみます。 これは私の現在の設計の大まかなやり方 (設計といっても頭で考えながらとりあえず実装してみて トライ
次のページ
このページを最初にブックマークしてみませんか?
『Gobble up pudding』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く