Gopherくん 第二弾!
第二弾です。
残すところ、あと一弾...泣
#gopher #nuxt #github #redbubble
Redbubble
Awesome products designed by independent artists | Redbubble
Gopherくんだけじゃなくて、nuxtも欲しいなあと探してて見つけました。
残すところ、あと一弾...泣
#gopher #nuxt #github #redbubble
Awesome products designed by independent artists | Redbubble
Gopherくんだけじゃなくて、nuxtも欲しいなあと探してて見つけました。
第三弾まであります :)
#golang #gopher #stickermule #macbookpro #sticker
ステッカーパックが1ドルで買えるとTwitterで見かけたので、今更ながら買いました。
そのおかげで、色々欲しくなってしまい第三弾まで出来てしまいました。orz
go get github.com/ergofriend/ml2array
input := `4 5 2 0 1 2 1 0 2 1 2 1 2 1 1 1 3 1 3 2 3 2 1` result := ml2array.Make(input) for i := 0; i < len(result); i++ { fmt.Printf("%d行目:%s\n", i, result[i]) }
現在のテストコードは1行ずつリストで足していくやり方です。
func getTests() []testValue { testValues := []testValue{ testValue{ []string{ "3 6", "3 4 5", }, "2"}, } return testValues }
しかし、競プロなどで例として載っけられているテストケースは複数行のテキストです。
↓こんな感じ
これを一回でコピペしてテスト出来るようししていきます。
goでは、こんな風に書きます。
input := `4 5 2 0 1 2 1 0 2 1 2 1 2 1 1 1 3 1 3 2 3 2 1`
まずappend等での速度低下をなくすために、行数を数えて必要な大きさのスライスを作成します。
var lineCount int for i := range input { if input[i] == 10 { lineCount++ } }
resultArray := make([]string, lineCount)
最後に、各行をスライスに代入します。
var i int scanner := bufio.NewScanner(strings.NewReader(mlstring)) for scanner.Scan() { resultArray[i] = scanner.Text() i++ }
関数化して使いやすくします。
func getTests() []testValue { testValues := []testValue{ testValue{ ml2array.Make(`4 5 2 0 1 2 1 0 2 1 2 1 2 1 1 1 3 1 3 2 3 2 1`), "2"}, return testValues }
完成!
/dev/urandom を使ってランダムなパスワードを生成する方法を読むと、
>env LC_ALL=C tr -dc a-zA-Z0-9 < /dev/random | fold -w 20 |head -1 6drFed868QT6LGyiwqUU
/dev/random
から読み込んだ中には記号も含まれているので、isalnum(buf[i])
で文字・数字だけを出力しています。
>gcc makepasswd.c -o makepasswd >./makepasswd htC7LG0wjqE1XPo16AGasqLIELhlpyOJp
#include <stdio.h> int isalnum(); int main() { FILE *fp; char buf[128]; fp = fopen("/dev/random", "rb"); // fread(保存先, 保存する大きさ, 保存する大きさの個数,読み込み元) fread(buf, sizeof(buf), 1, fp); for (int i = 0; i < sizeof(buf); i++) { if (isalnum(buf[i])) printf("%c", buf[i]); } printf("\n"); return 0; }
伝播遅延(Propagation_delay) = link_distance / propagation_speed
伝送遅延(Transmission_dalay) = Packet_size / transmission_rate
ホップごとの遅延値(Per-hop delay)[ms] = proc_delay + queue_delay + Propagation_delay + Transmission_dalay
#include <stdio.h> #include <stdlib.h> float per_hop_delay(float proc_delay, float queue_delay, float link_distance, float propagation_speed, float pkt_len, float transmission_rate) { float transmission_dalay; float propagation_delay; transmission_dalay = pkt_len / transmission_rate; //伝送遅延 propagation_delay = link_distance / propagation_speed; //伝播遅延 return proc_delay + queue_delay + propagation_delay + transmission_dalay; } void main(int argc, char *argv[]) { float proc_delay = atoi(argv[1]); float queue_delay = atoi(argv[2]); float link_distance = atoi(argv[3]); float propagation_speed = atoi(argv[4]); float pkt_len = atoi(argv[5]); float transmission_rate = atoi(argv[6]); printf("per_hop_delay= %f ms\n", per_hop_delay(proc_delay, queue_delay, link_distance, propagation_speed, pkt_len, transmission_rate)); }
gcc per-hop-delay.c
でa.out
へコンパイル
単位をそろえて実行する。
> ./a.out 0.1 20 1000000 300000000 1500 10000000 per_hop_delay= 20.003485 ms
Noto Sans JP に変更します。 https://fonts.google.com/specimen/Noto+Sans+JP
vuepress eject docs
でデフォルトの theme コンポーネント書き出し。
module.exports = { head: [ [ 'link', { rel: 'stylesheet', href: `https://fonts.googleapis.com/css?family=Noto+Sans+JP` } ] ] };
body font-family 'Noto Sans JP', sans-serif -webkit-font-smoothing antialiased -moz-osx-font-smoothing grayscale font-size 17px color $textColor
.nav-links { display: inline-block; margin-right: 2rem;
<template> <header class="navbar"> <SidebarButton @toggle-sidebar="$emit('toggle-sidebar')"/> <router-link :to="$localePath" class="home-link" > <img class="logo" v-if="$site.themeConfig.logo" :src="$withBase($site.themeConfig.logo)" :alt="$siteTitle" > <span ref="siteName" class="site-name" v-if="$siteTitle" :class="{ 'can-hide': $site.themeConfig.logo }" >{{ $siteTitle }}</span> </router-link> <div class="links" :style="{ 'max-width': linksWrapMaxWidth + 'px' }" > <NavLinks class="can-hide"/> <AlgoliaSearchBox v-if="isAlgoliaSearch" :options="algolia" /> <SearchBox v-else-if="$site.themeConfig.search !== false"/> </div> </header> </template>