に投稿 コメントを残す

MacでPythonのFlask環境を構築してHello, world!してみた

しんやです。

今回はMacでFlask環境を構築してPythonアプリを開発する準備として、Hello, world!をブラウザ表示させる手順を共有します。

Python3がインストールされていることを確認します。

shinyaishizaki@ShinyaIakinoMBP ~ % python3 --version
Python 3.9.6

Flaskをインストールします。

mkdir myproject
cd myproject
python3 -m venv .venv
. .venv/bin/activate
. .venv/bin/activate
pip install Flask

hello.pyファイルを作成します。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
  return "<p>Hello, world!</p>"

Flask環境でhello.pyを実行します。

(.venv) shinyaishizaki@ShinyaIakinoMBP python_app % flask --app hello run
 * Serving Flask app 'hello'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000

ブラウザで「http://127.0.0.1:5000/」にアクセスし、
Hello, world!
と表示されることを確認できれば、成功しています。

ではまた。

に投稿 コメントを残す

GitHubにPushできない時の対処法

こんにちは。しんやです。

GitHubにPushするときにエラーにハマって解決に時間がかかったので、解決方法を共有します。

以下のように、メインブランチへPushしようとした時に、エラーとなります。

ユーザー名@パソコン名 newportfolio % git push origin main
To https://github.com/ユーザー名/newportfolio.git
 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/ユーザー名/newportfolio.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

「git pull」コマンドを使用しても、以下のとおりエラーとなります。

ユーザー名@パソコン名 newportfolio % git pull origin main
From https://github.com/ユーザー名/newportfolio
 * branch            main       -> FETCH_HEAD
hint: Diverging branches can't be fast-forwarded, you need to either:
hint: 
hint:   git merge --no-ff
hint: 
hint: or:
hint: 
hint:   git rebase
hint: 
hint: Disable this message with "git config advice.diverging false"
fatal: Not possible to fast-forward, aborting.

「git pull」コマンドに「rebase」オプションを付けて実行します。

ユーザー名@パソコン名 newportfolio % git pull origin main --rebase
From https://github.com/ユーザー名/newportfolio
 * branch            main       -> FETCH_HEAD
warning: skipped previously applied commit d1d955e
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Successfully rebased and updated refs/heads/main.

再度、Pushします。

ユーザー名@パソコン名 newportfolio % git push origin main
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 1.22 KiB | 1.22 MiB/s, done.
Total 5 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/ユーザー名/newportfolio.git
   d26baaf..0a55d48  main -> main

以上です。

誤りや質問などありましたらお気軽にコメントしてください。

に投稿 コメントを残す

IT業界への就職・転職相談はこちらからお気軽にどうぞ!

相談室の入り口掛ける札の画像

しんやです。

ココナラにて、IT業界未経験や経験の浅い方に向けて就職、転職相談に乗っております。

IT業界未経験の方の就職・転職相談に応じます エンジニア歴6年の私が初心者に優しくアドバイスします

アドバイスは、
・IT業界全体について
・IT業界の採用動向について
・志望するIT企業の選定について
・プログラミング学習ロードマップについて
・応募書類の添削
をはじめ、ご相談者様のご希望に沿って対応いたします。

システム開発現場での後輩指導経験や、プログラミング初学者向けのメンターとしての豊富な活動経験を活かし、初心者の方に優しくアドバイスいたします。

フリーランスエンジニアとして独立を希望する方もご相談ください。

IT業界を目指す方や、IT業界でスキルアップを目指す方に少しでもお役に立てれば幸いです。

ご利用お待ちしております。

IT業界未経験の方の就職・転職相談に応じます エンジニア歴6年の私が初心者に優しくアドバイスします
に投稿 コメントを残す

GitコマンドでGithubに新規登録〜変更点を登録する流れ

プログラミングシャットダウンの画像

こんにちは。しんやです。

Githubにファイルを新規登録した後、ローカルでファイルを変更(編集)したときに、Githubへの登録で詰まったので共有します。

Githubへの新規登録のおさらい

