20210507のLinuxに関する記事は10件です。

ssh -Vコマンドをechoコマンドで出力する際に改行されるのを解消したい(puppet boltによるスクリプト実行)

こんにちは、tanzoです。 今回はLinuxのコマンドを勉強する際に詰まった部分があるので、ご紹介したいと思います。 備忘録程度なので、ご容赦ください。 やりたいこと 以下のコマンドを実行した時、出力結果に謎の改行が入るのを解消したい コマンド [yuta@localhost bin]$ ./bolt script run get.sh --targets @ip_info.txt 省略 Started on ユーザ名@IP... Started on ユーザ名@IP... Finished on ユーザ名@IP:                              ← なんでここ一行空いてるんだ? OpenSSH_8.0p1, OpenSSL 1.1.1g FIPS 21 Apr 2020 省略 get.shファイルの中身 コマンド [yuta@localhost bin]$ cat get.sh echo "`ssh -V`" 考えた果てに出た結論 コマンド [yuta@localhost bin]$ cat get.sh printf "`ssh -V`" ←  echoをprintfに変更した 変更後の実行結果 コマンド [yuta@localhost bin]$ ./bolt script run get.sh --targets @ip_info.txt 省略 Started on ユーザ名@IP... Started on ユーザ名@IP... Finished on ユーザ名@IP: OpenSSH_8.0p1, OpenSSL 1.1.1g FIPS 21 Apr 2020 ← 改行が無くなってる! 省略 最後に echoコマンドはダブルクウォーテーションの中は一行で表示されると思ってたけど、「ssh-V」というコマンドとは 相性が悪いみたい。。。。笑 → 解消したのは良かったけど、なんで解消したかよくわからなかったので、ここはまた勉強しないといけないね。。。笑
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LINUXのシステムアーキテクチャ

