はてなキーワード:時刻表示とは
[WIP] .NET MAUI でLinux 向けにビルドしたい!
.NET MAUI とは
.NET MAUI はC# とXAML によりGUIクロスプラットフォームアプリケーションを開発できるフレームワークです。
Linux 版
しかし、登場した当時はLinux 版はコミュニティーによる開発扱いで、現在はもはやLinux の存在は公式ドキュメントから削除されています。
現在のコミュニティーによる開発は、ほとんど停滞しており、その開発の情報はほとんど存在しません。
この資料は .NET MAUI をLinux でなんとか利用できないか試み、情報をある程度まとめたものです。
ReactNativeを使って開発を始めたので、ここに知見を溜めていく。
ちなみに筆者はウェブ系。React歴は長いけど、ReactNativeは初めて。ネイティブアプリ開発自体が初めて。
実機用の余白は SafeAreaView で対応
何も考えずに開発し、いざ実機で見てみると、余白の設定が間違っていることに気づく。
画面の上部が、実機の時刻表示やバッテリー表示部分と重なってしまっている。
https://cinemavietsub.graphy.com/courses/xemphimtutlanonlinhgiucuavietsub
https://cinemavietsub.graphy.com/courses/utlanoanlinhgiucuafullvietsubhd
[WIP] .NET MAUI でLinux 向けにビルドしたい!
.NET MAUI とは
.NET MAUI はC# とXAML によりGUIクロスプラットフォームアプリケーションを開発できるフレームワークです。
Linux 版
しかし、登場した当時はLinux 版はコミュニティーによる開発扱いで、現在はもはやLinux の存在は公式ドキュメントから削除されています。
現在のコミュニティーによる開発は、ほとんど停滞しており、その開発の情報はほとんど存在しません。
この資料は .NET MAUI をLinux でなんとか利用できないか試み、情報をある程度まとめたものです。
ReactNativeを使って開発を始めたので、ここに知見を溜めていく。
ちなみに筆者はウェブ系。React歴は長いけど、ReactNativeは初めて。ネイティブアプリ開発自体が初めて。
実機用の余白は SafeAreaView で対応
何も考えずに開発し、いざ実機で見てみると、余白の設定が間違っていることに気づく。
パソコンもLANケーブルを外しWi-Fiとブルートゥースをオフにする。(タレント教授が、イヤホンなどブルートゥース接続はノイズの侵入を許すとテレビでいっていた)
つぎに、生ハンバーグを好きな数だけこねる。好きな数だけこねる。好きな数だけこねる。
そうした後で、機内モードを解除し、一気に焼く。
Zzz
アンドロイドの電子レンジを使用中に、「・」や「前方後円墳」マークが時刻表示の横に現れた人は、今すぐiOS家電に乗り換えたほうがいい。漏電している。
🍎アカウントの2段階認証に、見慣れない番号が登録されていたら、それを直ちに削除し、鍵🔑を変えよう。漏電している。
不可視の可能性があるので、念のため、一度2段階認証をオフにして、再度オンにするといいだろう。
鍵🔑は電子レンジの中に保存しないほうがいい。
「スマホは手軽に持ち運べるデバイスである」──そんな常識は、もうとっくに過去のものだ。2045年、スマホは30インチ・10kgにまで肥大化し、街を行く人々は皆、それを背負っている。そう、もはやスマホではない。「iRock」 だ。
「革新」とは名ばかりのこの巨大デバイスは、全面タッチスクリーン、8Kディスプレイ、量子プロセッサ、AIアシスタント、超高性能バッテリーを搭載。スペックだけ見れば夢のような端末だ。だが、それを使うにはまず、自らの肉体を鍛えることから始めなければならない。 負荷軽減設計の「肩掛けベルト」が標準装備されているが、結局のところ10kgの岩は10kgの岩でしかない。ベルトは肩に食い込み、腰は悲鳴を上げ、階段を登るだけで息が切れる。満員電車ではスペースを取りすぎて乗客から冷たい視線を浴び、改札を通るたびに引っかかる。朝の通勤ラッシュを生き抜くには、スマホの操作よりもまず筋力が必要になった。
それでも人々は背負う。「お前のiRock、まだ12kg? 俺のは14kgだけど」 そんなスペックマウントが日常化し、「スマホがどれだけ便利か」ではなく「どれだけの重量に耐えられるか」がステータスになった。街には背中に巨大な黒い板を揺らしながら歩く人々が溢れ、その表面には無数の通知が浮かび、AIアシスタントが「あなたのスケジュールです」と延々と語りかけている。タッチ操作? もちろんできる。ただし、立ち止まってスマホを背中から降ろし、両手で構えないと操作は難しい。 だからこそ、装着中は基本的に音声操作が推奨されており、街中では「Siri、次の会議は?」と叫ぶサラリーマンがあちこちにいる。
かつて「利便性の象徴」だったスマホは、ついに「苦行」へと変貌した。だが、そんな人々の横を、悠々と歩く者がいる。腕に巻かれているのは、CASIO F-91W。 たった21gの軽さ、約7年持続するバッテリー、時刻表示、アラーム、ストップウォッチ、LEDライト。何のストレスもなく、充電の手間すらない。いや、そもそも「手間」という概念が存在しない。
「未来」を背負う者たちと、時刻を知るだけで満足する者たち。どちらが本当に「進化」したのか。答えは、肩の負担が物語っている。
https://b.hatena.ne.jp/site/anond.hatelabo.jp
で動くスクリプトでたとえば投稿後10分以内にブクマされページに乗ったら「1user」が「1userセルクマ 1とか5(何分後にブクマされたか)」になる。もしマイナスなら誤判定なので無視して。
時間を置いたセルクマには効かないし普通のファーストブクマカがどれぐらいの頻度で確認してるかしらないけど5分以内や1分以内もポロポロあるのでまあ目安に。
.forEach(div => {
('.entrylist-contents-title> a')
とかの
を
<>
に変えてね
他にも見落としあるかも
誤判定が減るから非公開ファーストブクマを判定できたらいいんだけどね。
// ==UserScript==// @name hatebu masuda selkmark// @namespacehttp://tampermonkey.net/// @version 0.1// @description特定時間以内にブクマされた増田を強調する// @authorYou// @matchhttps://b.hatena.ne.jp/site/anond.hatelabo.jp*// @grant none// ==/UserScript==(function() { 'use strict';const threshold = 60 *10 // 何秒以内かconst domain = 'https://anond.hatelabo.jp/'constdateTemplate = '202301020304' // 時分までurlの時刻表記constdateTest = newRegExp('\\d{' +dateTemplate.length + '}') document.querySelectorAll('div.entrylist-contents').forEach(div => {const masuda = div.querySelector('.entrylist-contents-title> a')constdateStr = masuda.href.substring(domain.length +dateTemplate.length, domain.length) if (!dateTest.test(dateStr)) { //キーワードとかconsole.log('not diary',dateStr) return } // newDateできるように変換 //https://amateur-engineer.com/javascript-date-yyyymmddhhmm/const year = parseInt(dateStr.substring(0, 4))const month = parseInt(dateStr.substring(4, 6))const day = parseInt(dateStr.substring(6, 8))const hour = parseInt(dateStr.substring(8,10))constmin = parseInt(dateStr.substring(10,12))constdate = newDate(year, month - 1, day, hour,min)const bukumaDate = newDate(div.querySelector('.entrylist-contents-date').textContent) // 2023/01/23 00:00const diffSec = (bukumaDate -date) /1000 //ms tosec if (diffSec> threshold) { return } //ブクマ数userconstuser = div.querySelector('span.entrylist-contents-users a').lastChilduser.textContent += 'セルクマ ' + (diffSec / 60) // 古い記事がマイナスになる でも2015年ぐらいの記事までかな?新着はセーフ臭い /* if(diffSec < 0) {user.textContent += ' 異常差分:' + diffSec } */ })})();
どもども。
わたしは「なにか作ってみろ」系の言説にはまったく同意しません。
わたし自身、会社に3ヶ月間みっちり導入教育をしてもらい(COBOL85とPL/I。時代がわかる……)、基本的なアルゴリズム(コントロールブレーク、マッチング、マスタ-トランザクション、ソート、マージ、etc.いよいよ時代がわかる……)の演習を(給料をもらいながら)やって、その後もプログラムとつかず離れずでフラフラと生きてきました。
こういう経験は新卒カードがあるから有効なもので、では1から始めるとしたら……、というときに、プログラミングスクール(専門学校)というのは悪くない選択肢ではないかと思います。が、行ったことないので正直わかりません。
実際自分が1から始めるという立場になったら、まったくオロオロして元増田さんのように世のなか(の気にいらないヤツら)に呪詛を吐いて満足するだけだったと思います(当然ながらそれをいくらやってもプログラミングは上達しません)。
話をプログラミングだけに限っていえば、一番大事なのはやりかたじゃなくて動機だろうと思います。
「なにか作ってみよう」というのは、なにか作ってみようと思ってない人にはまったく心に響かないでしょう。
動機ドリブンで「なにか作ってみた」人といえば思いだすのは、MikuMikuDanceの樋口優さん(ミクを簡単に踊らせたい!)とhinadanの若宮正子さん(高齢者にも遊べるゲームが欲しい!)でしょうか。
ただかれらはわたしから見れば(モチベーションを維持しそれを行動に移す)天才で、あんまり参考にならないのも確かです。
あと、元増田さんの動機は「プログラミングを生業にしたい」ということなので、野良プログラマでは履歴書上でのアピール力が弱いかも、と思います。
ビジネスで使われるアルゴリズムにはそれなりのルールがあります。安全な(バグの出にくい)コードの書きかた、「車輪の再発明」はぜず、枯れた(将棋で言えば定跡のような)アルゴリズムを使う、ほかの人に使ってもらえるための工夫(可読性の向上など)、etc.です。
「なにか作ってみよう」を繰りかえしても、そういった作法的なものが身につくかどうか、それは才能に関わってくる問題だと思います。才能だのみの手法を推奨するのは無責任だと思いますね。
また、たとえば「例をコピーして解析する」というのもある意味有効なプログラミング学習法ですが、「下手に習うと下手が伝染る」ともいいます。どれがお手本として優れているか、それを見る目はある程度ビジネス用途のプログラムに関わっていないと持てないというジレンマがあります。
野生のプログラマで就職に有効なくらいの力を見せるとしたら、なにかのコミッター(なにする人かよく知りませんが)とかになって「××ならこの人」となったり、プログラミングコンテストで上位の成績を残したりしなければいけないのかもしれません。
どうしたものでしょうね。ブクマカのみなさんの反応を見ると、専門学校でもあまり就職に有利にならない(ホントか?専門学校の意味あるのか?)という話ですが、目的が就職ならば、一番の近道のような気がします。
そこらへんからは、元増田さんがなにをしたいか、あるいは聞いてみたいだけだったのかによります。仕事には適性とやる気が大事です。あとは年齢と必要性かな。進路はオーダーメイド以外にはありえないので、提示された案を自分で選んでそれに賭けるしかないのかな、と思います。
さて、この文章は実はこの一文に反応してのものです。(↑のは前書き)
GWあたりからトシも考えずにRubyの再入門をしていまして、手始めに「首相動静」の整形ツールを作ってみました。
初心者で(Rubyに関しては仕事で使ったことないので)なにか作ってみよう、というとこの程度ですね。
これで就職に有利になるかというと、あんまりそうは思えないなあ。Excelのマクロが組めるとかのほうがどこかの事務所に潜りこめそうですよ(でもそれも最近はインフレ気味かもしれませんね)。
朝日新聞の首相動静は詳細ですが、改行が入っておらず、大変読みにくいものです。こんな感じです。
【午前】9時31分、自民党本部。33分、同党役員会。10時2分、官邸。5分、閣議。21分、宇宙開発戦略本部。34分、柴山昌彦文部科学相。38分、岩屋毅防衛相。41分、山下貴司法相。11時3分、安全保障と防衛力に関する懇談会。
【午後】0時11分、政府・与党連絡会議。44分、山口那津男公明党代表。1時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。2時20分、行政改革推進会議。52分、兼原信克官房副長官補、秋葉剛男外務事務次官。3時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。4時7分、太田氏出る。可部哲生理財局長加わる。15分、全員出る。25分、黒川弘務法務事務次官。34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。41分、谷内、宮川両氏出る。5時3分、北村氏出る。10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。20分、官邸。6時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。27分、アクフォアド大統領と会談。7時12分、署名式、共同記者発表。32分、公邸。首相主催の夕食会。8時43分、アクフォアド大統領を見送り。9時、ヨルダンのアブドラ国王と電話協議。
ただ、これはフォーマットがはっきりしており、
と、例を見るかぎりキッチリとしたルールに則っているようです。
なので、「これだったら整形できるかも」と思い、再び学びはじめたRubyで整形ツールを作ってみることにしました。
【午前】
10時02分、官邸。
10時05分、閣議。
10時21分、宇宙開発戦略本部。
【午後】
01時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。
02時20分、行政改革推進会議。
03時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。
04時15分、全員出る。
04時34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。
04時41分、谷内、宮川両氏出る。
05時10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。
05時20分、官邸。
06時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。
06時19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。
あと、午後の時刻を24時間制にしたいな、とも思いますが、それは今後の課題(つぎに首相動静が話題になったとき)とします。全角数字の計算ってどうやるんだろう?
たぶんRubyistにいろいろ突っこまれると思うけど、こんな感じです。
プログラマは玉石混淆ですが、これは石のほうの例だと思っていただければさいわいです。
※はてな記法にはシンタックスハイライトあるけど、増田だとInternal Server Errorになるのではずしました。見にくくてスマソ。
# encoding:utf-8#漢字コンバータのライブラリを取りこむ(Stringに漢字変換メソッドを付けてくれる。神)require 'kconv'#正規表現パターン# 時刻をh時m分形式からhh時mm分形式にする#否定後読みを使用する# 時は行頭にあるOneDigitHour = /^((?<![0-1])[0-9]時)/# 分は時のあとにある。このパターンとマッチすると、92;1が時、92;2が分になる。OneDigitMinute = /^([0-9]{1,2}時)(?<![1-5])([0-9]分)/# 分のない、時だけの行のパターン。否定先読みを使用HourWithoutMinute = /^([0-9]{1,2}時)(?![0-5]?[0-9]分)/# 行頭のh時m分をhh時mm分にするサブ処理(これは関数といっていいの?)def convTopHourMinute2TwoDigits(oneLine) # 時を変換 oneLine.sub!(OneDigitHour, "092;92;1") # 分を変換 oneLine.sub!(OneDigitMinute, "92;92;1092;92;2") # 分がない場合"00分"を追加 oneLine.sub!(HourWithoutMinute, "92;92;100分") #戻り値 oneLineend#入力ファイルの名前InputFilename = "首相動静2018年12月11日.txt"# 出力ファイルの名前OutputFilename = "首相動静2018年12月11日_編集済.txt"#入力ファイルをオープンinFile = File.open(InputFilename, "r")# 出力ファイルをオープンoutFile = File.open(OutputFilename, "w")# 時刻パターンはシンプルに、h時、m分、h時m分、という3パターンを結合する# 1つのパターンで全部カバーするよりこちらのほうが見やすい。というか、脳の容量の問題で1文に書ききれなかったjikokuPattern = /[0-9]{1,2}時[0-9]{1,2}分、|[0-9]{1,2}時、|[0-9]{1,2}分、/# 午前/午後ampm = /(【午前】|【午後】)/# 午前/午後、あるいは時刻の前で改行するためのパターンkaigyouSign =Regexp.union(ampm, jikokuPattern)#ファイル一括読み込み# 昔は1行ずつ読みこんでました。メインメモリが3MByteとかだったのでcontents = inFile.read.toutf8#入力終了。閉じておきますinFile.close#スコープの関係から、ここでローカル変数に代入# ※Rubyのスコープと暗黙の型には泣かされました。これに慣れるのがRubyのコツかしら# 明示的な型宣言はあったほうがいいと思うなあ。エラー出力の理由がわからなかったりするので。hour = ""#デバッグ行はコメント化しています# 時刻パターンチェックのため、コンテンツを出力してみる# p jikokuPattern.match(contents)#エントリを改行サインで行に分けるcontents.gsub!(kaigyouSign, "92;n92;92;&amp;") # "92;92;&amp;"はマッチした文字列そのもの。2重のエスケープ"92;92;"が必要# 改行チェックのため出力# p contents#入力を行で分割して各行ごとに処理contents.split("92;n") do |oneLine| # 午前/午後を示す開きカッコ"【"があるか if (oneLine =~ /^【/) then # そのまま出力 outFile.write(oneLine + "92;n") # p "午前午後:" + oneLinenext # 空白行は無視(スキップする) elsif (oneLine =~ /^[92;s ]*$/) then # 出力しない # p " 空白行:<skip>"next # 行頭に「時」があるか elsif (oneLine =~ /^[0-9]{1,2}時/) then # あったら時間表示を抜きだしておく hour = oneLine.match(/^([0-9]{1,2}時)/)[0] # p " 時:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n")next else # 「時」がなければつけて出力 oneLine = hour + oneLine # p "普通の行:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n") endend
手でやったほうが早いね。
以上
昨日、菅官房長官が夏時間検討を否定していて一安心していたのですが、まだ前向きなのではないかと思われる報道がありましたので、もう一回しつこくポストします。
https://www.fnn.jp/posts/00398120CX
夏時間を推進しようとしている議員がネットで情報収集する人種ではないことは、SNS上での皮肉や批判にもかかわらず、こうして事態が進行していることからあきらかです。FAXとかはがきじゃないとだめなのかもしれませんが、幸いWeb上にフォームがあるので、自民党と首相官邸に今すぐ自分の意見を伝えましょう。
https://www.kantei.go.jp/jp/forms/goiken_ssl.html
なぜ、限定的な問題を解決するために社会全体の構造を変更しようとするのでしょうか。私はこのような全体主義的な問題解決姿勢には大反対です。仮に開催を2時間前倒すことで猛暑にオリンピックを実施することに伴う様々な問題が解決するとしても、変更が必要なのはオリンピックのタイムテーブルであり、社会全体の時刻ではありません。
ざっくり言うと、私見では2000年問題と同じぐらいヤバく、準備期間が少ないという意味で破滅的にヤバいです(=回避不能な2000年問題)。
・世界中で夏時間と冬時間に2時間の差がある国はありません(間違っていたらご指摘ください)。ベストプラクティスが存在しません。
・何を大げさな、単に時計を進めたり戻したりすればいいだけじゃないか、と思うかもしれませんが、現代のコンピューターは世界中の様々なサービスと通信しています。そのため、時間を扱う際には内部的には一旦世界標準時で処理されるのが一般的で、内部時計を二時間進めたり戻したりすると様々な問題が起こります。ロシア/マガダン時間はすでに東京よりも二時間進んでいるので、現実的にはユーザーがスマホやPCの時刻自動設定を解除し、手動でマガダン時間に変更するしかないと思います。
・海外からオリンピックを観に来る旅行者にも「スマホの自動タイムゾーン設定を解除してロシア/マガダン時間に設定してください、マガダンのスペルはM, a, g, a, d...」などと航空会社が案内する感じになるでしょう。日本に来るのになぜかロシア時間。
・一方で、20世紀から稼働している古いシステムや、単純なシステムの中には、そもそも単一のタイムゾーン以外で動作することを考慮していないプログラムもあり、このようなシステムについては、内部時計をずらして対応するしかありません。このようなシステムから見ると、突然タイムスリップした状況に見えます。進む方はまだいいのですが、戻る方の処理は大変複雑です(たとえば、切替日の深夜営業の飲食店では、すでにタイムカードで23:30で打刻した人のあとに、22:30の打刻が出現するような状況になる)。この影響範囲についてはまったく予想がつきません。いい加減に対応すると、時計を進めていないサービスと現在時刻で同意できないために、通信ができないような事態が起こります。
夏時間の概念自体は新しいものではないので、ちゃんと日本夏時間が標準化され、各種OSが対応することが前提であれば、工数をかけて設計・実装を行えば、最新のOS上で新しく開発されるシステムは理屈上は問題なく対応することができます。
しかし、日本だけでなく世界中ですでに稼働している、時刻を表示する無数のプログラムについては、時刻表示に必要な処理や時刻設定に必要な選択肢を書き足す必要があります(日本政府が公式にロシア/マガダン時間を採用すると宣言しない限りは)。十分な準備期間を取らずに、変更が必要な箇所をすべて洗い出し、問題なく修正するのは大変むずかしいことです。また、上述のように、古いシステムではそもそも変更が不可能なこともあります。
万が一いいかげんな実装や適当な設計が行われるシステムが混じっていると、そのシステムと通信する際に2時間時間がずれて処理が行われるようなことが起こります。具体的には様々な表示時刻や予約時刻が2時間ずれたり、通信不通になるなどの問題が起こり得ます。
この結果、
・日本夏時間に正式対応していないので、ユーザーが時刻をロシアマガダン時間に手動設定することで当面正常動作するシステム(古いスマホやPCなど)
・日本夏時間に対応しないために、内部時計を進めたり戻したりして対応するシステム
・日本夏時間に対応せずに日本標準時間のまま動作し、ユーザーが時刻を頭の中で変換しなければいけないシステム
が混在することになり、社会的な混乱は必至です。
人間も機械も「それ、どっちの13時?」みたいに迷い、間違えるという毎日がやってきます。文房具屋のレシートには日本標準時が、コンビニのレシートには日本夏時間が印字されているような感じになるでしょう。ツイッターやフェイスブックなどのもともと複数のタイムゾーンに対応しているシステムや、JRや航空会社など大きい会社はたぶんちゃんと対応してくれますが、美容院の予約システムや小規模なネット予約システムは対応できずに日本標準時のまま稼働し続け、勘違いが起こります。
社会的に大きなメリットがあるのであれば、この大混乱のリスクを取ってでも前進するべきだと思いますが、本件については導入のメリットがあまりに限定的であり、得られるメリットに比べてリスクが大きすぎると思います。
サブ機でWindowsタブレットを使っている。もともとWindows8.1が入っていたが更新してWindows10になっている。
それが今回「Creators Update」とかいう大型のアップデートで更新されるとタッチキーボードが表示されなくなってしまった。
タブレットである。キーボードはついていないのである。なのにタッチキーボードが表示されなくなったのである。
以前ならバーの時刻表示の隣辺りにキーボードアイコンが常時表示されていて、そこをタッチすればいつでもキーボードが表示された。
また、入力窓をタッチすれば自動的にタッチキーボードが出てきた。
それがなくなった。
何か入力するにはプログラムのスクリーンキーボードとかいうのを起動させる必要が出てきた。
これキーが凄く小さいしタッチしても反応薄いし全く使い物にならない。
MSはアホかと思った。
これ自分の機種や使い方による特殊なエラーかと最初に思ったけどググってみると他にもいるみたいだからやっぱりマイクロソフト公式のアップデートの仕様なんだと思う。
以前のタッチキーボードのプログラムはアップデートしても消えてなくて、レジストリをいじれば出てくる。と公式サポートで推奨してるようだから、困ってる人はやってみよう。↓
Windows10 Fall Creators Update適用後、タッチキーボード(フルキーボード)が表示されない。【Ver1709】 -マイクロソフトコミュニティ