カテゴリーアーカイブ 未分類

著者:ym

WinSCP と Windows 10 ダークモードの相性

Windows 10 のダークモードと WinSCP の自動判定が相性悪く、固まって困ってます。

WinSCP 5.15 あたりから Windows 10 のダークモード対応が入ったのですが、これまた非常に相性が悪い。Windows 10 「黒モード」でも「白モード」でも、WinSCP 「黒」「自動」共に固まります。

私の PC だけなのかもしれませんが。

やむを得ず「WinSCP」のウィンドウだけ「白」モード固定設定にして回避しました。

  • この記事いいね! (0)
著者:ym

httpd 2.4 で php 5.2

動かす必要が出てきたので準備をしています。apxs を使用したコンパイルでインストールしたけど configtest で unixd_config がエラーとなった為、少しパッチを当てました。

unixd_config → ap_unixd_config
--- php-5.2.17/sapi/apache2handler/php_functions.c      2010-01-03 18:23:27.000000000 +0900
+++ php-5.2.17-apache24/sapi/apache2handler/php_functions.c     2019-10-11 12:19:53.000000000 +0900
@@ -383,7 +383,7 @@
        char *p;
        server_rec *serv = ((php_struct *) SG(server_context))->r->server;
 #if !defined(WIN32) && !defined(WINNT) && !defined(NETWARE)