ターミナルを開き、Githubへ登録したいファイルのあるディレクトリまでcdコマンドで移動し、以下のコマンドを実行します。

git init
git add .
git commit -am "first commit"
git push origin main

Githubにファイルを初回登録できました。

Git hubに変更点のみ登録する方法

ターミナルから以下のコマンドを実行します。

git init
git add -u
git commit -am "bundle install"
git push origin main

変更したファイル(今回はGemfile.lock)をGithubに登録できました。

ポイントは、「git add」するとき「-u」オプションをつけて変更点のみaddすることです。

このとき、Gemfile.lockしかaddされていないので、新規登録と同様にcommitとpushすることで、addされたファイルのみをGithubへ登録することができます。

なぜエラーにハマったのか

今回は個人開発です。

ググるとチーム開発を想定した(「git pull」して〜などの)記事が多くヒットします。

初歩的すぎて、個人開発で定期的にGithubへpushする方法がうまくヒットしませんでした。(Gitの教科書に書かれているはずですが。。。)

そのため、不要なpullコマンドを実行することでローカルとリモートリポジトリの差分が出てしまいエラーになっていました。(多分)

私と同じように、初学者やGit/Githubを利用したWeb開発に慣れていない人の参考になれば幸いです。

ではまた。

プログラミングで困ったら、MENTAで質問しよう!

プログラミングでエラーにハマったり、思うような機能を実装できなかったりしたときは、MENTAでご相談ください。

こちらから新規登録とメンタリングの利用をすると、最大5,000円のAmazonギフト券がもらえます!(記事執筆時点:2022年9月現在)

お気軽にどうぞ〜

に投稿 コメントを残す

Windows10にRuby on Railsの環境を構築する

プログラミングする男性

こんにちは、しんやです。

今回はWindows10でRuby on Railsの環境を構築する手順についてお話します。

つまずいたポイントも解説するのでぜひご覧ください。

  1. VS Codeをインストール
  2. Rubyの最新版をインストール
  3. 【つまずき1】エラーも何も表示されない?!
  4. SQLite3の最新版をインストール
  5. Railsの最新版をインストール
  6. 【つまずき2】Railsのウェルカムページが表示されない?!
  7. Rubyの最新版をアンインストール
  8. Rubyのバージョン2.6.5-1(x64)をインストール
  9. Railsの最新版をインストール
  10. Railsサーバー起動
  11. Railsのウェルカムページが表示される
  1. VS Codeをインストール
    こちらからインストール
  2. Rubyの最新版をインストール
    Progateを見て、Rubyの最新版をインストール
  3. 【つまずき1】エラーも何も表示されない?!
    index.rbを実行しても何も表示されません。
    なぜなら、保存し忘れていたから。
    いつもオートセーブを有効化していますが、Windows10を再インストールし、VS Codeも再インストールしたことでその設定がデフォルトの無効化になっていました💦
  4. SQLite3の最新版をインストール
    Progateを見ながらインストール。
  5. Railsの最新版をインストール
    上記4のProgateを見て、コマンドプロンプトからインストール。
  6. 【つまずき2】Railsのウェルカムページが表示されない?!
    ググると、Railsのバージョンが高すぎることが理由のよう。
    Ruby3.Xではいけないのか💦
  7. Rubyの最新版をアンインストール
    エクスプローラーからフォルダごと削除。ワーニングが出ても削除を実行。
  8. Rubyのバージョン2.6.5-1(x64)をインストール
    Progateのとおり、Rubyのバージョン2.6.5-1(x64)をインストール。
  9. Railsの最新版をインストール
    コマンドプロンプトから「gem install rails -v “5.2.6”」を実行。
  10. Railsサーバー起動
    コマンドプロンプトから「rails s」を実行。
  11. Railsのウェルカムページが表示される
    ブラウザからlocalhost:3000にアクセスすると、Railsのウェルカムページが表示されました。

いかがでしたでしょうか。

今回の記事を参考にRailsライフを存分にお過ごしください!

私はRuby on Railsでポートフォリオサイト制作に入ります!!

ではまた~

