wrongwrongな開発日記

情報系大学院生の忘備録

プログラミング

【Android】コードからアクションバーを変更する【Kotlin】

出てきた情報が古かったりしたのでまとめます。 やり方 変数で変更する方法と、supportActionBarを持ってきて変更する方法とが有ります。 ソースコード アクションバーのタイトルを「あああ」に、背景(色)をリソースのcolor内colorAccent変更します。 titl…

【Kotlin】APIを叩く【Java】

KotlinでAPIを叩いてJSONを取得します。 APIを叩くことを勉強しはじめたばかりなので分かってないことばかりですが、URLを叩くとJSONが帰ってくる状況を想定して作りました。 ソースコード GitHubAPIを叩いて、自分のアカウント(k163377)の全リポジトリの…

【日記】プロジェクトをクラスライブラリに分割する中で後悔したこと

二度と繰り返したくないので言語化します。 背景 ソースコードを流用して別プロジェクトを作ろうとする中で、複数のプロジェクトから同じコードを使いたいので、機能のクラスライブラリへの分割を行っています。 内容はVB.NetのWindowsフォームアプリケーシ…

【Kotlin】mXparserを使う【Java】

mXparserを使ってみました。 mXparserとは やったこと ソースコード 実行結果 導入方法 mXparserとは Stringで諸々を入力してやることで数式を計算できるライブラリです。Javaや.Net、AndroidやXamarinといった多くの環境で動きます。Javaで動くので当然Kotl…

【c/c++】Microsoft PPL/並列STL(C++17)/OpenMPを少しだけ比較【C++17】

Visual Studioのc++で利用できる並列化手法としては、Microsoft PPL、並列STL(C++17)、OpenMPなどが有ります。この内どれが速いのが知りたくなったので実行速度を比較しました。 手法ごとに使う機能が異なっている(後述)ため、比較としてはかなりよろしく…

【c/c++】AVX2を使った円周率を求めるプログラム――修正

結果の加算周りが非効率なためこの記事に載せたプログラムは遅いです。 この部分を修正した場合、AVX2無しで動かしたほうが高速です。 wrongwrong163377.hatenablog.com wrongwrong163377.hatenablog.com 上記記事で作ったモンテカルロ法で円周率を求めるプ…

【c/c++】AVX2を使ってみて少しだけ比較

結果の加算周りが非効率なためこの記事に載せたプログラムは遅いです。 この部分を修正した場合、AVX2無しで動かしたほうが高速です。 wrongwrong163377.hatenablog.com 記事中のAVX2命令を用いたプログラムはcmp命令を使っていないため低速な状態です。これ…

【c/c++】OpenMPの基礎的な使い方+並列処理で意識すべきこと【OpenMP】

OpenMPの基礎的な使い方を通して並列処理で意識すべきことを書きます。 ここではコンパイル方法や詳細な内容については触れませんが、OpenMPのより詳細な使い方については参考文献を参照してください。 記事の内容をざっくりとまとめると、並列化の上で知っ…

【Java】Functionを使ってみる

タイトル通り、Java 8で追加されたFunctionが便利だったので書きます。 Functionとは Function<T,R> は引数Tを受け取って戻り値Rを返す関数を変数っぽく扱えるものです。大体cの関数ポインタとか.Netのdelegateみたいなもんです。 例えば以下の例では、funcはint</t,r>…

【c/c++】Suffix ArrayとBWTに関するプログラムを作ってみた【c++17】

2018/6/25:concurrency::concurrent_vectorを使うべきだったがstd::vectorを使用しており、長い文字列の処理が不安定であったため、これを踏まえて全体に書き直し。 最近c++を触る機会ができたり、c++17の機能を使ってみたかったりしたので、課題にかこつけ…

【OpenCV】JetBrains RiderでNuGetを使いOpenCVの.Netラッパーを導入する【.Net】

OpenCVでちょっとしたプログラムを作りたいけれど、WindowsとUbuntuが混ざった別々の4つ位の環境で動かしたい状況で、全部に一々環境構築するのが面倒くさい感じになりました。 クロスプラットフォームで動く.Net/JetBrains Riderを使い、NuGetでOpenCVの.Ne…

【DxLib】DxLib由来のウィンドウを表示しない【.Net】

DxLibはWIndowsフォームアプリと組み合わせ、フォームやピクチャボックスに対して描画することが可能です。 一方、何もしなければDxLib由来の描画領域ができてしまい邪魔になるので、それを生成しないようにします。 この記事の内容は以下の質問掲示板におい…

【VB】タスクバーに進捗率を表示する【.Net】

Windows Vista以降ではタスクバーに以下の画像のような進捗を表示することができます。 ということでシンプルなサンプルを作成しました。 GitHubにプロジェクト全体を上げてあります。 github.com 準備 プロジェクト まずWindowsフォームアプリのプロジェク…

【VB】Progress<T>を使ってみた【.Net】

