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って便利と言えば便利だけどなくても困らなくない?って思った。結局は、動けばいいっていう話だけど。

正しいヘッダファイルの書き方を学ばないとなって思った。

管理画面にモデルを登録

djangoでadmin画面にモデル登録するスニペットをいつも忘れるので。

from django.contrib import admin
from . import models


@admin.register(models.Hogehoge)
class HogeAdmin(admin.ModelAdmin):
    pass

半蔵門雪「自信がなくて当然。自信は積み上げた努力と成果。」

コマンドラインからエンコーディングの変更

vim上で変更する方法は知っていたけど、コマンドライン上では知らなかったので。 環境は os xlinux上でも多分同じ。 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は半ばやめたようなものなので、こっちに色々書いていこうかなって思ったり思っていなかったりしてる。