-       AP_DECLARE_DATA extern unixd_config_rec unixd_config;
+       AP_DECLARE_DATA extern unixd_config_rec ap_unixd_config;
 #endif

        for (n = 0; ap_loaded_modules[n]; ++n) {
@@ -414,7 +414,7 @@
        php_info_print_table_row(2, "Hostname:Port", tmp);

 #if !defined(WIN32) && !defined(WINNT) && !defined(NETWARE)
-       snprintf(tmp, sizeof(tmp), "%s(%d)/%d", unixd_config.user_name, unixd_config.user_id, unixd_config.group_id);
+       snprintf(tmp, sizeof(tmp), "%s(%d)/%d", ap_unixd_config.user_name, ap_unixd_config.user_id, ap_unixd_config.group_id);
        php_info_print_table_row(2, "User/Group", tmp);
 #endif

こんな感じで変更した所 configtest は無事通過。

  • この記事いいね! (0)
著者:ym

popサーバプログラムの追跡

今日はあまりにも問い合わせの多い pop サーバ不具合の追跡作業を行いました。

POP3 over SSL だったのを non-SSL で通信させパケットダンプ。さらにダンプしたデータを wireshark で読み込ませてどこで壊れるかを探しました。

恐らくは OS が 32bit から 64bit へ変わったことにより size_t 周りがバグったと思われる症状です。

size_tは環境によって定義が変わるという話

https://ota42y.com/blog/2014/11/08/size-t/

私自身、他人の C 言語プログラムがデバッグできる知識は無いのですが、問い合わせの事を考えるとやむを得ず追跡しています。がしかし、原因箇所特定できず。

つづく。

  • この記事いいね! (0)
takahashi 著者:takahashi

jQueryのAjaxで通信前に任意の処理をさせる方法

Javascriptで複雑な操作を簡単に記述できるライブラリであるjQueryで、Ajaxの処理を直感的に記述することができる$.ajax()というメソッドがあります。

クライアントサイドのjavascriptで何か作った方であれば恐らく多くの方が使ったことのあるものだと思います。

$.ajax()には、本体の$.ajax()につなげる形で、通信状況に応じた処理を書き分けることができるようになっています。

例えば”.done()”メソッドの中に処理を書けば、通信が成功したときのみ任意の処理をさせることができますし、”.fail()”であれば通信に失敗したときのみ(400,500系のステータスコードの時も含む)に任意の処理を行わせることができます。あるいは、”.always()”を指定すると成功、失敗関係なく通信終了後に任意の処理をさせることができます。

ここまでは多くのサイトでよく紹介されていますが、$.ajaxでは通信終了後だけでなく、通信直前に任意の処理をさせることもできます。

“beforeSend”という指定です。

通信終了後の場合は$.ajax()のあとに.done()のようにドットで繋げていく書き方ですが、beforeSendについては$.ajax()内にオプションとして記述する形になっているので注意が必要です。

 $.ajax(
                {
                    url:'/path/to/api,
                    type:'GET',
                    processData: false,
                    contentType: false,
                    headers: {
                        'X-User-Token': user.token,
                        'X-User-Token-Sec': user.token_sec,
                    },
                    data: {
                        'key': 'value',
                    },
                    beforeSend: function() { // 通信前に実行
                        $('#loading').css('display','block');
                    },
                }
            )
            // Ajaxリクエストが成功した時発動
                .done( 
// 以下省略

ところで、なぜ$.ajax()メソッド内で通信前の処理も記述するのかというと、例えばAjax通信を開始したらローディングアイコンを表示し、通信が終わったらローディングアイコンを消したい、といったことをしたい場合に、実は$.ajaxの外にこういった処理を書いてしまうと、Ajax通信の始まりとアイコンの表示のタイミングがうまく同期してくれない、という現象が発生することがあります。

$.ajaxの中であればちゃんと意図したとおりのタイミングで処理を実行してくれるので、上記のような現象も起きず、安心できます。

jQuery + AjaxをつかったリッチなWebアプリを作る際は、参考にしてみてください。

  • この記事いいね! (0)
著者:ym

HTTPS ページでの HTTP/HTTPS 混在

Google Chrome 79.0以降では、https (SSL) ページ上で http コンテンツがある場合は、動作を停止するようになるらしいです。

今までは鍵マークの異変だけでしたが、今度は JavaScript や、iframe 等を http (non SSL) でコンテンツを引用している場合もそもそも動作しなくなる形。

安全性も上がるし、スッキリして良いですね。

混合コンテンツの防止

https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content?hl=ja

  • この記事いいね! (0)
著者:ym

TLS1.0/1.1 の無効化に向けて

Google Chrome で TLS 1.0/1.1 が無効化に向けて動いている様です。

2020年1月13日にはChrome 79以降でTLS 1.0またはTLS 1.1接続のページに警告メッセージが表示されるようになる。

3月に一般リリース予定のChrome 81では、予定通りTLS 1.0/1.1のブロックが始まる。

https://security.srad.jp/story/19/10/04/2254213/

サーバ側としては既に TLS1.2 で受付している為、とくに影響を受けないが、古いブラウザ向も受け付ける為に現状では TLS1.0 や TLS1.1 も受付をしている。

予定を見ると、2020/1 月から Google Chrome で開始され、3 月には Firefox も TLS1.2 化となっている様です。管理画面など重要なサーバでは TLS1.0 ややめる等の対応をしているが、これからは TLS1.2 のみ受付へ変更していく予定です。

SSL Server Test

https://globalsign.ssllabs.com/

サーバがどのTLSプロトコルを受け付けているかチェックできるので、調べてみては。

  • この記事いいね! (0)
asaba 著者:asaba

【androidjava】editConfigurationを使って古いアプリを復活させる

リリースからしばらく経っている・またはリリース停止をしている

アプリは、editConfigurationを使うことでまたビルドできるようになります。

 

まず最初に、makeProjectの右隣にあるドロイド君の顔が書いてある

appというボタンでモジュールと名前を追加していきます。

 

 

尚、ここではappではなくビルド出来ない状態の「editConfiguration」と

書かれている状態を前提として書いています。

 

次に、templeteからAndroidAppを選択してokをおします。

 

 

すると、error: Module not specifiedというエラーがでますが、

これはfileメニューにあるSync Project with Gradle filesを

選択してgradleをアップデートすることで

解決できます。(押したらすぐにアップデート&デバッグが始まります)

 

ちなみにmoduleが見つからなかったのはgradle更新が止まっているためです。

月日が流れてライブラリの居場所が変わったかライブラリが消されたなど

理由はさまざまですが、androidのライブラリは変化が速いので

こまめにチェック・アップデートは必要ですね。

 

gradleのアップデートとビルドをしているので、少し時間がかかる・

または固まるといった動きをしますがここでエラーが

無ければ再度editConfigurationからモジュールを選択し直して

みて、そこでまたModule not specifiedがでなければ晴れてアプリを

ビルドできるようになります。

 

参考記->古いandroidアプリがビルド出来ない

  • この記事いいね! (0)
著者:ym

日中間の仮想専用線

また、日本のサーバーから回線とインターネットのポートサービスのみでアクセスさせるため、ICP/PSB Beianライセンスを必要とせず、誰でも利用できる点も特徴

https://cloud.watch.impress.co.jp/docs/news/1204089.html

サービス範囲を見ると、CDNetworks 社が中国拠点で待ち受けている図になってるようです。それでライセンスがいらないということなのかな。

クラウドサービスとSSL/TLS通信が一般的になり、あまりVPNを使わないでどうにかする世の中になっているのかもしれませんが。こういった閉域網は、こういう所でまだ必要ですね。目的は変化していますが。

  • この記事いいね! (0)
takahashi 著者:takahashi

人気のポチポチゲー”クッキークリッカー”がまさかのAndroidアプリ化!!!

先日、Twitterにこんな投稿が。

なんと、あの名作(?)ゲームであるクッキークリッカーがAndroidアプリ化してテスト公開されているようです…!!!

Cookie Clicker
Cookie Clicker
Developer: DashNet
Price: Free

クッキークリッカーとは、ゲーム画面に表示された大きなクッキーをクリックすることで、ただひたすらクッキーを生産するというゲームです。

クッキークリッカー 日本語版

“当たり前のことですが、このウェブサイトは広告とアクセス解析のためにクッキーを使用しております。”という文言にクスっとしてしまいました。

最初はクリックすることでしかクッキーの数を増やすことができませんが、クッキーの個数が増えていくとそのクッキーと交換で一度により多くのクッキーを生成できるアイテムを購入したり、クッキー職人のおばあさんを雇ったりすることができるようになります。

つまりゲームが進んでいくごとに桁違いの枚数のクッキーが生産できるようになるため、その快感が病みつきになってついポチポチし続けてしまう、シンプルだけど中毒性の高い内容になっています。

そんなクッキークリッカーがAndroidアプリになったとのことで、クッキークリッカーのファンの間で話題になっています。

僕も実際に入れてみました。

起動すると画面の真ん中にどでかくクッキーがドーンと表示されます。

まず最初はただひたすらクッキーを連打しまくって、クッキーの数をためていきます。

ある程度たまっていくと、Storeでアイテムを購入することができるようになります。

一番最初に購入できるのは、自分の代わりに勝手にクッキーをクリックしてくれるマウスポインタです。

こんな感じで、勝手にポチポチし続けてくれます。

アイテムを少しづつ増やしていき、自分でもクッキーをタップしまくると、だんだんとんでもない生産量を持つ、とんでもないアイテムが使えるようになっていきます。

まだ一度も触ったことがない方も、Web版ですでに体験済みの方も是非一度遊んでみてはいかがでしょうか。

  • この記事いいね! (0)
著者:杉浦

【Laravel】6.1.0リリース

 Release v6.1.0 · laravel/framework
 Eager Lazy Collections Added to Laravel 6.1 – Laravel News
 Laravel v6.1.0がリリースされました。Laravelはバージョン6からセマンティックバージョニングを採用しているため、v6.0.xからv6.1.0への移行時にソースコードを修正する必要はありません。composer updateのみでOKです。
 私的に最もありがたいのは

Fixed migration class duplicate check in make:migration command (#30095)

 です。何が起きるかというと、次のようにmake:migrationによるマイグレーションファイル生成時、migrateコマンド実行時にエラーの起きるファイルの生成をしようとしていた場合、それを止めてくれます。

>php artisan make:migration modify_column_in_users_table
Created Migration: 2019_10_03_173420_modify_column_in_users_table

>php artisan make:migration modify_column_in_users_table

   InvalidArgumentException  : A ModifyColumnInUsersTable class already exists.

 今まではファイル名の接頭辞にある時刻の違いによって同名クラスを持つファイルを生成できていましたが、未然に防がれるようになりました。これによっていざマイグレーションしようという際に失敗する場合が減ります。特に開発者が一人の時は滅多に起きなくなるでしょう。
 以下Laravel Newsで取り上げらているEager Lazy Collectionsについての簡単な解説です。

Added Illuminate\Support\LazyCollection::eager() method (#29832)

 LazyCollectionにeager()メソッドが増えました。LazyCollectionはLaravel6からの新機能です。これは必要な分だけデータを持つCollectionとでもいうべきものです。LazyCollectionはCollectionより処理が遅くなりがちですが、とにかくメモリを食いません。DB(データベース)に保存されているPHPに許可されているメモリサイズを優に超えるデータ全体を対象にSQLを意識せずなんやかんやすることもできます。
 eagerメソッドはLazyCollectionのままCollection的なふるまいをする速度優先用メソッドです。LazyCollectionのプロパティに対象全体を保持することによってCollection同様の速度を実現します。対象全体を保持するのでメモリエラーの危険が顕在化しますが、LazyCollectionインスタンスをCollectionインスタンスに移す必要がなくなります。

$users = User::cursor();

$users = $users->eager();// ここで$users内部に保持

$count = $users->count();// $users内部の参照で終わるから高速

$users->each(function ($user) { // $users内部の参照で終わるから高速
    //
});

 特別何もしなくても恩恵にあずかれる変更にSeeder実行時のCLIの詳細化があります。

Added runtime information output for seeders (#30086)

 Laravel6.1.0からはdb:seedを実行した時、次のように各Seederの実行時間が表示されます。

Seeding: UserSeeder
Seeded:  UserSeeder (1.56 seconds)
  • この記事いいね! (1)