に投稿 コメントを残す

MacBook Air (13-inch, Mid 2011)整備済み製品(中古)を購入して初めてしたこと

こんにちは。しんやです。

MacBook Airを購入(13-inch, Mid 2011)整備済み製品(中古)を購入したので、初めてしたことを纏めます。

フリーランスエンジニアやそれを目指してプログラミング学習している人で、「Mac使いたいけど高いなぁ」という人はぜひこの記事を読んで整備済み製品を検討してみてください。

1. OSのアップグレード
2. McAfeeのインストール
3. Sublime textのインストール
4. Visual Studio Code(VS Code)のインストール

  1. OSのアップグレード

MacBook Air 2011だと最新のOSであるBig Surには対応していません

最終対応のオペレーティングシステムはmacOS High Sierra 10.13.6だと分かりますので、こちらをダウンロードしてインストールします。


2. McAfeeをインストール

セキュリテイソフトは必要なので、すでに契約していてWindowsやAndroidスマホにインストールしているMcAfeeを入れることにしました。

McAfeeにログインして自分宛てにメールを送信し、リンクにしたがってダウンロード、インストールします。


3. Sublime textをインストール

ここからは、プログラミング学習やシステム開発で便利なツールをインストールします。

まずは、Sublime text


4. Visual Studio Code (VS Code)をインストール

次に、Visual Studio Codeをインストールします。これで一通り開発ができる状況になりました。


10年前の整備済みMacBook Airでどれだけサクサクプログラミングできるかは試してみないと分からないので、実験結果は分かり次第お知らせします。


ではまた。

に投稿 コメントを残す

【GAS】Google Apps Scriptでうるう年判定と日数判定を行う方法【カレンダー作成】

カレンダーの画像

こんにちは。しんやです。

GAS(Google Apps Script)でうるう年判定と日数判定をしながらカレンダー作成するコードを書いたので共有します。

職場で勤怠シートを作成することを想定して開発しました。

function myFunction() {

  Logger.log('*** myFunction Start ***');

  //スプレッドシートAppを呼び出し
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  Logger.log('ss:'+ ss);

  //アクティブセルを取得
  var myCell = ss.getActiveCell();

  Logger.log('myCell:' + myCell);
  Logger.log('myCell.getRow():' + myCell.getRow());

  //「年」または「月」が変更されたとき
  if(myCell.getRow()==1 || myCell.getRow()==2) {
  
    //呼び出し
    createCallendar(ss);
  }
  Logger.log('*** myFunction End ***');
}

function createCallendar(ss) {

  Logger.log('*** createCallendar() Start ***');

  //年を取得
  var year = ss.getRange("A1").getValue();
  
  //うるう年判定
  var uruFlg = false;
  if (year % 4 == 0) {
    uruFlg = true;
  } else if (year % 400 == 0) {
    uruFlg = true;
  } else if (year % 100 == 0) {
    uruFlg = false;
  }

  Logger.log('year: ' + year);

  //月を取得
  var month = ss.getRange("A2").getValue();

  Logger.log('month:' + month);

  //日数判定しセット
  var lastDate;
  switch (month) {
    case 1:
    case 3:
    case 5:
    case 7: 
    case 8:
    case 10:
    case 12:
      lastDate = 31;
      break;
    case 4:
    case 6:
    case 9:
    case 11:
      lastDate = 30;
      break;
    case 2:
      lastDate = 28;
      break;
  }

  //うるう年の2月のとき、29日までセット
  if (uruFlg == true && month == 2) {
    lastDate = 29;
  }

  Logger.log('lastDate:' + lastDate);

  //タイトル行をセット
  var titleRow = 7;

  //日にちを消去
  ss.getActiveSheet().getRange("A8:A38").clearContent();

  //日にちを入力
  for (var i = titleRow + 1; i <= titleRow + lastDate; i++) {
    ss.getActiveSheet().getRange(i, 1).setValue(i - titleRow);
  }

  Logger.log('*** createCallendar() End ***');

}

