EaseUS Todo BackupのOSクローン失敗事例
家のwindows機のssdを256から500に買えようと思ったんだけど普通に失敗した
OSの入ったドライブはGPTになってる。
新しいドライブをGPTでフォーマットして、システムクローンを行ってみた。
移し替えた後もOSは起動できた。今まで通りと思っていた。
chrome開いたらERR_CERT_AUTHORITY_INVALIDが出た。どのTLS/SSLが効いてる(https)サイトも観れなかった。googleすら。応急措置というかこれでいけるかなって思ってとりあえずほかのパソコンから有名どころの証明書をダウンロードしてUSBメモリ経由でインストールしていくつかのサイトは見れるようになった。
エラー表示が出た際のERR_CERT_AUTHORITY_INVALIDの文字列をクリックすると、証明書の中身を見ることができて、ISSUERってのが出るので、ISSUERの文字列+certificate downloadを検索すると大体の証明書はダウンロードできてインストールできる。ここらへんはセキュリティ的にシビアな部分なので自己責任で。
別の方法で試したのが、firefoxのインストール。別のパソコンからインストーラーを持ってきて試した。firefoxはシステムの証明書を使っていないっぽくて、どのサイトも閲覧できた。firefoxいいわね。
あらかた証明書をインストールしても、microsoft officeなんかの認証機能がまともに使えなくなっていたので、ここらへんでギブアップした。
あとあとeaseUSの情報探してたらGPTはアプリからやると失敗するらしいwwww 次はwinPEからやってみよう
年末年始は三ツ星カラーズとハイスコアガール読んでそれ以外は親戚のうちでも家でも本読んでプログラミングしてました。楽しかったです。冬休みカムバック。
golangで作るインタープリター読み終わった
golangで作るインタープリター読み終わりました!!!!!!!! 率直な感想はとても面白かったです。 あんまり言語処理系詳しくないんですけど、ソースコードがめちゃめちゃ綺麗でテスト駆動方針なので、非常に読みやすいです。
読む前に知っておいて良かったこと
golangの文法に慣れるのにあったほうがすぐ覚えられる
https://golang.org/doc/code.html
ここに載ってる。たまたま見たことあったけど知ってて良かった。
- コンパイラの大まかな処理
インタープリターまでなので、中間言語生成からの機械語の最適化とかまでは知らなくても問題なかった あくまでレキサーとかパーサーとか。本書にも軽く載ってる
上記のことはないならないで刺激的な情報が得られるんじゃないかな
学んだこと
今ぱっと思いついたものを書いて見た。多分他にもあるじゃないかな...あってほしいな...
所感
真面目に書いて 1 ヶ月くらいで読み終わった golangの構文すごい刺激的だった。type assertionは少し戸惑った。このインタープリターなら他の言語に移植するの難しくなさそうだなって思った。いわゆるコンパイラのフロントエンドと呼ばれる部分の実装だけど、あんまりでかいプログラムを書くことが少ないので、とてもいい経験になったと思う。 個人的にはやっぱり低層の技術が好きなので(だからwebアプリとかモバイルアプリが苦手)コンパイラもちゃんと勉強したいなと思っていて、ASTからの機械語生成の部分を1 から 作ってみたい。本書でも出てきたけど、ガベージコレクタはgolangに依存するので、ここも自分で作れないかなぁと少し思った。 golangは静的な言語でネイティブな機械語を出力できるわけだけど、osが作れないのはここら辺に理由があるのかなぁと考えたりした。
夢が広がる本だなぁ。
https://www.amazon.co.jp/dp/4873118220/ref=cm_sw_em_r_mt_dp_U_gyJlCb1HVVQM2
新年の抱負
あと数時間で2019年ですね
年末はすごい調子良かったんですよね
作ったり試したり学んだり
そんなわけで新年の抱負
- 努力
- 成果
- 他人のことを気にしない
を忘れずに過ごしたいですね 3 つ目は今まで自分が少し周りを気にしすぎていた点があったんだなぁと感じたためです
まだ明けてませんが、来年もよろしくお願いします
djangoの画像の複数アップロード
djangoの公式ドキュメントにシンプルな複数アップロードのサンプルが載ってなかったので、試してみたでござる
""" imagetest/models.py """ from django.db import models class SimplePhoto(models.Model): img = models.ImageField(upload_to='images/')
モデル
""" imagetest/views.py """ from django.shortcuts import render, redirect from .models import SimplePhoto from .forms import SimplePhotoForm, PhotosForm def index(req): images = SimplePhoto.objects.all() if req.method == 'POST': f = SimplePhotoForm(req.POST, req.FILES) if f.is_valid(): f.save() else: f = SimplePhotoForm() return render(req, 'imagetest/index.html', {'images': images, 'form': f}) def multiple(req): images = SimplePhoto.objects.all() if req.method == 'POST': form = PhotosForm(req.POST, req.FILES) if form.is_valid(): for ff in req.FILES.getlist('photos_field'): p = SimplePhoto(img=ff) p.save() else: form = PhotosForm() return render(req, 'imagetest/index.html', {'images': images, 'form': form})
一つのと複数アップロードのビュー
""" imagetest/urls.py """ from django.urls import path from .views import index, multiple urlpatterns = [ path('',index), path('multiple/',multiple), ]
urlの設定。ルートから伸ばしてるけど省略。
""" imagetest/forms.py """ from django import forms from .models import SimplePhoto class SimplePhotoForm(forms.ModelForm): class Meta: model = SimplePhoto fields = ['img',] class PhotosForm(forms.Form): photos_field = forms.ImageField( widget=forms.ClearableFileInput(attrs={'multiple': True}))
複数でもModelForm使えるかなと思ったけどダメだった。saveで拡張するらしい。
<html> <head> <title>ImageTest</title> </head> <body> {% for img in images %} <img src="{{ img.img.url }}" /> {% endfor %} <form method="POST" enctype="multipart/form-data"> {% csrf_token %} {{ form }} <input type="submit" value="送信"> </form> </body> </html>
単数の画像アップロードは公式ドキュメントそのまんまのやつ。 複数の場合はrequest.FILES.getlist['field_name']しないとだめ。formのcleaned_dataから引っ張り出してイテレーションすると引っ張り出してきたファイルはbytesでUploadedFileじゃないのでそのままモデルの渡して保存できない。 htmlのenctypeをmultipartにするのとstaticurlの設定を忘れないようにしないとな。
ちょうどMXでランサーが死んで麻婆神父が出てた
externとグローバル変数の疑問
前もって言っておくけど解答を示しているわけじゃないです。
C書いてて不思議に思ったので、字面に起こしておこうと思った。externとグローバル変数の使いかたに曖昧さがあると自分で感じた。感じたのは以下のようなコード。
/* test.h */ #ifndef _TEST_H_ #define _TEST_H_ #ifdef __cplusplus extern "C" { #endif #include <stdio.h> int g; void set(void); #ifdef __cplusplus } #endif #endif
#include "test.h" int extern_g; int main() { g = 0; extern_g = 100; printf("global variable g is %d\n", g); set(); printf("global variable g is %d\n", g); return 0; }
#include "test.h" extern int extern_g; void set() { g = 100; printf("extern variable extern_g is %d\n", extern_g); }
gccもエラーにならんしどうなんだろう
externって便利と言えば便利だけどなくても困らなくない?って思った。結局は、動けばいいっていう話だけど。
正しいヘッダファイルの書き方を学ばないとなって思った。
コマンドラインからエンコーディングの変更
vim上で変更する方法は知っていたけど、コマンドライン上では知らなかったので。 環境は os x。linux上でも多分同じ。 iconvというコマンドを使う。
% iconv -f cp932 -t utf-8 hogehoge.txt
とすると、標準出力に変更した後の文字列が出てくる。
試す
% head -1 mouse.c /* �}�E�X�W */
エンコーディングがutf-8じゃないので、ターミナル上で文字化けする。
iconvを使う。 先にエンコーディングフォーマットが存在することを確かめる
% iconv -l | grep CP932 CP932 % iconv -l | grep UTF-8 UTF-8 UTF8 UTF-8-MAC UTF8-MAC
そのあとは変換
% iconv -f CP932 -t UTF-8 mouse.c > mouse_new.c % head -1 mouse_new.c /* マウス関係 */
最近の動向
OS自作入門とgolangで作るインタープリター順調に進んでる。 両方半分くらいいった。 1 月の半ばくらいに終わる予定。
あとリリスパすごく面白かったなぁ。 怪盗とかスパイものめちゃめちゃ好きなんですよね。twitterは半ばやめたようなものなので、こっちに色々書いていこうかなって思ったり思っていなかったりしてる。