LPICに即したメモです ハードウェアの基本知識 ハードウェアはudevという仕組みで管理されている lsでデバイス情報を確認する lsでデバイス一覧を表示 ls -dev catでデバイス情報を確認する CPUデバイス一覧を表示 cat /proc/cpuinfo IRQ ※割り込み処理の回数表示 cat /proc/interrupts メモリデバイス一覧を表示 cat /proc/meminfo USBデバイス一覧を表示 cat /proc/bus/usb/* PCIデバイス一覧を表示 cat /proc/bus/pci/* lspciでデバイス情報を確認する lspciで表示 lspci 詳細を表示 Lspci -v より詳細を表示 lspci -vv 起動と終了 起動関連メッセージの確認方法 dmesg:カーネルが出力したメッセージを表示する。バッファ情報のため、起動時間が長いと消える dmesg Catでメッセージログを確認する cat /var/log/messages ジャーナルログを確認する ※ -k カーネルのログ、-b 起動時からのログ journalctl -kb シャットダウン 基本はshutdown 通常のシャットダウン shutdown -h 5分後にシャットダウン shutdown -h +5 再起動する shutdown -r 即時、再起動する shutdown -r now 1.3 起動方法 Linuxのシステム起動には2種の方法が混在している。 それぞれ起動の方法が異なる。 ・SysVinit系:古いシステム ・systemd:主にCentOS 7以降 SysVinit系の起動プロセス BIOS起動 ブートローダ起動、カーネルをメモリに展開 カーネル起動 ドライバ等をロード、initプロセス起動   initプロセスで各種自動起動を設定する 指定されたランレベルに応じた起動処理を実行 ログイン受付開始 ●各種ファイル ・/etc/rc.sysinit 基本の設定ファイル  ファイルシステムのマウント等、基本的な処理を行う。  ランレベルに依存しない。  RedHat系ディストリビューションでは/etc/rc.d/rc.sysinitのシンボリックリンク ・/etc/rc0.d 〜 rc6.d ディレクトリ  ランレベル別起動スクリプトがある。例えばランレベル3のときは、/etc/rc3.dディレクトリ以下のスクリプトが実行される。  ファイル名がS(Start)開始だと該当ランレベルで開始されるスクリプト。  ファイル名がK(Kill)開始だと該当ランレベルで終了されるサービス。 ・/etc/rc.local  起動時に実行するホスト固有の処理。 ●ランラベル  レベルごとにどのサービスを起動できるか定義する 0:停止 1:シングルユーザモード 2:マルチユーザーモード(テキストログイン、NFSサーバは停止) 3:マルチユーザーモード(テキストログイン) 4:未使用 5:マルチユーザーモード(GUI) 6:再起動 S or s:シングルユーザモード※起動時にパスワード設定可能。ディストリビューションによって違う ・現在のランレベルを確認する runlebel ・ランレベルを変更する※実行後、全ユーザは強制ログアウトされる init 【数値 1~5】 ・自動起動の設定 httpdの場合 chkconfig httpd off ・自動起動の設定ランレベルを指定は --levelオプション httpdの場合 chkconfig --level 3 httpd on SysSystemd系の起動プロセス BIOS起動 ブートローダ起動、カーネルをメモリに展開 カーネル起動 ※ここまではSysVinitと同じ ドライバ等をロード、systemdプロセス起動 Unit(default.target)が処理される default.target(/etc/systemd/system/default.target)は他のターゲットへのシンボリックリンク システムの用途に適したターゲットが処理される ログイン受付開始 サービスの自動起動 Systemd ・自動起動設定 systemctl enable サービス名.service ・自動起動解除 systemctl disable サービス名.service ・自動起動設定の確認 systemctl is-enabled サービス名.service 関連コマンド start:サービス起動 stop:サービス終了 restart:サービス再起動 reload:サービス設定の再読み込み status:サービスの状況を表示する enable:自動起動を有効にする disable:自動を無効にする list-unit-files:すべてのUnitを表示する ●参考記事 https://eng-entrance.com/linux_startup ●履歴 作成:2021/5/7 更新:2021/5/9 SysVinit.Systemd、サービス等を追記
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux操作で生産性を上げたいならaliasコマンドを使おう!

Linux操作で生産性をあげるためにまず使うべきコマンド、それがaliasコマンドです。 最後には私が登録しているエイリアスも紹介します! alias(エイリアス)とは? 一言でいうと、「コマンドを作ることができるコマンド」です。 aliasコマンドを使ってコマンドを登録することによって、普段使っているコマンドの入力を格段に短縮することができます。 例えば、cd /var/www/hoge/storage/logsと入力するものをlogsだけで実行できるようになります。 つまり、コマンドに別名をつけられるということです。 基本文法 $ alias ll='ls -l' 上記のコマンドを実行することによってls -lというコマンドをllというコマンドで実行できるようになります。 llというコマンドに一時的に-aオプションを付けたい場合は下記のように実行します。 $ ll -a これでls -laを実行したことになります。 便利ですよね。 実行するコマンドは&&などを使って複数つなげることもできます。 $ alias pj='cd /var/www/public && ls -l' もしもllというaliasが登録済みであれば以下の登録でも可能 $ alias pj='cd /var/www/public && ll' ちなみに&&の意味は以下の通りです。 コマンドA && コマンドBはコマンドAが正常に終了したら続けてコマンドBも実行される 【参考】Linuxコマンドを連続して使うには aliasはPCの電源を切ると消えてしまう!(永続化の方法) aliasを登録すれば登録したコマンドは使えるようになりますが、PCの電源を切ると登録したaliasも消えて使えなくなってしまいます。 そのため、消えてほしくないaliasは.zshrcや.bashrcファイルに記述する必要があります。 .zshrcや.bashrcファイルとは? 簡単に言うとログイン時に実行されるファイルです。 お使いのシェルがzshの場合は.zshrcファイルを、bashの場合は.bashrcファイルを使います。 【参考】「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典(.bashrc) 記述方法 .zshrcや.bashrcファイルは一般的にホームディレクトリに置きます。 ちなみにMacOS Catalina以降のデフォルトシェルはzshです。 それではファイルを編集しましょう(ファイルがない場合は作成されます)。 $ vi ~/.zshrc or $ vi ~/.bashrc このファイル内に登録したいaliasを記述していきます。 .zshrc alias ..='cd ..' alias ...='cd ../..' alias ll='ls -l' alias lla='ls -la' これで、PCの電源を切ってもログインする際にこのファイルが実行されてaliasが使える状態になります。 ただし、ファイルを編集して再ログインせずにすぐに使いたい場合はまだファイルが実行されていないためaliasを使うことができません。 ファイルを実行するためには「source」または「.」コマンドを使ってファイルを読み込む必要があります。 #bashなら $ source ~/.bashrc or $ . ~/.bashrc #zshなら $ source ~/.zsh or $ . ~/.zsh 登録の仕方、反映方法 sourceコマンド 一覧表示 alias登録したけど、作ったコマンド忘れた!! これはよくあることです。登録したaliasの確認は以下のコマンドです。 $ alias 登録済みのaliasの削除方法 間違えて登録しちゃった! そんな場合は下記のコマンドでaliasを削除することができます。 $ unalias ll 登録しておきたいalias(サンプル) ここで、私が登録しているaliasの一部を紹介します。 .zshrc #zshの編集 alias zrc='vim ~/.zshrc' alias sozrc='source ~/.zshrc' #基本コマンド alias ..='cd ..' alias ...='cd ../..' alias ll='ls -l' alias lla='ls -la' # よく使うサイトをブラウザで開くコマンド alias ggl='open https://www.google.com' alias yho='open https://www.yahoo.co.jp' #hostsの編集 alias hosts='sudo vim /etc/hosts' #git alias gb='git branch' alias gc='git checkout' alias gcd='gc develop' alias gs='git status' alias gp='git pull' #MySQL alias mss='mysql.server start' #docker alias dp='docker ps' #docker-compose alias dc='docker-compose' alias dcu='dc up' alias dcd='dc down' alias dcs='dc start' alias dce='dc end' alias dcr='dc restart' #laravel(phper向け) alias art='php artisan' alias arts='art serve' alias artr='art route:list' alias migrate='art migrate' alias rollback='art migrate:rollback' alias fresh='art migrate:fresh' alias cc='php artisan config:clear && php artisan cache:clear && php artisan view:clear' alias seed='art db:seed' #laradock alias dcew='dc exec workspace bash' alias dcem='dc exec mysql bash' これも登録するといいよ!というものがあればコメントにお願いいたします! おわりに aliasを使うことによって長いコマンドも最小1文字に短縮が可能です。 毎日使う長いコマンドがあればぜひalias登録をして無駄なタイピング時間を短縮しましょう! (登録したコマンドは使わないと忘れます!!積極的に使いましょう!(自戒)) 参考文献 ・新しいコマンドも作れる!aliasコマンド詳細まとめ【Linuxコマンド集】 ・Linuxコマンドを連続して使うには ・「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典(.bashrc)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

OSがLinuxのPCでキーボードマッピングを行う

2021/05/08 @shiracamus さん ご教授ありがとうございます. numlockに関しては一切考えてませんでした. フルサイズキーボードではないから ということで関係ないだろうと思ってました. 教えて頂きありがとう御座います. BIOSを確認次第,他の方に参考になるような情報があれば追記いたします. 書き漏れがあったので追記 起動するたびに設定を読み込んでくれないと困るので,rc.localに記載します. $ touch /etc/rc.local #無ければ作成 $ vi /etc/rc.local xmodmap /home/your-username/.Xmodmap 設定PCのスペックやOSなど メーカー:jumper モデル:jumper-EZBOOK-X4 製品リンクは以下 OS:Linux Mint 20 Ulyama CPU:Intel celeron j3455 ストレージ:SSD(128GB)標準搭載です. メモリ:4GB キーボード配列:US 密林で3万円位で購入できます. 初期状態ではWin10が入ってますが,動きがモッサリで使い物になりません. 状況 キーボードのh,j,k,u,iを入力すると数字が入力される. ログイン画面でパスワードが違いますという表示が出て初めて発覚. いつもは無線のキーボードを使っていたため,気づかなかった.  じゃあ,直して行くよっと 大まかにやったことは2つ ①キー配列(ソフト側)を変更→結果的に失敗 ②1から割り当てる キーボード配列(ソフト側)を変更する まず最初に思い浮かぶのは,US配列に変えてしまえばいいんじゃね? キーボード配列を確認,日本語配列となっている. US配列にしてみる. 日本語入力のためにfcitx-mozcをインストールしているが,US配列だと動かない. US配列だと日本語打てない. 日本語配列だと,そもそもキーボードの出力がおかしい. はい,ダメ. 半ば強引に1から割り当てる じゃあ,US配列で日本語打てるようにして,半角全角キー割り当てて,パイプ機能を使うために | も割り当てればいいんでしょ! くそだりぃなまじで. やっていきましょう. まずはキー押下時の反応を探る ターミナルを立ち上げます. ディレクトリの場所はどこでもいいですが,最終的にホームディレクトリに設定ファイルを記述します. xevと打ち込むと,白いウィンドウとターミナル上に変な出力が出てきます. そこで試しにキーボードの e を押してみます すると以下の出力が得られます. 上のブロックはキーが押されたときの出力情報 KeyPress event 〜〜〜 下のブロックはキーが離されたときの出力情報 KeyRelease event 〜〜〜 user@mint43 $ xev KeyPress event, serial 38, synthetic NO, window 0x4a00001, root 0x5e1, subw 0x0, time 1704948, (658,339), root:(1529,791), state 0x10, keycode 26 (keysym 0x65, e), same_screen YES, XLookupString gives 1 bytes: (65) "e" XmbLookupString gives 1 bytes: (65) "e" XFilterEvent returns: False KeyRelease event, serial 38, synthetic NO, window 0x4a00001, root 0x5e1, subw 0x0, time 1705098, (658,339), root:(1529,791), state 0x10, keycode 26 (keysym 0x65, e), same_screen YES, XLookupString gives 1 bytes: (65) "e" XFilterEvent returns: False 上記のkeycode 26という情報がほしかった情報である. これをひたすら行い,すべてのキーに対して行います. ※私はすべて調べて,出力がおかしいキーだけ割り当てしなおしました. キー押下時の設定をファイルに記述していく 前段階で取得したキーコードを設定ファイルに書き込んでいく. pwd /home/your-username/ vi .Xmodmap 以下,.Xmodmap内部 ※表示及び保存の関係上,テキスト形式でアップしています. xmodmap.txt keycode 11 = 2 quotedbl keycode 15 = 6 ampersand keycode 79 = 7 apostrophe keycode 80 = 8 parenleft keycode 81 = 9 parenright keycode 63 = 0 keycode 83 = u U keycode 84 = i I keycode 85 = o O keycode 106 = p P keycode 34 = at grave keycode 35 = bracketleft braceleft keycode 51 = bracketright braceright keycode 88 = k K keycode 89 = l L keycode 82 = semicolon plus keycode 48 = colon asterisk keycode 90 = m M keycode 91 = period greater keycode 86 = slash keycode 62 = backslash underscore 上記のように記入する. 読みかたは keycode 106 = p Pならば, pを押すと,pを出力 Shift + p を押すと Pを出力 キーマップの正式名称わからないよ.ぴえん. アルファベットならわかるけど,キーボード上の記号とかの正式名称わからいよ.ぴえん.という方いると思います. その場合の調べ方は以下の手順で調べます. setxkbmap -print xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+japan" }; xkb_symbols { include "pc+jp+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; }; この中のsymbolsが必要 これシンボル以外の情報はなんなのか知りません. symbolsを見に行かなければいけません. 人によってディレクトリの場所が異なることは無いと思いますが,異なった場合は探してみて下さい. cd /usr/share/x11/xkb/symbols vi jp #エディタviでやってますが,nanoやgeditなど何でも可 cat jp #これだとすべてターミナル上に出力されます 以下,jp内部 default partial alphanumeric_keys xkb_symbols "106" { include "jp(common)" name[Group1]= "Japanese"; key <AE10> { [ 0, asciitilde ] }; key <AE13> { [ backslash, bar ] }; }; hidden partial alphanumeric_keys xkb_symbols "common" { // "Common" keys for jp 106/109A layouts. key <HZTG> { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Zenkaku_Hankaku, Kanji ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, quotedbl ] }; key <AE03> { [ 3, numbersign ] }; key <AE04> { [ 4, dollar ] }; key <AE05> { [ 5, percent ] }; key <AE06> { [ 6, ampersand ] }; key <AE07> { [ 7, apostrophe ] }; key <AE08> { [ 8, parenleft ] }; key <AE09> { [ 9, parenright ] }; key <AE10> { [ 0,] }; key <AE11> { [ minus, equal ] }; key <AE12> { [ asciicircum, asciitilde] }; key <AD01> { [ q, Q ] }; key <AD02> { [ w, W ] }; key <AD03> { [ e, E ] }; key <AD04> { [ r, R ] }; key <AD05> { [ t, T ] }; key <AD06> { [ y, Y ] }; key <AD07> { [ u, U ] }; key <AD08> { [ i, I ] }; key <AD09> { [ o, O ] }; key <AD10> { [ p, P ] }; key <AD11> { [ at, grave ] }; key <AD12> { [ bracketleft, braceleft ] }; key <AD13> { [ bracketright, braceright ] }; key <CAPS> { [ Eisu_toggle, Caps_Lock ] }; key <AC01> { [ a, A ] }; key <AC02> { [ s, S ] }; key <AC03> { [ d, D ] }; key <AC04> { [ f, F ] }; key <AC05> { [ g, G ] }; key <AC06> { [ h, H ] }; key <AC07> { [ j, J ] }; key <AC08> { [ k, K ] }; key <AC09> { [ l, L ] }; key <AC10> { [ semicolon, plus ] }; key <AC11> { [ colon, asterisk ] }; key <AB01> { [ z, Z ] }; key <AB02> { [ x, X ] }; key <AB03> { [ c, C ] }; key <AB04> { [ v, V ] }; key <AB05> { [ b, B ] }; key <AB06> { [ n, N ] }; key <AB07> { [ m, M ] }; key <AB08> { [ comma, less ] }; key <AB09> { [ period, greater ] }; key <AB10> { [ slash, question ] }; key <AB11> { [ backslash, underscore] }; key <LCTL> { [ Control_L ] }; この莫大なキーセットの中から探して下さい. この設定を反映します usr@mint43 $ xmodmap .Xmodmap 以下のようなエラーが出なければ成功です. xmodmap: unknown command on line .Xmodmap:2 xmodmap: 1 error encountered, aborting. 大抵はスペルミス or キーセット名が間違ってます. 根気強く設定して下さい. USキーボードだと|のボタン無いじゃん! そう思った方はShift + 0に割り当てて下さい. 参考までにキーセット一覧表 文字 キーセット 文字 キーセット 全角半角 Zenkaku_Hankaku ! exclam " quotedbl # numbersign $ dollar % percent ' ampersand ( parenleft ) parenright - minus = equal ^ asciicircum ~ asciitilde 縦棒 bar @ at ` grave [ bracketleft { braceleft ; semicolon + plus : colon * asterisk ] bracketright } braceright , comma < less . period > greater / slash ? question \ backslash _ underscore 参考にしたサイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux Mint P2V

Mintで作ったパーティション毎に dd で取り出して Virtual Box で動かそうとしたが失敗。 結局 sda 全部を dd で img にして、 Virtual Box 付属ツールで変換して Virtual Box で動かした。 やってみると、仮想ディスクは圧縮されるようで実サイズは小さくなり、sda まるごとで何の問題もなし。 ホスト:Windows10 Virtual Box 設定 ・Accel Hyper-V 最初は文字がボケていたが、 Virtual Box のサイズを 100% にして解決。 各パーティションのサイズは拡大した。 まず仮想ディスクのサイズを大きくしてから、 Linux 起動 CD の イメージファイル を Virtual Box に設定し、 そこから起動して仮想ハードディスクを操作可能にして、 パーティションの移動や拡大を実行。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu Gtkアプリ イベントハンドラー編

Ubuntu Gtkアプリ イベントハンドラー編 コード上でイベントハンドラーを書くパターン 従来通りイベントハンドラーとコールバック関数を書くやり方 Riderのエディタの場合関数のコードヒントが効きます。 namespace event2GtkApplication { class MainWindow : Window { [UI] private Button _button1 = null; public MainWindow() : this(new Builder("MainWindow.glade")) { } private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow")) { builder.Autoconnect(this); _button1.Clicked += Button1_Clicked; } private void Button1_Clicked(object sender, EventArgs a) { Console.WriteLine(e); } } } 課題 すべてのコントロールにイベントハンドラーとコールバック関数を書かないといけない。 コールバック関数の引数がわからないことがある。 Windows版のVisalStudioはボタンを押すとイベントハンドラーとコールバック関数を自動生成してくれて便利な機能があった Gladeにコールバック関数名を書くやり方 Gladeにコールバック関数名を書きコードにコールバック関数を書きます。 イベントハンドラーはAutoConnectで裏で処理してくれてる using System; using Gtk; using UI = Gtk.Builder.ObjectAttribute; namespace EventGtkApplication { partial class MainWindow : Window { [UI] private Button btn2 = null; public MainWindow() : this(new Builder("MainWindow.glade")) { } private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow")) { builder.Autoconnect(this); } public void on_btn2_clicked(Object sender,EventArgs e) { Console.WriteLine("" + sender); Console.WriteLine("" + e); } } } イベントーハンドラーの記入は不要 btn2.Clicked += on_btn2_clicked; 以下の状態だとビルドができない Glade上にコールバック関数名を記入。コード上にコールバック関数がない Glade上にコールバック関数名を記入。コード上のコールバック関数の名前が一致しない 以下の状態だとビルドができる Glade上に2つのボタンに同じコールバック関数を名記入。コード上のコールバック関数が同じ(非推奨) 課題 コールバック関数も自動生成したい。 WindowsやMonoDevelopでは自動生成があり便利だった。 GTK3はリリースしてから10年以上経つ。流石に自動生成するオープンソースがあるはず Gladeからコールバック関数を自動生成するものを探す gitに上がっているGladeToCppが理想に違いが自動生成されるコードはC++であり対象外 あとはpythonでpythonのGTKを生成するものが少々 glade gtk python generatorで検索するとヒットします。 C#を書き出してくるものがあまり見当たらない 続く
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gtk3アプリ イベントハンドラー編

Gtk3アプリ イベントハンドラー編 コード上でイベントハンドラーを書くパターン 従来通りイベントハンドラーとコールバック関数を書くやり方 Riderのエディタの場合関数のコードヒントが効きます。 namespace event2GtkApplication { class MainWindow : Window { [UI] private Button _button1 = null; public MainWindow() : this(new Builder("MainWindow.glade")) { } private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow")) { builder.Autoconnect(this); _button1.Clicked += Button1_Clicked; } private void Button1_Clicked(object sender, EventArgs a) { Console.WriteLine(e); } } } 課題 すべてのコントロールにイベントハンドラーとコールバック関数を書かないといけない。 コールバック関数の引数がわからないことがある。 Windows版のVisalStudioはボタンを押すとイベントハンドラーとコールバック関数を自動生成してくれて便利な機能があった Gladeにコールバック関数名を書くやり方 Gladeにコールバック関数名を書きコードにコールバック関数を書きます。 イベントハンドラーはAutoConnectで裏で処理してくれてる using System; using Gtk; using UI = Gtk.Builder.ObjectAttribute; namespace EventGtkApplication { partial class MainWindow : Window { [UI] private Button btn2 = null; public MainWindow() : this(new Builder("MainWindow.glade")) { } private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow")) { builder.Autoconnect(this); } public void on_btn2_clicked(Object sender,EventArgs e) { Console.WriteLine("" + sender); Console.WriteLine("" + e); } } } イベントーハンドラーの記入は不要 btn2.Clicked += on_btn2_clicked; 以下の状態だとビルドができない Glade上にコールバック関数名を記入。コード上にコールバック関数がない Glade上にコールバック関数名を記入。コード上のコールバック関数の名前が一致しない 以下の状態だとビルドができる Glade上に2つのボタンに同じコールバック関数を名記入。コード上のコールバック関数が同じ(非推奨) 課題 コールバック関数も自動生成したい。 Windows VisualStudioやMonoDevelopでは自動生成があり便利だった。 GTK3はリリースしてから10年以上経つ。流石に自動生成するオープンソースがあるはず Gladeからコールバック関数を自動生成するものを探す gitに上がっているGladeToCppが理想に違いが自動生成されるコードはC++であり対象外 あとはpythonでpythonのGTKを生成するものが少々 glade gtk python generatorで検索するとヒットします。 C#を書き出してくるものがあまり見当たらない 続く
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHPでSESSIONが保存できなくなった話

経緯 phpで作ったログインフォームが、昨日突然ログインできなくなった。 原因が分からず色々試しているうちにサーバをrebootしたら復旧した。 解決かと思ったら、今朝またログインできなくなっていた。 調べる login.php <?php session_start(); if($_POST["id"] == "admin" && $_POST["password"] == "ABC123"){ $_SESSION['login'] = true; $_SESSION['id'] = $_POST["id"]; header('Location: index.php'); exit; } echo '<form action="login.php" method="POST">'; echo 'id:<input type="text" name="id">'; echo 'password:<input type="password" name="password">'; echo '<input type="submit" value="ログイン">'; echo '</form>'; index.php <?php $session_return = session_start(); if(!$session_return){ echo "セッションエラー"; } if(!$_SESSION['login']){ var_dump($_SESSION); // header('Location: login.php'); exit; } echo "ログイン成功"; array(0) {} どうやら$_SESSIONに書き込みができなくなっているようだ。 しばらくしてlogin.phpがエラーを吐いている事に気がついた。 Warning: Unknown: write failed: No space left on device (28) in Unknown on line 0 Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0 「No space left on device」って・・・あ。 # df Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 249360 0 249360 0% /dev/shm /dev/vda4 15948532 15250520 0 100% / /dev/vda2 487652 130694 327262 29% /boot tmpfs 49872 0 49872 0% /run/user/0 ・・・ディスク埋まってる。 # du -k / | sort -rn | head -10 15374837 / 13146344 /var 12804060 /var/log 12739304 /var/log/httpd 2042276 /usr 828688 /usr/lib 491660 /usr/lib/firmware 447940 /usr/share 262768 /usr/bin 220276 /var/lib そういえばapacheのログの設定してなかったな。 # ls -l /var/log/httpd/ total 12739300 -rw-r--r-- 1 root root 2170880 May 7 12:55 access_log -rw-r--r-- 1 root root 13038845952 May 7 12:55 error_log Oh! 解決 # rm /var/log/httpd/error_log # vi /etc/httpd/conf/httpd.conf ErrorLog "/dev/null" LogLevel alert # service httpd restart これでよし。 ログイン成功 めでたしめでたし?
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

M1 mac上のDockerでWordpressの環境構築

概要 M1Mac上でDockerを動かすのに少し躓いたので備忘録として残しておきます。 今回はDockerをM1 Macで動かすことを簡単にテストしたいだけですのでwordperssで試してみることにします。 準備 デフォルトのままだと ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries と怒られてしまうのでdocker imageをamd64に対応させます。 docker pull --platform linux/amd64 mysql:5.7 実際のコード docker-compose.yml version: "3" services: mysql000ex11: image: mysql:5.7 networks: - wordpress000net1 volumes: - mysql000vol11:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: myrootpass MYSQL_DATABASE: wordpress000db MYSQL_USER: wordpress000kun MYSQL_PASSWORD: wkunpass wordpress000ex12: depends_on: - mysql000ex11 image: wordpress networks: - wordpress000net1 volumes: - wordpress000vol12:/var/www/html ports: - 8085:80 restart: always environment: WORDPRESS_DB_HOST: mysql000ex11 WORDPRESS_DB_NAME: wordpress000db WORDPRESS_DB_USER: wordpress000kun WORDPRESS_DB_PASSWORD: wkunpass networks: wordpress000net1: volumes: mysql000vol11: wordpress000vol12: まとめ wordpressをDockerで環境構築する人はあまりいない(普通契約したサーバーで全部やってくれる)のであまり参考にはならないと思いますが、少しでも誰かのお役に立てれば幸いです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS ほぼコピペでできる phpMyAdmin入れ方!!

ターミナルから操作するLinuxコマンド一覧 個人で設定されているものが入る場合は赤文字 <システムの更新> $sudo yum update MySQLへの接続確認 $sudo yum install mysql ここから $mysql -u admin -p -h MySQLDBのエンドポイント RDSで設定した -h の後 エンドポイント -u の後 ユーザーID 僕の場合admin コマンド入力後RDSで設定したパスワードがもとめられる求められる ここまで >quit $sudo yum install httpd $sudo systemctl enable httpd $sudo systemctl start httpd (httpが正常に稼働しているかブラウザで確認) $sudo amazon-linux-extras enable php7.4 $sudo amazon-linux-extras install php7.4 $sudo yum install php-mbstring php-xml $sudo systemctl enable php-fpm $sudo systemctl start php-fpm $sudo systemctl restart httpd $sudo nano /var/www/html/index.php (phpが正常に稼働しているかブラウザで確認) $cd /var/www/html $sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz $sudo mkdir phpMyAdmin $sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1 $sudo rm phpMyAdmin-latest-all-languages.tar.gz $sudo cp phpMyAdmin/config.sample.inc.php phpMyAdmin/config.inc.php $sudo nano phpMyAdmin/config.inc.php (ファイルから下記の内容を探し、修正) ここから $cfg['Servers'][$i]['host'] = 'localhost'; ↑を↓に修正 $cfg['Servers'][$i]['host'] = '先程と同じエンドポイント'; ここまで (phpMyAdminが正常に稼働しているかブラウザで確認) AWSインスタンスからパブリック IPv4 DNS オープンアドレスに http://元々のアドレス/phpMyAdmin/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む