読者です 読者をやめる 読者になる 読者になる

Bird's tech

23歳エンジニアのアウトプット

railsでmysqlを使用する時にidの自動採番をリセットしたい

RailsではIDがデフォルトでautoIncrementされる

rails generate modelで作ったテーブルは必ずIDカラムがauto_incrementで最初につく.
開発中に動作確認を適当に叩いてるといらないデータができるので,削除したい.
しかし,削除してもidの値はリセットされない.

どうするか

mysqlの場合,autoincrementの値はsystem側のテーブルにあるのでそこをいじる.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

mysql> use information_schema;
mysql> select * from tables where table_name = 'ここをautoincrementリセットしたいテーブルに変える';
+----------------+
| auto_increment |
+----------------+
| 8 |
+----------------+

これをupdateすればOK.権限は適当に与えてください.
mysql.information_schema.tablesにこの辺の値があるっぽい.

SQLiteの場合

qiita.com

プログラマ脳を鍛える数学パズル01

http://www.shoeisha.co.jp/book/detail/9784798142456

↑の本を解こうという試みです
haskellで解きました.

01.10進数・2進数・8進数のいずれも回文数となる数のうち,10進数の10以上で最小の数を求めよ

rubyの場合(回答コピペ)

num = 11
while true
  if num.to_s == num.to_s.reverse &&
     num.to_s(8) == num.to_s(8).reverse &&
     num.to_s(2) == num.to_s(2).reverse
        puts num
        break
  end
  num += 1
end

シンプルで良い

javaで書いてみた

public class Main {
  public static void main(String[] args) {
  int num = 11;
  while (true)
    int num2 = Integer.toBinaryString(num);
    int num8 = Integer.toOctalString(num);

    StringBuffer sb = new StringBuffer(num);
    StringBuffer sb2 = new StringBuffer(num2);
    StringBuffer sb8 = new StringBuffer(num8);

    if String.valueOf(num).equals(sb.reverse().toString()) &&
       String.valueOf(num2).equals(sb2.reverse().toString()) &&
       String.valueOf(num8).equals(sb8.reverse().toString())  {
        System.out.println(num)
        break;
    }
    num += 1
  }
}

javaっぽい.すごい長い.
標準出力がSystem.out.printlnってやばいと思う.

haskellで書いてみた

module Main where

import Lib
import Char
import System

main :: IO ()
main = do
  num = 11
  print (judge num)


judge num
  | isSame (show num) && isSame (dec2x num 2) && isSame (dec2x num 8) == True = num
  | otherwise = judge num + 1
  

n2ascii n
  | n <= 9    = chr ((ord '0') + n)
  | otherwise = chr ((ord 'a') + n - 10)

dec2x     :: Int -> Int -> [Char]
dec2x 0 x =  []
dec2x n x =  n2ascii (n `mod` x) : dec2x (n `div` x) x

isSame :: String -> Bool
check n = n == reverse n

judge関数で返ってきたものを出力する.
dec2xとn2asciiは進数変換のための関数です.
judge関数ではパターンマッチでisSame=trueが10進数2進数8進数全てで成立した場合その数字を返し,
そうでない場合はインクリメントして再帰する.

haskellはループが標準では書けないので基本的には再帰でループを表現する.
結構難しかった.もう寝ます.

https://github.com/ygnmhdtt/q01
ソースは上記にあげてあります.
おやすみなさい

酔った勢いで書くと、根本的にSIerに向いてない感じする。

技術が好きで、顧客と折衝するのとかあんまりやってても楽しくない。楽しくないことは別にやりたくない。まだ若いし、後で後悔してもいいから直感に従うべきという感じしてる。

土日休みになったのでプログラミング三昧しよっと

ターミナルからgoogle検索

https://github.com/ygnmhdtt/ggr

使い方

ggr word

やること

検索ワード2つ以上に対応
すぐできるけど寝る

オラコレ

f:id:ygnm:20161114233006p:image

おもしろアプリ始めた

オライリーの本を集めるガチャ

 

Cygames, Inc.「O'REILLY COLLECTION」
https://appsto.re/jp/uAqkW.i