久しぶりにDokku (0.29.0)でruby-getting-startedやったら色々ハマったのでメモ
久しぶりにDokku触りたくなったのでDigitalOceanでruby-getting-startedやってたら2日位ハマったのでメモ。
$ dokku -v dokku version 0.29.0
とりあえず動くまでにやったこと
Droplet
はBasic ($6/mo)
のMemory 1GBだとビルド中エラーが起こるのでBasic ($12/mo)
のMemory 2GBにする。bundle lock --add-platform x86_64-linux
でプラットフォームを追加する。app/assets/config/manifest.js
を設置する
app/assets/config/manifest.js
//= link_tree ../images //= link_directory ../javascripts .js //= link_directory ../stylesheets .css
gem 'psych', '~> 3.1' を追加する。
その他良く分からないエラーが起きたらホストで
dokku repo:purge-cache ruby-getting-started
そんなにハマらなかったエラー
とりあえずプラットフォーム追加、manifest.jsはログが出てたので、それで対処しただけ。
メモリ不足はググったらStackoverflowの記事が出てきて(URL無くした)、そういうものかと思ってDropletをResizeしたらビルドが動くようになった。
Rails5のに関しては結構ハマってしまい、最初とりあえず Ruby 3.1.3
でやるか!って思ってGemfile
に
ruby '3.1.3'
とか書いてデプロイしたらwrong number of arguments (given x, expected x) (ArgumentError)
みたいなエラーが出てわけ分からなくなってしまいちょっと詰まった。
(wrong number of arguments (given x, expected x) (ArgumentError)みたいなエラーはアホみたいに遭遇した)
Rails5.2はRuby2.5.xが推奨とのことなので、指定を2.5.9に変更した。
結構ハマったエラー
wrong number of arguments (given x, expected x) (ArgumentError)
系のエラーはめちゃくちゃ出て、ググるたびに解決方法が違って混乱したけど、とりあえず Gemfile
に
- gem 'psych', '~> 3.1'
を追加するという解決方法が出てきて追記したらそのエラーは直った。
が今度はRuby 2.5.9
でpsych ~>3.1
を使ってるにも関わらず、dokkuのエラーログにruby 2.5.0
の文字列とpsych-5.0.1
の文字列が...
--- ERROR REPORT TEMPLATE ------------------------------------------------------- ``` ArgumentError: wrong number of arguments (given 4, expected 1) /tmp/build/vendor/bundle/ruby/2.5.0/gems/psych-5.0.1/lib/psych.rb:322:in `safe_load' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/safe_yaml.rb:31:in `safe_load' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:496:in `block (2 levels) in read_checksums' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:495:in `wrap' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:495:in `block in read_checksums' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package/tar_reader.rb:116:in `seek' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:494:in `read_checksums' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:547:in `block (2 levels) in verify' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package/tar_reader.rb:29:in `new' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:546:in `block in verify' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package/file_source.rb:30:in `open' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package/file_source.rb:30:in `with_read_io' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:545:in `verify' /tmp/build/vendor/ruby-2.5.9/lib/ruby/2.5.0/rubygems/package.rb:526:in `spec' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/rubygems_integration.rb:209:in `spec_from_gem' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/source/rubygems.rb:167:in `install' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/installer/gem_installer.rb:54:in `install' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/installer/parallel_installer.rb:186:in `do_install' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/installer/parallel_installer.rb:177:in `block in worker_pool' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/worker.rb:62:in `apply_func' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/worker.rb:57:in `block in process_queue' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/worker.rb:54:in `loop' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/worker.rb:54:in `process_queue' /tmp/build/vendor/bundle/ruby/2.5.0/gems/bundler-2.3.10/lib/bundler/worker.rb:91:in `block (2 levels) in create_threads' ```
Rails + DokkuでHello Worldしたいだけなのに、なぜここまで時間かかるのか...と思ったけど最初の方にデプロイしたコードのキャッシュとかがDokkuに残ってるのかと思い、キャッシュクリア系のコマンドが無いか探したら見つけた。
repo:purge-cache <app> # Deletes the contents of the build cache stored in the repository
なのでdokkuをホストしてるサーバーで下記のコマンドを実行...
$ dokku repo:purge-cache ruby-getting-started
そして改めてpush....
git push dokku master
........
..........
....................................................................
やったぜ。
その他
Dokku Proというのが出てますね。
Dokkuの高機能版+WebUIみたいな感じなのかな。
今回久しぶりにDokku試すついでにLedokkuというDokkuにWebUIを提供してくれるOSS試したけど、まだ発展途上という感じで結局ホストでコマンド打ってチュートリアルを進める事になりました。
MySQLでmysql: Can't read dir of '/usr/local/etc/my.cnf.d' (OS errno 2 - No such file or directory)
環境
macOS Mojave 10.14.1
解決方法
$ mkdir /usr/local/etc/my.cnf.d
Error
$ mysql -u user -p mysql: Can't read dir of '/usr/local/etc/my.cnf.d' (OS errno 2 - No such file or directory) mysql: [ERROR] Fatal error in defaults handling. Program aborted! $
謎
謎
Laradockでphp-fpmのビルドが失敗する(ERROR: Service 'php-fpm' failed to build:)
Laravelでプロジェクト作るぞー。
$ git clone https://github.com/Laradock/laradock.git $ cd laradock $ cp env-example .env $ docker-compose up -d --build workspace nginx postgres php-fpm Creating network "laradock_frontend" with driver "bridge" Creating network "laradock_backend" with driver "bridge" Creating network "laradock_default" with the default driver Building postgres Step 1/4 : FROM postgres:alpine ---> 5df4f9af771f Step 2/4 : LABEL maintainer="Ben M <git@bmagg.com>" ---> Using cache ---> cbd40267a5dc Step 3/4 : CMD ["postgres"] ---> Using cache ---> fce54f198ca3 Step 4/4 : EXPOSE 5432 ---> Using cache ---> 9e99ef40b306
ヨシ…。
E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/imagemagick-6-common_6.9.7.4+dfsg-11+deb9u5_all.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickcore-6-arch-config_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickcore-6-headers_6.9.7.4+dfsg-11+deb9u5_all.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickcore-6.q16-3_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickwand-6-headers_6.9.7.4+dfsg-11+deb9u5_all.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickwand-6.q16-3_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickcore-6.q16-3-extra_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not Found E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/p/python3.5/libpython3.5-minimal_3.5.3-1_amd64.deb 404 Not Found E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/p/python3.5/python3.5-minimal_3.5.3-1_amd64.deb 404 Not Found E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/p/python3.5/python3.5_3.5.3-1_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickcore-6.q16-dev_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickwand-6.q16-dev_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not FoundFetched 70.6 MB in 7s (9688 kB/s) E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/libmagickwand-dev_6.9.7.4+dfsg-11+deb9u5_all.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/g/ghostscript/libgs9-common_9.20~dfsg-3.2+deb9u4_all.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/g/ghostscript/libgs9_9.20~dfsg-3.2+deb9u4_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/g/ghostscript/ghostscript_9.20~dfsg-3.2+deb9u4_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/imagemagick-6.q16_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not Found E: Failed to fetch http://security-cdn.debian.org/pool/updates/main/i/imagemagick/imagemagick_6.9.7.4+dfsg-11+deb9u5_amd64.deb 404 Not Found E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? ERROR: Service 'php-fpm' failed to build: The command '/bin/sh -c if [ ${INSTALL_IMAGEMAGICK} = true ]; then apt-get install -y libmagickwand-dev imagemagick && pecl install imagick && docker-php-ext-enable imagick ;fi' returned a non-zero code: 100
ヨシ…。
前使った時は出てなかったんだけどな…。
さすが GitHub
…解決済みやで。
./laradock/php-fpm/Dockerfile
の 485行目
に下記のような記述がある。
########################################################################### # ImageMagick: ########################################################################### USER root ARG INSTALL_IMAGEMAGICK=false RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ apt-get install -y libmagickwand-dev imagemagick && \ pecl install imagick && \ docker-php-ext-enable imagick \ ;fi
これを下記のように変更する。
########################################################################### # ImageMagick: ########################################################################### USER root ARG INSTALL_IMAGEMAGICK=false RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ apt-get update && \ apt-get install -y libmagickwand-dev imagemagick && \ pecl install imagick && \ docker-php-ext-enable imagick \ ;fi
apt-get update && \
が追加されている。
頼む…!
$ docker-compose up -d --build workspace nginx postgres php-fpm ... ... ... Successfully built ee1a7d326193 Successfully tagged laradock_nginx:latest Creating laradock_docker-in-docker_1 ... done Creating laradock_postgres_1 ... done Creating laradock_workspace_1 ... done Creating laradock_php-fpm_1 ... done Creating laradock_nginx_1 ... done $
ヨシ!
さらに続けて Laravel
プロジェクトをついでに作成する…。
laradock/.env
の 8行目
辺りの APP_CODE_PATH_HOST=../
を APP_CODE_PATH_HOST=../app
などに変更して、、、
$ docker-compose exec workspace composer create-project "laravel/laravel=5.7.*" app Do not run Composer as root/super user! See https://getcomposer.org/root for details Installing laravel/laravel (v5.7.19) - Installing laravel/laravel (v5.7.19): Downloading (100%) Created project in app > @php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 86 installs, 0 updates, 0 removals - Installing symfony/polyfill-ctype (v1.10.0): Downloading (100%) - Installing vlucas/phpdotenv (v2.6.1): Downloading (100%) - Installing symfony/css-selector (v4.2.2): Downloading (100%) - Installing tijsverkoyen/css-to-inline-styles (2.2.1): Downloading (100%) ... ... ... Writing lock file Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: beyondcode/laravel-dump-server Discovered Package: fideloper/proxy Discovered Package: laravel/nexmo-notification-channel Discovered Package: laravel/slack-notification-channel Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully. > @php artisan key:generate --ansi Application key set successfully. $
そして localhost
にアクセス…!
…。
ビルドした後 .env
変更してもだめってことですね。
再度 docker-compose up -d --build workspace nginx postgres php-fpm
を実行して…。
ヨシ!
Laravel5.5 + PHP7.0 でEC2上のアプリからS3に画像をアップロードしようとしてえらいハマった
解決策
/etc/php.ini
内のupload_max_filesize
を変更する。
変更前
; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 2M
変更後
; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 20M
問題点
Laradockでの開発環境を整えて、ローカルだとS3
への画像アップロード成功するのに、EC2
上だと何故かアップロードできずかなりハマった。
if ($request->hasFile('image-file')) { // ローカルだとこっちへ来る $path = Storage::putFile('images', $request->file('image-file'), 'public'); // $url =Storage::url($path); } else { // EC2上だとこちらへ来る Log::info("no images"); }
Log::info($request->all())
でログを見ると下記のような感じ。
なぜかmimeType
もapplication/octet-stream
になってしまっている…。
Laradock
'image-file' => Illuminate\Http\UploadedFile::__set_state(array( 'test' => false, 'originalName' => 'image.JPG', 'mimeType' => 'image/jpeg', 'size' => 2577303, 'error' => 0, 'hashName' => NULL, )),
EC2
'image-file' => Illuminate\Http\UploadedFile::__set_state(array( 'test' => false, 'originalName' => 'image.JPG', 'mimeType' => 'application/octet-stream', 'size' => 0, 'error' => 1, 'hashName' => NULL, )),
EC2
上でパーミッション変更したり、Form::file
に'accept'=>'image/*'
を追加したり、JPG
という拡張子がおかしいのかと思い/etc/mime.types
を確認してみたりしたけど、結局/etc/php.ini
のupload_max_filesize = 2M
が原因だったみたい…。
なんでローカルだと成功してたかは{laradock}/php-fpm/laravel.ini
内のupload_max_filesize = 20M
が適用されてたからっぽい。
/etc/php.ini
変更後はmimeType
も正しいものになった。
'image-file' => Illuminate\Http\UploadedFile::__set_state(array( 'test' => false, 'originalName' => 'image.JPG', 'mimeType' => 'image/jpeg', 'size' => 2105078, 'error' => 0, 'hashName' => NULL, )),
mimeType
がapplication/octet-stream
になってたのは、多分ファイルサイズ上限の2M
に引っかかりファイルがアップロードできてなくて、存在しないファイルからmimeType
を推測しようとしてapplication/octet-stream
とかになってたんだきっと(未調査)…
laravel upload image file mime type octet
とかで検索してもバシッとくる結果が出てこなかったのは、きっとこんな初歩的なミスをする人はあんまいないということだろう…。
(´・ω・`)
(´・ω:;.:…
(´:;….::;.:. :::;.. …..
さくらVPSでdokkuを使おうと思った時に詰まった点
さくらVPS(Ubuntu16.04)でdokkuを動かしたかったけど詰まったのでメモ。
インストール方法
Dokku - The smallest PaaS implementation you've ever seen
インストール出来たのにブラウザからアクセスできない!などの問題は下記の記事で全て解決します(ありがたい)
さくらVPSのubuntu
は、デフォルトでiptablesの80番開いてないみたいなので開きます。
qiita.com
ブラウザから設定が済むとサンプルアプリのデプロイドキュメントが開きます。
Dokku - The smallest PaaS implementation you've ever seen
これもドキュメント通りに進めれば大体大丈夫です。
順番的に先にdokku側でDBの設定とかを行ってからローカルのアプリをデプロイするので、途中下記のようなメッセージが出ますが無視して大丈夫。
$ dokku postgres:link rails-database ruby-rails-sample -----> Setting config vars DATABASE_URL: postgres://postgres:c235e4e1378e5d38ef9fd4824902f510@dokku-postgres-rails-database:5432/rails_database -----> Restarting app ruby-rails-sample App ruby-rails-sample has not been deployed $
ローカルマシーンでgit remote add dokku dokku@dokku.me:ruby-rails-sample
を打つ所が出てきますが、これは自分のドメインに変更します。
例えばexample.com
のような自作ドメインを取得していたら
git remote add dokku dokku@example.com:ruby-rails-sample
とかになります。
独自ドメイン取ってない場合はgit remote add dokku dokku@<ipアドレス>:ruby-rails-sample
とかになるのかな(試してないので不明)
あと、git push dokku master
を打つと! [remote rejected] master -> master (pre-receive hook declined)
みたいなエラーが最初出ました(詳細なログは消えた…)
pre-receive hook declined · Issue #501 · dokku/dokku · GitHub
上記を参考にubuntu
側で下記のコマンドを打ちます。
$ sudo wget -O /etc/init/docker.conf https://raw.github.com/dotcloud/docker/master/contrib/init/upstart/docker.conf $ sudo service docker restart
多分Dockerfile
をダウンロードして、その設定を反映させて…みたいな事をやってると思われます。
Docker
ほとんど使ってないので下手なことは言えない…。
これで無事git push dokku master
が通るようになりました!
後はログの最後あたりに表示されるhttp://ruby-rails-sample.<ドメイン名>
みたいなアドレスにアクセスすれば…!!
はい。
とりあえずubuntu
側でdokkuのログを見ます。
$ dokku logs ruby-rails-sample ... ... ... 2018-04-02T19:20:50.998966458Z app[web.1]: ActiveRecord::NoDatabaseError (FATAL: database "rails_database" does not exist 2018-04-02T19:20:50.999055653Z app[web.1]: ): ... ... ... $
何やらrails_database
が無いよ!みたいなエラーに見えます。
そういえばサンプルアプリのデプロイドキュメントで一回DB作成に失敗したような気がしてました。
$ dokku postgres:create rails-database
Waiting for container to be ready
ERROR: unable to connect
$ dokku postgres:create rails-database
Postgres service rails-database already exists
というわけで下記を参考にDBを作り直します。
DBの削除はdokku postgres:destroy <DB名>
みたいですね!
GitHub - dokku/dokku-postgres: BETA: a postgres plugin for dokku
$ dokku postgres:destroy rails-database Cannot delete linked service
はい。
一旦アプリとDBのリンクを外します。
$ dokku postgres:unlink rails-database ruby-rails-sample
...
...
...
...
=====> Application deployed:
$
dokku postgres:destroy <DB名>
をする時は確認のため<DB名>
を求められるので入力します。
$ dokku postgres:destroy rails-database ! WARNING: Potentially Destructive Action ! This command will destroy rails-database Postgres service. ! To proceed, type "rails-database" > rails-database -----> Deleting rails-database Deleting container data -----> Stopping container =====> Container stopped Removing container Removing data =====> Postgres container deleted: rails-database $
再度DBを作成します。
$ dokku postgres:create rails-database Waiting for container to be ready Creating container database Securing connection to database =====> Postgres container created: rails-database =====> Container Information Config dir: /var/lib/dokku/services/postgres/rails-database/config Data dir: /var/lib/dokku/services/postgres/rails-database/data Dsn: postgres://postgres:41a32887830a6fe5932a9aac47e9dc43@dokku-postgres-rails-database:5432/rails_database Exposed ports: - Id: 8fba0ce1f2b92d38a1b92b29b589d1bbc76cf1eab1ec37c3960bd44ccf13e347 Internal ip: 172.17.0.2 Links: - Service root: /var/lib/dokku/services/postgres/rails-database Status: running Version: postgres:10.2 $
あ、完全に見たこと無い実行結果が出ました。
何か無事にDBが作成されているような感じがします。
再度DBをアプリにリンクします。
$ dokku postgres:link rails-database ruby-rails-sample
...
...
...
=====> Application deployed:
$
|aa| | (^o^)ノ | < おやすみー |\⌒⌒⌒ \ \|⌒⌒⌒⌒|  ̄ ̄ ̄ ̄ ||<
IntelliJ IDEAのScalaプロジェクトで「エラー: メイン・クラスMainが見つからなかったかロードできませんでした」と出た
環境
IntelliJ IDEA 2017.2.5
Build #IC-172.4343.14, built on September 26, 2017
JRE: 1.8.0_152-release-915-b12 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6
エラー内容
IntelliJ IDEA Community版でScalaプラグイン入れてScalaプロジェクト作り、src/main
に新しいディレクトリ作ってそちらにソースコード追加しようとしたが、何故かNew
メニューにScala Class
が出てこず、無理やりMain.scala
のようなファイルを作りRun
してもエラーが出てしまう…。
src/main/scala-2.12.4/Main.scala
object Main extends App { val a = 2 val b = 3 println(s"a * b = ${a * b}") }
実行結果
エラー: メイン・クラスMainが見つからなかったかロードできませんでした
解決方法
新規作成したプロジェクト:idea-study
新規作成したディレクトリ:src/main/scala-2.12.4
File
→ Project Structure
→ Project Settings
→ Modules
でidea-study
を選択
右のツリーの中からscala-2.12.4
を選択して、上の方にあるMark as:
のSources
をクリックしOK
をクリックする
解決後
ディレクトリがソースコード用のディレクトリとして認識され、色もデフォルトのものから青色に変わり、New
にもScala Class
が表示されるようになり、Run
も通るようになる。
a * b = 6
その他
N予備校の大規模Webアプリ/Scala基礎Scala基礎コース/07.IDE を使った Scala プログラミング
で詰まったのでメモ。
昔はsrc/main
にディレクトリ追加すれば自動でソースコード用のディレクトリとして認識されたのかな。
ちなみにN予備校の方ではsrc/main/scala-2.11
となっていたけど、今のバージョンに合わせてsrc/main/scala-2.12.4
としている。
別にscala-2.11
でも動くと思う(多分)。
それと実行は出来ているけど、別のよく分からないエラーが出ているが、それは今度調べる(多分)。
objc[94437]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10ee9a4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10ef844e0). One of the two will be used. Which one is undefined.
問題 1-1 奇数偶数自動判別プログラム
''' Check odd or even ''' def odd_or_even(a): num_show = 9 if a%2==0: print('{0} is even.'.format(a)) for i in range(a+2, (a+2) + (num_show * 2)): if i%2==0: print(i) else: print('{0} is odd.'.format(a)) for i in range(a+2, (a+2) + (num_show * 2)): if i%2 != 0: print(i) if __name__ == '__main__': a = input('Enter a number: ') a = float(a) if not a.is_integer(): print('Enter a integer please.') exit(0) odd_or_even(int(a))