outside6.wp.xdomain.jp 上記記事をVB向けに写経したのでまとめます。 リポジトリ GitHubにプロジェクト全体を上げています。 github.com 準備 Windowsフォームアプリでプロジェクトを開始し、Form1へ以下のようにスタートボタン(Button1)とプログレスバー(P…

【c/c++】SFMTを使ってみた

SFMTを利用できるようにするまでをまとめます。(※現状上手く動いていません、備忘用メモ程度です……) ダウンロード 下記URLからダウンロードします。 SIMD-oriented Fast Mersenne Twister (SFMT) 配置 解凍して配置します。 SFMTはビルドしなければ利用で…

【プログラミング】CodeIQ用入出力類

CodeIQを色々な言語でやってると「入出力どうやったっけ」って場面が増えたり、出先でやる時作り直したりがダルかったりしたので、入出力類だけ自分用にまとめます。 CとC#は追加したいですが、とりあえずいったん飽きたのでこれまで。 gist.github.com

【Golang】runnerw.exe: CreateProcess failed with error 216 (no message available)への対処【Goland】

結論 packageの名前をmainに改名して下さい。 状況 Golandでrunnerw.exe: CreateProcess failed with error 216 (no message available)と出て下記のコードが実行できませんでした。 package IOTemplate_Go import "fmt" func main() { var str string fmt.S…

【C#】簡単なQuickSortを書いてみた【.Net】

Xamarinで何か作りたいのでC#の練習で(また)簡単なQuickSort書きました。 github.com ソース 最初から非同期でやるのと、多少は早くしたいなということでTaskの生成回数を減らすことを目標に書いてましたが、途中でグダってあんま意味無くなりました。 文…

【Golang】QuickSort、訂正

wrongwrong163377.hatenablog.com wrongwrong163377.hatenablog.com 以前の2記事のQuickSortに非効率な間違いがあったので訂正します。 間違っていたところ 再帰の門番ではLengthが2以下、つまり3未満で判定する必要がありましたが、2未満で判定してました。…

【Golang】簡単なQuickSortを並列化

wrongwrong163377.hatenablog.com この記事のQuickSortのコードの門番には間違いがあるので訂正しました。 背景 wrongwrong163377.hatenablog.com 前回の記事の続きです。 記事作成時点のリポジトリは以下。 github.com Golangの並列処理 以下の記事を参考に…

【Golang】簡単なQuickSortを書いてみた

wrongwrong163377.hatenablog.com この記事のQuickSortのコードの門番には間違いがあるので訂正しました。 背景 何かを作るようなやる気は起きないけどプログラムは組んでたい気分だったので、前々から触ってみたかったGolangでQuickSortを書いてみました。 …

【VB】Taskを用いて非同期ファイル操作の続き【.Net】

wrongwrong163377.hatenablog.com 上記記事の続きです。 改良点 前回の記事では色々とまとめた結果粒度が小さくなってしまっていたので、粒度を上げてみました。 ソースコード outside6.wp.xdomain.jp 公開後に上記記事を見つけたので修正を行いました。修正…

【VB】表示中の画像ファイルが削除できない問題の解決法【.Net】

表示中の画像ファイルが削除できない問題の解決法 - .NET Tips (VB.NET,C#...) 上記記事において「MemoryStream使った方がいい」という旨のコメントが有り、実際ボタンに設定した画像を削除しようとしてうまく行かなかったので(検証してないけどもしかして…

【日記】壮絶なクソコードをリライトした話

wrongwrong163377.hatenablog.com 続きというか、以下の記事を紹介して頂いたのでそのアンサー的な記事として書きます。最近VBの記事が増えた原因がこれです。 hiroronn.hatenablog.jp 背景 5年程度担当者を代えながら煮込まれた結果できてしまったクソコー…

【VB】MsgBoxを処理を止めずに出す【.Net】

簡易まとめ Taskを使えば以下のコードで出来ます。処理を止めずにMsgBoxを出し、メッセージボックスのリザルトを受け取ることも出来ます(後述)。 Task.Run(Sub() MsgBox("Async") End Sub) やること WindowsフォームアプリではMsgBoxを用いてメッセージを…

【.Net】VB/C#のStructureはNothingにならない

タイトルの通りで、結論から言うとStructureは値型であるためNothingにはなりません。 困った状況 Classを返す関数ではNothingを返すことができますが、同じことをStructureでやってもNothingにならないため、IsNothingなどで比較を行うとコードが誤作動しま…

【日記】ぼくが直面しているクソコード

Friend, Publicを滅ぼせ PublicやFriendな変数は極力使っちゃいけないと思います。「簡単だから」「動けばいいから」と乱用されると、どこからデータを取っているのか、外から設定されるのか、どこにデータを渡しているのか、渡されているのか、段々と分から…

【DxLib】透過を有効にしたDrawGraph系関数での描画がおかしくなった時確認すること【.Net】

遭遇した問題への備忘録です。 対処法 DxLibDotNet(@VB)ではDX.TRUEとTrueは等価ではないので、DrawGraph系関数を含め使用時には確認が必要です。 状況 DxLibDotNetで、DrawGraph系関数で透過を有効にして画像を2枚描画しようとすると、2回目に描画=表に来る…

【VB】Taskを用いて非同期にファイル操作【.Net】

wrongwrong163377.hatenablog.com 続きを書きました、プログラム的にはこっちのが出来がいいはずです。 きっかけ 作成中のプログラムでファイルのコピー待ちの時間が気になったので、非同期でやってみました。 IOがボトルネックなプログラムで並列処理やって…

【VB】VBでJavaでいうNull初期化【.Net】

備忘用に。 自分はJavaではNullで初期化しておいて後から値が入っているかチェックするようなやり方をよくしていました。 VBではNullは用意されていませんが、Nothingで初期化してIsNothingメソッドでチェックすることで同じように扱えます。