以下の処理を実現するのに苦労したので、開発メモとしてたくさんの人に参考にしていただけると嬉しいです。

  • アクティブなスプレッドシートの取得(ファイルとしてアクティブなスプレッドシートの取得)
  • アクティブシートの取得(ワークシートとしてアクティブなシート)
  • アクティブシートの取得(ワークシートとしてアクティブなシート)
  • Switch文で複数条件が真のときの書き方
  • Switch文で複数条件が真のときの書き方

ではまた。

【募集】
初心者限定で、メンターとしてプログラミングを教えます。
ぜひ、チェックしてください。
①時間単位:https://www.timeticket.jp/items/122081/
②1ヶ月単位:https://www.timeticket.jp/items/122104/


【詳細】
プログラミングのメンターについて詳しくは公式LINEまで。
LINEの友だちになると、簡単にメッセージが送れます。
お気軽にお問い合わせください。

に投稿 コメントを残す

xserverでベーシック認証をつけて練習用サイトを公開する3つの手順

こんにちはしんやです。

manablogの学習課題(https://manablog.org/code-life-start/)に取り組み、ベーシック認証をつけて公開しました。

ベーシック認証の設定について、説明したブログが点在していて公開まで2時間もかかってしまったので、1か所に纏めることにしました。


手順1 FileZillaでHTML、CSSファイルをアップロードする

FileZillaを使い、ローカルで開発したファイルの配置を崩さないよう注意してHTML、CSSファイルをサーバーへアップロードします。

手順2 Xserverでアクセス制限をOFFにする

Xserverのサーバーパネル画面にあるメニューから「アクセス制限」を選び、親ディレクトリ、子ディレクトリともにアクセス制限を「OFF」にします。


手順3 .htaccess、.htpasswdファイルをアップロードする

「.htaccess」ファイルを以下の通り作成します。

AuthUserFile "/home/xs350049/xs350049.xsrv.jp/htpasswd/airbnb/.htpasswd"
AuthName "Member Site"
AuthType BASIC
require valid-user

「.htpasswd」ファイルを以下の通り作成します。

※パスワードはこちらで暗号化してください。

[shinyaishizaki]: [shinyaishizaki:暗号化したパスワード]


.htaccessはindex.htmlと同じディレクトリに配置します。

htpasswdファイルはサーバー名フォルダ下のhtpasswdフォルダに(例:/xs350049.xsrv.jp/htpasswd/airbnb)に配置します。

.htaccessファイル内の記述と一致していることを確認してください。


これで設定は完了です。

アップロードしたページにアクセスして認証を通り、ページが表示されることが確認できます。

お疲れさまでした。

に投稿 コメントを残す

プログラミング学習ロード~その5~

こんにちは。しんやです。

manablogので出されたHTML、CSSコーディングについて、2つの課題のうち1つに取り組んだので、注意点をまとめます。

と泣き言をいいながらも一通り進めました。

というのは本音ですね。

僕が今まで仕事やプライベートで開発したCOBOLやExcelVBAは1行間違えたとしてもコンパイルエラーになって、文法上のミスは修正できます。

しかし、HTMLやCSSはマークアップ言語なのでコンパイルしないため、実行されてしまい、ページを確認するとグチャグチャになってしまうということがよくあります。

それでは、見ていきます。

Airbnbでお家、アパート、お部屋をシェアしよう」のLP1枚を模写します。

のっけからレイアウト微妙ですが、paddingやmarginの細かい値には一旦目をつむります。

1. 背景色

最初から苦労しました。

<div>を重ねていくものだと思い、白い背景、黒い背景を交互に書いていきましたが、背景1枚をグラデーションしてあることに気づき、修正しました。

body全体のbackgroundにlinear-gradientで設定します。

  • black 20%, white 20%

とすることで、ページ上方から20%のところで黒白がはっきり分かれます。

body {
  background: linear-gradient( 
    black 0%, black 20%,
     white 20%, white 30%, 
     black 30%, black 60%,  
     white 60%, white 80%,  
     black 80%, black 90%, 
     white 90%, white 100%,
     white 100%);
}



2. ロゴとスタートボタン

    <header>
      <div class="hdr">
        <div class="logo">
          <img class="logoimg" src="img/airbnb_logo.png" alt="airbnbのロゴ">
        </div>
        <div class="sbtn">
          <a href="" class="starthosting">ホスティングをはじめる</a>
        </div>
      </div>
    </header>
.logoimg {
  width: 50px;
  height: 50px;
  position: absolute;
  left: 0;
}

position: absolute;
left: 0;

で左詰めします。

.starthosting {
  width: 300px;
  height: 50px;
  background-color: rgb(240, 60, 90);
  font-size: 20px;
  font-weight: bold;
  color: white;
  text-align: center;
  text-decoration: none;
  border-radius: 100vh;
  position: absolute;
  right: 0;
  display: flex;
  justify-content: center;
  align-items: center;

right: 0;

display: flex; で右端に横並びで表示。

justify-content: canter;(※text-align: center; としても無効です)

align-items: center;

でボタン内の文言を上下左右中央揃えにします。


3. display: flex; で横並びを実現

    <div class="container">
      <div class="hosting">
        <h1>ホスティングこそ<br>まさにAirbnbが<br>Airbnbである理由</h1>
      </div>
      <div class="movie">
        動画
      </div>
    </div>
.container {
  display: flex;
  margin: 0;
}

.hosting {
  width: 100%;
  height: 300px;
  padding: 300px 50px;
  margin: 0;
}

.movie {
  width: 100%;
  height: 900px;
}

containerクラスにdisplay: flex;と指定した上で、hostingとmovieという2つのクラスを入れ子で持たせることでdivを横並びにできます。


    <div class="container">
      <div class="item">
        <img src="img/hosting1.jpg">
        <div>お部屋をホスティングしたことで私の人生は変わり、思い出に残る経験や出会いに恵まれました。</div>
        <img class="reka" src="img/reka.png">
        <div>ミラノのホスト</div>
      </div>
      <div class="item">
        <img src="img/hosting2.jpg">
        <div>自宅にゲストを迎え、ホスティングすることで、起業家として経済的に自由な道を切り開くことができました。</div>
        <img class="darrel" src="img/darrel.png">
        <div>アトランタのホスト</div>
      </div>
      <div class="item">
        <img src="img/hosting3.jpg">
        <div>パスタ作り体験のホスティングを通じて、文化を生かし続けられています。</div>
        <img class="nerina" src="img/rerina.png">
        <div>パロンバーラ・サビーナのホスト</div>
      </div>
      <div class="item">
        <img src="img/hosting4.jpg">
        <div>Airbnbは、「自分の家でゲストをもてなす」という情熱を仕事に変える機会を与えてくれました。</div>
        <img class="clair" src="img/clair.png">
        <div>チェンマイのホスト</div>
      </div>
      <div class="item">
        <img src="img/hosting5.jpg">
        <div>ベドウィンのテントにゲストを受け入れることで、世界中の人たちに出会うことができました。</div>
        <img class="mohammed" src="img/mohammed.png">
        <div>ワディ・ラムのホスト</div>
      </div>
      <div class="item">
        <img src="img/hosting6.jpg">
        <div>ゲストが自然や大切な人とつながれるエコハウスをホスティングすることが大好きです。</div>
        <img class="marko" src="img/marko.png">
        <div>パラチのホスト</div>
      </div>
    </div>
.container {
  width: 100%;
  overflow: auto;
  display: flex;
  scroll-snap-type: x mandatory;
  margin: 0;
  color: white;
}

.item {
  margin: 50px;
  float: none;
  scroll-snap-align: start;
  font-size: 20px;
}

containerクラスにitemクラスを入れ子で持たせ、display: flexで横並びを実現します。

scroll-snap-type: x mandatory; で横スクロールバーを表示させます。


4. HTMLでリストボックスを作成するのは面倒

    <div class="menu">
      <h2>お部屋のタイプは?</h2>
      <div class="room">
        <div class="room-title">まるまる貸切</div>
        <div class="sub-room">
          <ul>
            <li>まるまる貸切</li>
            <li>個室</li>
            <li>シェアルーム</li>
          </ul>
        </div>
      </div>
.room, .guest, .place {
  width: 500px;
  color: white;
  font-size: 20px;
  font-weight: bold;
  text-align: center;
  margin: auto;
}

.sub-room, .sub-guest, .sub-place {
  display: none;
}

.room:hover .sub-room {
  display: block;
}

.guest:hover .sub-guest {
  display: block;
}

.place:hover .sub-place {
  display: block;
}

display: none; でデフォルト非表示にし、

:hover でマウスポインタを乗せたときに display: block; で表示させるという2段階でコーディングします。


5. メニューはtableで実現

<div>
      <table class="link">
        <thead>
          <th>企業情報</th><th>コミュニティ</th><th>ホスト</th><th>サポート</th>
        </thead>
        <tr>
          <td>Airbnbのご利用方法</td><td>ダイバーシティ&ビロンギング</td><td>宿泊をホストする</td><td>Airbnbの新型コロナウイルスに対する取り組み</td>
        </tr>
        <tr>
          <td>ニュースルーム</td><td>アクセシビリティ対応</td><td>オンライン体験をホストする</td><td>ヘルプセンター</td>
        </tr>
        <tr>
          <td>株主・投資家のみなさまへ</td><td>Airbnbアソシエイト</td><td>体験をホストする</td><td>キャンセルオプション</td>
        </tr>
        <tr>
          <td>Airbnb Plus</td><td>ゲストの紹介</td><td>責任あるホスティング</td><td>近隣コミュニティサポート</td>
        </tr>
        <tr>
          <td>Airbnb Luxe</td><td>Airbnb.org</td><td>リソースセンター</td><td>信頼&安全</td>
        </tr>
        <tr>
          <td>HotelTonight</td><td></td><td>コミュニティセンター</td><td></td>
        </tr>
        <tr>
          <td>Airbnbビジネスプログラム</td><td></td><td></td><td></td>
        </tr>
        <tr>
          <td>ホストのおもてなしがもたらす、特別な旅</td><td></td><td></td><td></td>
        </tr>
        <tr>
          <td>採用情報</td><td></td><td></td><td></td>
        </tr>
        <tr>
          <td>共同創業者からの手紙</td><td></td><td></td><td></td>
        </tr>
      </table>
    </div>
    

ページ下部のメニューはtableを使うときれいです。

<tr>と<td>がごっちゃにならないよう注意。


6. 右詰めは margin: 0 0 0 auto;

   <footer>
      <div class="footer">
        <div class="info">
          <p>Airbnb Global Services Limited<br>観光庁長官(01)第S00001号(2018年6月15日-2023年6月14日)<br>©2021 Airbnb, Inc.・プライバシー・利用規約・サイトマップ・企業情報</p>
        </div>
        <div class="lang-money">
          <p><a>日本語(JP) ¥JPY</a></p>
        </div>
        <div class="sns">
          <p><a>F</a><a>T</a><a>I</a></p>
        </div>
      </div>
    </footer>
.footer {
  border-top: solid 1px black;
  display: flex;
}

.lang-money {
  margin: 0 0 0 auto;
}

.sns {
  margin: 0 0 0 auto;
}

display: flex; したうえで、margin: 0 0 0 auto; で右詰め。

細部まで実現できていませんが、一先ずLP1枚作成する課題に取り組んだのでこれでよしとし、今後勉強を重ねて知識を蓄えてから、いい感じに修正したいです。

JavaScriptやjQueryなども覚えてメニューの制御ができるようにもします。

コピーできるところはぜひコピーしてください!!

ではまた。

に投稿 コメントを残す

プログラミング学習ロード~その4~

こんにちは。しんやです。

レスポンシブ対応できるようになりました!!

先日失注したサイトについて、修正してみたらいい感じにレスポンシブ対応できてます。自信になりました。

引き続き、学習を重ねては実践することを繰り返して、サイト制作スキルを上げていきます。

ではまた。