Skip to content

Instantly share code, notes, and snippets.

Avatar

Takeshi Nishimatsu t-nissie

View GitHub Profile
@t-nissie
t-nissie / lifesaver.ino
Last active Feb 15, 2021
lifesaver.ino pushes a button every 22 minutes 22 seconds with an Arduino Nano and a servomotor
View lifesaver.ino
// lifesaver.ino
// Author: Takeshi Nishimatsu License: GPL-3.0-only
// Description: You may occasionally encounter situations in which you must push a
// button every 22 minutes 22 seconds, or you die. This lifesaver.ino saves your
// life by pushing a button automatically with an Arduino board and a servomotor.
// Wiring: To plug an SG90 servomotor to 6-4-2 pins of the ICSP connector on an
// Arduino board, the order of wires from the servomotor should be changed
// from GND(brown)-5V(red)-PWM(orange) to GND(brown)-PWM(orange)-5V(red).
// SG90 micro servomotor: http://akizukidenshi.com/download/ds/towerpro/SG90_a.pdf
// Seeed Grove 4-Digit Display: https://wiki.seeedstudio.com/Grove-4-Digit_Display/
@t-nissie
t-nissie / csvcxx.cpp
Last active May 8, 2020
コマンドライン引数に与えられた数組のコンマで区切られた整数 (csv) を読み取るプログラムをC++11, Fortran, Rubyで
View csvcxx.cpp
// csvcxx.cpp
////
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main(int argc, char **argv)
{
for (int i=1;i<argc;++i) {
@t-nissie
t-nissie / 00BODICE.md
Last active Oct 17, 2020
文化式成人女子原型 | nbbbp.eps | New Bunka Basic Bodice Pattern | Bunka Sloper | 日本新文化式女装原型 | Pola Dasar Badan Wanita Bunka Baru
View 00BODICE.md

文化式成人女子原型 | nbbbp.eps | New Bunka Basic Bodice Pattern | Bunka Sloper | 日本新文化式女装原型 | Pola Dasar Badan Wanita Bunka Baru

文化式成人女子原型をPostScript言語で描きます

Drafting New Bunka Basic Bodice Pattern in PostScript language

nbbp

使い方

@t-nissie
t-nissie / 00CXXThreadSafeRNG.md
Last active Jun 21, 2021
C++11のthread safeな乱数生成器 (random number generator; RNG) のOpenMPでの使い方
View 00CXXThreadSafeRNG.md

C++11のthread safeな乱数生成器 (random number generator; RNG) のOpenMPでの使い方

C++11の乱数生成器 (random number generator; RNG) である<random>はとてもよくできている。 single threadで動くプログラムなら自作の珍妙なラッパを介さず直接使うべき。 thread safeなのでOpenMPからも使うことができる。 高速にかつ2カ所以上でRNGを使うことを前提にして、 ここgistに自作の珍妙なラッパを公開してみる。

指針

thread数ぶん作った乱数生成エンジンを2カ所 (main.cpp と timing.h) で使う。

@t-nissie
t-nissie / ch02_perceptron.ml
Last active Mar 28, 2018
ゼロからOCamlで作るDeep Learning
View ch02_perceptron.ml
(* perceptron : float -> float -> float -> float -> float -> float *)
(* description: perceptron with two inputs x1 and x2*)
let perceptron b w1 w2 x1 x2 = if b +. w1 *. x1 +. w2 *. x2 >= 0.0 then 1.0 else 0.0
let and_gate = perceptron ~-.0.7 0.5 0.5
let nand_gate = perceptron 0.7 ~-.0.5 ~-.0.5
let or_gate = perceptron ~-.0.5 1.0 1.0
let nor_gate = perceptron 0.5 ~-.1.0 ~-.1.0
let xor_gate x1 x2 = and_gate (nand_gate x1 x2) (or_gate x1 x2)
(* tests *)
@t-nissie
t-nissie / MacPortsFFTW.md
Last active Feb 12, 2018
MacPortsのmath/fftw-3のconfigureオプションに--enable-openmpを加えたい
View MacPortsFFTW.md

MacPortsのmath/fftw-3のconfigureオプションに--enable-openmpを加えたい

MacPortsのmath/fftw-3のconfigureオプションに--enable-openmpを加えたいが、 /usr/bin/clangが-fopenmpを受け付けてくれないので今のところうまくいかない。

手元 (local) でmath/fftw-3/Portfileを変更してみる

MacPortsで自家製portsを使う方法を参考に。

$ sudo emacs /opt/local/etc/macports/sources.conf   # add a line of "file:///Users/t-nissie/ports"
$ mkdir -p ~/ports/math/fftw-3/files
@t-nissie
t-nissie / xtalgrowth2github.md
Last active Jan 1, 2018
Git と A successful Git branching model の練習のためSourceForgueのSubversionレポジトリにあるxtalgrowthをGitHubへ移動させた
View xtalgrowth2github.md
@t-nissie
t-nissie / graphtest.cpp
Created Sep 25, 2017
graphtest.cpp tests the Boost Graph Library (BGL)
View graphtest.cpp
// graphtest.cpp tests the Boost Graph Library (BGL)
// Reference: http://faithandbrave.hateblo.jp/entry/20100413/1271129607
////
#include <iostream>
#include <vector>
#include <string>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>
#include <boost/graph/graph_utility.hpp>
@t-nissie
t-nissie / saturated.c
Last active Nov 17, 2016
Qiitaの卜部昌平著『Cで飽和++』のコードのコピペ
View saturated.c
/* saturated_inc(x) http://qiita.com/shyouhei/items/e960e641882da80c8932 */
#if __GNUC__ >= 7
# define saturated_inc(x) __builtin_add_overflow_p(x, 1, x) ? x : ++x
#else
# define saturated_inc(x) ({__typeof__(x) y; __builtin_add_overflow(x, 1, &y) ? x : ++x; })
#endif
signed long long
func(signed long long x)
{
return saturated_inc(x);
@t-nissie
t-nissie / large_array.c
Last active Nov 16, 2016
MPIで大きなsize_tをMPI_UINT64_Tとして渡して、大きな配列を確保/初期化 (first touch) する。MPI_AINTまたはMPI_COUNTを使うべき?
View large_array.c
// large_array.c
// Gist: https://gist.github.com/t-nissie/38df694682cbdb08023567731f432fbf
// Description: pass a size_t as MPI_UINT64_T, allocate a large array of double, then first-touch it
// Author: Takeshi Nishimatsu
// License: GPLv3
// Reference: https://github.com/jeffhammond/BigMPI/blob/master/test/test_reduce_x.c
////
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>