「転生するとエンジニアだった」になれるか?

例えば現状から打破し転生できると考えると

フリータや工場の生産ラインで進歩のない仕事で面白くないことと考えているあなた。ITの世界をよく知らないので自分でもできるのではと思われている方は、ぜひ見てくださいね。。IT業界は味方によっては僕の好きな「転スラ」、「蜘蛛ですが、なにか?」と一緒ですよ?しかしどのような気持ちでアニメ同様に苦しい修行があるのです。以下で說明していきます。

エンジニア転生は良い考えです

もっともポピラーなJava言語は、ワンピースの生まれた年に生まれてます。わずか25年程しかないのですが習得するとオールマイティな分野での活躍する言語なので食いっぱぐれない言語です。しかしつづけてたくさんの視聴者をひきつけているワンピース作者の尾田先生は本当に尊敬ですね。

50年前はパソコンもないし、Macやwindowsもなかったのですよ。歴史が浅いのです。逆にすごい勢いで成長しているのです。あなたも頑張れば活躍できるのです。私は40年プログラムを作成し続けいますがプログラミング言語は50程やってきました。転生したつもりや頑張ってみるには素晴らしくやりがいある職種ですよ。

しかし、「転スラ」や「蜘蛛です」の修行は命がけです。プログラムも修行は簡単ではないです!

転生アニメに感化されたかのように、自分はプログラムで苦労無しで成功できると勘違いする方たちが、烏合の衆のようにIT分野へ流れ込んできてます。転スラのリムルや蜘蛛ですの主人公は、凄まじい修行で魔法を強めていきますよね。エンジニアも同じです。プログラムで脱落率が90%は努力できない方なのです。勘違いしないでください。下積みはどの業種でもあるのです。しかしエンジニアは実力主義の下剋上の世界ですので、アニメの主人公のように命がけで頑張れば短い期間で転生することが可能な職種なのです。

リムル・テンペストのスキルのように

ユニークスキル捕食者=Java言語

ユニークスキル大賢者=Python言語

のように習得していきましょう。アルティメットスキルのラファエルなど習得し一国の主になってくださいね。

エンジニアの進化の過程

具体的にはITエンジニアにはすぐにはなれません。まずはプログラマーとしての下積みが2~3年はかかります。その後、要件定義や設計や結合テストや運用テストに関わることできて給料がプログラマーよりアップできるのです。その後のキャリアプランもマネージャーとして人の管理へとすすみキャリアアップとなるのです。在宅副業も本来はこのマネージャークラスでないと交渉負けしてしまうのは目に見えてくるでしょう

まとめ

今後の人生プランに、プログラムが好きだから真剣にプログラマーへ転生したい。やエンジニアへ転生したいなど考えられた方、是非ユニークスキル習得してもっとプログラムが好きになって世の中の役に携わってくださいね。素晴らしい世界が待っております。日本だけではなくアジアを視野にいれ成長されてくださいね。IT業界のリムル目指してください。IT業界のルフィーになって海賊王になってください。

Spring Boot MYSQLエラー発生 2021.07.20

急にMYSQLと接続できなくなりました

src/main/resourcesフォルダのapplication.propertiesの内容変更シないと対応できませんでした。皆さんの参考になればと思い記載いたしました

1.事象

下記エラーが急に発生した



  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.2)

2021-07-20 00:38:18.589  INFO 27032 --- [           main] c.t.TutorialDevelopApplication           : Starting TutorialDevelopApplication using Java 15 on DESKTOP-1FEFSKI with PID 27032 (C:\Users\user\Dropbox\My PC (DESKTOP-1FEFSKI)\Downloads\TutorialDevelop\target\classes started by user in C:\Users\user\Dropbox\My PC (DESKTOP-1FEFSKI)\Downloads\TutorialDevelop)
2021-07-20 00:38:18.592  INFO 27032 --- [           main] c.t.TutorialDevelopApplication           : No active profile set, falling back to default profiles: default
2021-07-20 00:38:19.206  INFO 27032 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-07-20 00:38:19.270  INFO 27032 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 54 ms. Found 1 JPA repository interfaces.
2021-07-20 00:38:19.805  INFO 27032 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8082 (http)
2021-07-20 00:38:19.815  INFO 27032 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-07-20 00:38:19.822  INFO 27032 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.48]
2021-07-20 00:38:20.001  INFO 27032 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-07-20 00:38:20.001  INFO 27032 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1369 ms
2021-07-20 00:38:20.207  INFO 27032 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-07-20 00:38:20.272  INFO 27032 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.32.Final
2021-07-20 00:38:20.438  INFO 27032 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-07-20 00:38:20.569  INFO 27032 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-07-20 00:38:21.744 ERROR 27032 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1006) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-4.0.3.jar:na]
	at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.2.jar:2.5.2]
	at com.techacademy.TutorialDevelopApplication.main(TutorialDevelopApplication.java:10) ~[classes/:na]
Caused by: java.time.zone.ZoneRulesException: Unknown time-zone ID: JST
	at java.base/java.time.zone.ZoneRulesProvider.getProvider(ZoneRulesProvider.java:279) ~[na:na]
	at java.base/java.time.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:234) ~[na:na]
	at java.base/java.time.ZoneRegion.ofId(ZoneRegion.java:121) ~[na:na]
	at java.base/java.time.ZoneId.of(ZoneId.java:409) ~[na:na]
	at java.base/java.time.ZoneId.of(ZoneId.java:357) ~[na:na]
	at com.mysql.cj.protocol.a.NativeProtocol.configureTimeZone(NativeProtocol.java:2191) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2218) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1315) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:964) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	... 50 common frames omitted

2021-07-20 00:38:21.744  WARN 27032 --- [           main] o.h.e.j.e.i.JdbcEnvironmentInitiator     : HHH000342: Could not obtain connection to query metadata

java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1006) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-4.0.3.jar:na]
	at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.2.jar:2.5.2]
	at com.techacademy.TutorialDevelopApplication.main(TutorialDevelopApplication.java:10) ~[classes/:na]
Caused by: java.time.zone.ZoneRulesException: Unknown time-zone ID: JST
	at java.base/java.time.zone.ZoneRulesProvider.getProvider(ZoneRulesProvider.java:279) ~[na:na]
	at java.base/java.time.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:234) ~[na:na]
	at java.base/java.time.ZoneRegion.ofId(ZoneRegion.java:121) ~[na:na]
	at java.base/java.time.ZoneId.of(ZoneId.java:409) ~[na:na]
	at java.base/java.time.ZoneId.of(ZoneId.java:357) ~[na:na]
	at com.mysql.cj.protocol.a.NativeProtocol.configureTimeZone(NativeProtocol.java:2191) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2218) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1315) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:964) ~[mysql-connector-java-8.0.25.jar:8.0.25]
	... 50 common frames omitted

2021-07-20 00:38:21.749 ERROR 27032 --- [           main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
2021-07-20 00:38:21.750  WARN 27032 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
2021-07-20 00:38:21.752  INFO 27032 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2021-07-20 00:38:21.764  INFO 27032 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-07-20 00:38:21.782 ERROR 27032 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.2.jar:2.5.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.2.jar:2.5.2]
	at com.techacademy.TutorialDevelopApplication.main(TutorialDevelopApplication.java:10) ~[classes/:na]
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845) ~[spring-beans-5.3.8.jar:5.3.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-5.3.8.jar:5.3.8]
	... 16 common frames omitted
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
	... 33 common frames omitted

2.原因


Connector/JというMySQL用のJDBC Driverのバージョンが原因.

8.0.23からタイムゾーンに関する仕様に変更が入ったようです。
タイムゾーン指定の方法に変更があったことで、以前指定必須だった serverTimezone のパラメータが指定できなくなったようです

3.非推奨となったパラメータ

また下記が非推奨となりました

spring.datasource.initialization-mode=always
spring.datasource.sql-script-encoding=UTF-8

https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-23.html

4.対策

&connectionTimeZone=JST → &connectionTimeZone=SERVER
spring.datasource.initialization-mode=always → spring.sql.init.mode=never
spring.datasource.sql-script-encoding=UTF-8 → spring.sql.init.encoding=UTF-8
 へ変更する

まとめると下記です

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/tutorial_db?characterEncoding=UTF-8&connectionTimeZone=SERVER
spring.datasource.username=root
spring.datasource.password=★★rootのパスワード★★
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.sql.init.mode=never
spring.sql.init.encoding=UTF-8

プログラムの世界はアクティブ・ラーニングの考え方が必要。【いつまで学生気分なんだよ!】

アクティブ・ラーニングとは、能動的学修のことを差し、学修者(児童、生徒、学生等)が受け身ではなく、自ら能動的に学びに向かう学習法のことです。
具体的には、グループワークやディベートが一例としてあげられ、学修者の認知的、倫理的、社会的能力、教養、知識、経験といった能力を育むことが目的とされています。

これは、文部科学省の用語集や、2012年8月に取りまとめられた中央教育審議会答申に出てくる以下の記述が参考になります。

「生涯にわたって学び続ける力、主体的に考える力を持った人材は、学生からみて受動的な教育の場では育成することができない。従来のような知識の伝達・注入を中心とした授業から、教員と学生が意思疎通を図りつつ、一緒になって切磋琢磨し、相互に刺激を与えながら知的に成長する場を創り、学生が主体的に問題を発見し解を見いだしていく能動的学修(アクティブ・ラーニング)への転換が必要である。」

文部科学省が出している用語集の中でも、アクティブ・ラーニングを「教員による一方向的な講義形式の教育とは異なり、学修者の能動的な学修への参加を取り入れた教授・学習法の総称」としており、主に大学の大教室で行われている一斉講義の質的転換を図るためのものでした。 狙いとしては「認知的、倫理的、社会的能力、教養、知識、経験を含めた汎用的能力の育成を図る」とし、具体的な学び方も、発見学習や問題解決学習、体験学習、調査学習から、グループディスカッション、ディベート、グループワーク等があげられています。 要は、教員による一方通行型の授業ではなく、学修者が主体となって関わり学べる一教授・学習法をアクティブ・ラーニングとしているのです。

現在アクティブ・ラーニングが求められる背景


これまで日本が築き上げてきた、製造業を軸としたモノづくり大国・先進国としての姿は、まさに現在は受動型教育で失われつつあるのが現状です。

日本よりも労働単価の低い発展途上国が世界の工場として機能し、日本はワンピースにでてくる天上人のごとく、進化を自ら止めてしまったのです。GDPが低下している先進国は日本ぐらいです。危機的な状況は既に超えているのです。

いまこそ、車もEV化の新たな産業の時代に突入してきてます。いまこそ世の中にある大量データをつかって新たなビジネスを立ち上げるときなのです。わたしはプログラムこそが日本を救える産業へ成長すると信じております。日本はITやAI、ロボットといったテクノロジーの発展により、世には無い新しい製品をいち早く生み出さなければ、自国を発展させていくことが難しい時代なのです。

プログラミング教育現場では「で!何をすればよいですか?」と平気で発する生徒。

必ずと言ってよいほど、プログラムを学ばれに来る生徒さんはこの言葉を平気で発してきます。受ける教育に洗脳された結果マニュアル人間が出来上がっているのです。日本の教育により答えは1つと信じちゃってる可愛そうな子達がいるのです。プログラムへ携わる方は是非、助けてあげてください。「やってみるその結果を自己分析する」この基本動作ができないのです

是非、当記事を読まれて自己改革を行っていただけますと幸いです。

参考サイト:https://qumcum.com/blog/blog/2019/02/22/teaching-revision9/

プログラムの世界は動いたが理解度50%でも先へ進めるべきです

言語が多い、命令が多い点やロジックの組み方の効率化などよりいきなり100点の理解でなくて良いです。何度も何度も繰り返して自分で覚えて行くのがプログラムなのです。再度、同じコーディングがでてくれば全開の50点が60点に点数アップしていけばよいのです。またプログラムは過去のコーディングやネットへ乗っているコーディングなどコピペを多用します。この理由もあるのです

まとめ

アクティブ・ラーニングの思想で結果を恐れないで自分ですぐにやってみる。その結果を分析判断する。リトライしながら考えながら覚えていく思考を身に着けていくこと。こちらを頑張って推進ください。プログラミングがもっと愉しくなっていきますよ。

副業プログラマーのロードマップ【必ず達成できるぜ!】

IPA ITスキル標準

◆レベル7

 プロフェッショナルとし てスキルの専門分野が確立し、社内外において、テクノロジやメソドロジ、ビジネスを創造し、リードするレベル。市場全体から見ても、先進的なサービスの開拓や市場化をリードした経験と実績を有しており、世界で通用するプレーヤとして認められます。

◆レベル6

 プロフェッショナルとしてスキルの専門分野が確立し、社内外において、テクノロジやメソドロジ、ビジネスを創造し、リードするレベル。社内だけでなく市場においても、プロフェッショナルとして経験と実績を有しており、国内のハイエンドプレーヤとして認められます。

◆レベル5 — 年収1,000万ライン

  プロフェッショナルとしてスキルの専門分野が確立し、社内においてテクノロジやメソドロジ、ビジネスを創造し、リードするレベル。社内において、プロフェッショナルとして自他共に経験と実績を有しており、企業内のハイエンドプレーヤとして認められます。

◆レベル4

  プロフェッショナルとしてスキルの専門分野が確立し、自らのスキルを活用することによって、独力で業務上の課題の発見と解決をリードするレベル。社内において、プロフェッショナルとして求められる経験の知識化とその応用(後進育成)に貢献しており、ハイレベルのプレーヤとして認められます。スキル開発においても自らのスキルの研鑽を継続することが求められます。

◆レベル3

 要求された作業を全て独力で遂行します。スキルの専門分野確立を目指し、プロフェッショナルとなるために必要な応用的知識・技能を有します。スキル開発においても自らのスキルの研鑽を継続することが求められます。

◆レベル2

 上位者の指導の下に、要求された作業を担当します。プロフェッショナルとなるために必要な基本的知識・技能を有する。スキル開発においては、自らのキャリアパス実現に向けて積極的なスキルの研鑽が求められます。

◆レベル1 情報技術に携わる者に最低限必要な基礎知識を有します。スキル開発においては、自らのキャリアパス実現に向けて積極的なスキルの研鑽が求められます。

IPA  : https://www.ipa.go.jp/jinzai/itss/itss7.html

このようにレベル5からが稼げるスキルのなのです。

Doda2020集計結果より1千万オーバーはわずか2%

職別は右から左へ推移で年収アップを図っていく

以上が会社努めでの年収の実態です。

副業ならば、スキル力または生産性で年収がアップできます

そうです。やるべきですね。それも本業を行いながらご自分で副業ロードマップを考えてみてください

私が考えるプログラム副業のロードマップ

諦めない。アクティブチャレンジ方針で進めていく根気強さが必要です。

必要であれば、私をつかまえてみてください。指導いたしますよ。

プログラムの副業を行うならば、定時であがれ。本業と同格意識を持て!

過去の不況から学ぼう

オイルショック、バブルがはじけたとき、リーマンショック、いままで幾度となく不況を経験してきている。その際に起こるのが不況です。離職率が上がります。

そして考えることは1つ。手に職を持つこと。資格を持つことです。

コロナ不況は、国がお金をばらまいたので大きくでてきてませんが、秋以降確実に企業のシェイプアップがきます。人を減らす=プログラム開発のシステム が活躍するため 使えるIT人材が必要となってきます。

なので指示待ちプログラマーは不要なのです

あたかも、答えを教えてくれというスタンスのマニュアル型がプログラムの世界へきます。しかし意識改革が必要なのです。提案型プログラマーへ変わってください。日本はシステム化が遅れている後進国である自覚を持ってプログラムに関われることでメイン職種へ変わっていくためにも平行の副業期間が必要なのです

プログラムの世界でも搾取(クビ)側のスタンス?

リストラ候補がリストラするシステムを開発する。このようには残念ながらスタンスの違いでうまくいきません。改革する意識のない方はプログラムの世界では雑用底辺ポジションしかないですよ

だからせめて本業同格でプログラム副業を始めてください

本業が忙しいから、プログラムの勉強する時間がない。よく聞きます。

私が富士通のときは、50歳前で月に数日徹夜でした。時間がないから今のスキルを副業へ転換できないのはおかしいと考えを改めて定時で帰宅することを徹底しました。本業と副業をイーブンで考えたのです

しかし定時で帰るためには8時間目一杯仕事して、他の方には文句が出ないようにしました。ドイツ人から直接日本人は無能だと話を聞きました。理由は残業時間がおおいことです。ドイツでは査定に残業時間が少なく効率であること。と考えられてますのでロングバケーションが当たり前なのです。今からでもよいので考え方を改めてください

また、副業斡旋会社に失礼です

副業を出された会社はあなたを信用し納期厳守。品質厳守。で頼まれているのです。「本業が忙しいから、あなたの仕事は後回しです」この事実伝えれますか。思われていることが甘くないですか。

まとめ

プログラムを副業するは、今の御時世、やるべきです。その際、目的はお金ですか?お金であればブログやyoutubeなどのアフリエイト。記事書き、FX、動画編集など他にもたくさんありますよ。プログラムが好きだからやる。長くやる。この意識を持ってください。IT大国へ復活へ一役買ってください。そしてアジアの方々と仲良くなってプログラムを輸出する時代へ進まれてください。私の言いたかったことです。

SQL datetime型での年月取得方法【Laravel クエリビルダ編】

datetime型では 

年-月-日 時:分:秒 の形式で格納される → 2008-05-31 00:00:00

SQL構文ではbetween などで 以上以下と記載すれば可能だが、短く抽出比較が可能です

WHERE DATE_FORMAT(billing_date, '%Y%m') = '200805' が一般的なSQLです

Laravelの場合は便利であり

日時比較 の場合は下記が準備されている

日時の比較を行う際にも、Laravelのクエリビルダには専用のメソッドが用意されています。

whereDate / orWhereDate

日付比較にはwhereDate()メソッドを使います。

$data = $sale->whereDate('updated_at', '2018-03-21')->get();

whereMonth / orWhereMonth

月の比較には、whereMonth()メソッドを使います。

$data = $sale->whereMonth('updated_at', 2)->get();

whereDay / orWhereDay

日付の値そのものとの比較にはwhereDay()メソッドを使います。

$data = $sale->whereDay('updated_at', 25)->get();

whereYear / orWhereYear

年の比較には、whereYear()メソッドを使います。

$data = $sale->whereYear('updated_at', 2018)->get();

whereTime / orWhereTime

時間の比較には、whereYear()メソッドを使います。

$data = $sale->whereTime('updated_at', '<', '12:00')->get();

通常ではDATE_FORMAT()しなければいけないところをこうしてメソッド一つで実現できてしまうのはとても便利です。

今回は

$data = $sale->whereYear('billing_date', 2008)->whereMonth('billing_date', 5)->get();

で解決できた。

「プログラムのフリーランスは稼げるとよく聞きますがどうなんですか?」とよく質問されますが実態は少数ですが可能です!しかしよく会社員と比べて決めましょう。

稼げるプログラマーはごく一部です。

(1) 集客ビジネスで儲ける

  下記のキャリアの方たちがは、あたかも会員になれば将来が開けるという集客ビジネスで稼いでおります。なかには、教育教材やアクティブ・ラーニング手法でまっとうなビジネルもありますので信者になっても良いでしょう。しかし当然、経験の少ない方もあたかもあるように見せている方も混ざっております。会社の社長のように部下がやってくれるからと言われる方には注意してください。企業ビジネルモデルなのです。それでも道が拓けると思われる方は進まれてください。自分の意志をしっかりと持っておかしいなと思えばやめればよいだけです。

https://techgym.jp/colmn/tech_youtuber_10/

※しまぶーさんなど素晴らしいエンジニアの発信は、難しくてフォロアーは少ない点を注意してください。youtubeは詳しく説明するほどフォローが少なくなる実態があります。宗教の勧誘だと思って、おかしいなと思われたら脱退してくださいね。

(2) 能力のあるプログラムフリーランサー

または、能力のあるプログラムフリーランサーは言語には特化しません。インフラや上流工程やマネージメントもというエンジニアは数倍稼いでいます。しかし経験を積んだ有スキル者で頂点のごく一部です。

(3) 生産性と品質の高さで人の数倍以上こなすから量で稼いでいるのです。

ITは成果主義です。複数の顧客から同時進行案件を取得すれば当然、年収が増えるという図式です。まっとうな稼ぎ方ですよね。プログラム経験を積む意味はこちらにあります。

(4)しかし注意全て起点ががあります 1000万超えると翌々年から課税所得者として10%税金納税が必要です。この時点で起業を考え始めるのです。

(1)~(4)稼げるフリーランスのまとめ

よく考えてください。プログラマー=稼げる職種 であるならば異業種の方たちが会社をIT企業へ転換させるはずですよね。それができないので 100~200万/人月を支払ってでもプログラム開発者へ開発してもらうのです。実態を考えましょう

ボーナス、退職金がない

フリーランスは健康第一。

【病気保証制度ありません】

老後の年金問題。

国民保険だけなので6万/月では生活できない。貯蓄が必須

健康保険が高い。

会社員は半額会社負担されている。せいぜい2万切る金額です。

私の地域では夫婦で4万程/月となってます

http://jigyou-tax.hajime888.com/j01.html

国民年金加入必須で夫婦だと奥さん分も負担。

(1) 1.6万/月✕2名出費。会社員は半額会社負担されている。

(2) 傷病手当がない。(収入がなくなる)

失業手当ももらえない【雇用保険に入れない】

収入が不安定

自分で営業しミスもできない。ミス=収入減。また売上管理が必須

社会的信用がない

ローンやカードが作れない

仕事とプライベートが曖昧となる。

(1) 分刻みのスケジュールで旅行も気持ちが入りにくく感じてしまう

(2) 24時間仕事を考えている

責任はすべて自分で追わないといけない

(1) ミスを行った際には、自分のちからで収めないといけない

(2) 訴訟されても自分で戦わないといけない

(3) 会社員は会社が守ってくれます。大きいですよね。

(4) 訴訟になると弁護士費用・交通費・弁護士との調整時間など大変です、売上の減収へ繋がります。

※ひろゆきさんのように、裁判には行かない。取り立てがこない限りは支払わないという考えは財力がある方の考えかと思います。ノミの心臓の僕には真似できないです。

相談相手がいない。実際は孤独

こちらは、今後のフリーランサーの横のつながりを強くしていく事でカバーできます

決断、判断事項が多い。判断ミスは自己責任

毎年確定申告があるので経理処理が大変。

税理士さんへ頼むとまたお金がかかる。大変な労力です。税務署、市役所からの呼び出し対応などもあるのです。

まとめ

フリーランスプログラマーの弱点を説明しましたが、企業が沢山の人を雇って役割分担させている。また厚生年金や健康保険や退職金の積立も会社員の給与外から支払っている。企業では気づかない点をカバーされているのです。決して手取りで判断しないでください。個人で事業を行う=個人事業主なのです。会社としての振る舞いが要求される世界です。以上の弱点を知ったうえで強い意志でフリーランスを目指していってくださいね。

人より能力高い方は、かならず年収も高くなります。人より抜き出る意識を持ってフリーランスへ進まれてください。が一番言いたかったことです。

cakePHP2からCakePHP4への移行手順

ControllerおよびViewについては、元ソースをそのままコピーしてCakePHP4用に書き換える方法で移植しています。

モデルなどはbakeコマンドで自動生成したファイルを元に、必要なメソッドを元ソースからコピーし、CakePHP4用に書き換えて移植しています。

・Configフォルダ配下のファイル構成が変わっているので、CakePHP4用に移植しています。
・URLのルールが変わっている所があるため、Routes.phpに個別に記載が必要なものは記載しています。
・SP用のViewファイルを配置するフォルダ構成をCakePHP4のものに合わせています。
・formやPaginator等の記載ルールが変わったものは個別に対応しています。

Laravel 6.0 でAWS S3サービスでの画像格納コーディング手順

前提

  • Laravel version 6.0 のプロジェクトは作成済み
  • AWSアカウントは作成済み

S3用のIAMを作成

まずはAWSのコンソールの右上から、自分のアカウントをクリックしアコーディオンを開き、「My Security Credentisals」をクリック

スクリーンショット 2018-09-02 11.16.16.png

遷移したら、左側のメニューから「Users」をクリック

スクリーンショット 2018-09-02 11.17.21.png

遷移したら、「Add User」をクリック

スクリーンショット 2018-09-02 11.17.35.png

遷移したら、「User name」に適当な名前を入力し、「Select AWS access type」は「Programmatic access」を選択し、「Next: Permissions」をクリック

スクリーンショット 2018-09-02 11.28.46.png

遷移したら、「Attach existing policies directly」をクリック

スクリーンショット 2018-09-02 11.29.40.png

検索画面が表示されるので、S3を検索し、「AmazonS3FullAccess」にチェックを入れ、「Next: Review」をクリック

スクリーンショット 2018-09-02 11.30.39.png

確認画面が表示されるので、「Create User」をクリック

スクリーンショット 2018-09-02 11.30.56.png

最後に、Access key IDとSecret access keyが表示されるので、必ずメモすること!

メモしたら「Close」をクリックして、S3のアカウント作成は完了です

スクリーンショット 2018-09-02 11.31.26.png

Bucketの作成

アカウントを作成したら、次はS3でBucketを作成します

S3の画面から、「Create bucket」をクリック

スクリーンショット 2018-09-02 11.59.52.png

モーダルが表示されるので、「Bucket name」に適当な名前を入力し、Regionは「Asia Pacific(Tokyo)」を選択し、「Next」をクリック

スクリーンショット 2018-09-02 12.05.46.png

遷移後、オプションを設定するモーダルが表示されます

設定系は要件によりけりですが、もちろん全てオフでも大丈夫です

簡単に各オプションの説明を書いておきます

「Versioning」は保存するファイルを上書きする際に以前のファイルを保持しておくオプションで、誤って上書きして以前のファイルを削除してしまった時に便利なオプションです

「Server access logging」はbucket内の操作に対してログを取ってくれるオプションです

「Tags」はbucketに任意のタグを割り当てることができ、コスト配分レポートなどで利用できるオプションです

「Object-level logging」はオブジェクト毎の操作に対してログを取ってくれるオプションです(Server access loggingとイマイチ違いはわからなかった)

「Default encryption」はデフォルトでアップロードするファイルを暗号化するオプションです

「CloudWatch request metrics」はほぼリアルタイムなメトリクスオプションです

スクリーンショット 2018-09-02 12.25.35.png

遷移後、bucketに対してAWSアカウントを紐づけする画面になります

デフォルトで自分のアカウントが入っています

特に他のアカウントを紐づけする必要がなければ、「Next」をクリック

スクリーンショット 2018-09-02 12.28.16.png

遷移後、プレビューが表示され問題なければ「Create bucket」をクリックし完了

スクリーンショット 2018-09-02 12.30.17.png

LaravelでのS3パッケージ格納利用

パッケージのインストール

Larave公式が言っている、s3用のパッケージをインストールする

 composer require league/flysystem-aws-s3-v3:"^1.0"

S3の環境情報を登録

.envファイルに下記情報を追記する

AWS_ACCESS_KEY_ID= 上記手順でユーザーを作成した際に表示されたAccess key ID
AWS_SECRET_ACCESS_KEY= 上記手順でユーザーを作成した際に表示されたSecret access key
AWS_DEFAULT_REGION=ap-northeast-1 (東京リージョンで作成したため)
AWS_BUCKET= 上記手順で作成したbucket名

アップロード

HTMLの作成

<form action="/upload" method="post" enctype="multipart/form-data">
  {{ csrf_field() }}
  <input type="file" name="file">
  <button type="submit">保存</button>
</form>

画像格納用Controllerの作成

public function upload(Request $request)
{
    $file = $request->file('file');
    // 第一引数はディレクトリの指定
    // 第二引数はファイル
    // 第三引数はpublickを指定することで、URLによるアクセスが可能となる
    $path = Storage::disk('s3')->putFile('/', $file, 'public');
    // hogeディレクトリにアップロード
    // $path = Storage::disk('s3')->putFile('/hoge', $file, 'public');
    // ファイル名を指定する場合はputFileAsを利用する
    // $path = Storage::disk('s3')->putFileAs('/', $file, 'hoge.jpg', 'public');
    return redirect('/');
}

結果

スクリーンショット 2018-09-02 18.02.44.png

画像表示用Controllerの作成

public function disp()
{
    $path = Storage::disk('s3')->url('hoge.jpg');
    return view('disp', compact('path'));
}

HTMLの作成

<img src="{{$path}}">

最後に参考サイトです

https://qiita.com/ohmoto_2020/items/8cd92e08be5a28d8a053

https://qiita.com/miriwo/items/cc3c384e694170862256

https://code-pocket.info/20200624304/

https://www.ctc-g.co.jp/solutions/cloud/column/article/16.html

dockerメモリ不足 と apache2タイムアウトの対応方法

事象

500のエラー画面で原因がよくつかめない事象となりました

Laravelログは下記が発生

[2021-05-03 00:53:15] local.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at /var/www/html/vendor/dompdf/dompdf/src/Css/Style.php:879)
[stacktrace]
#0 {main}
"} 

原因

  • 1つ目の原因は、Laravelログにでておりましたメモリ不足です。
  • 2つ目の原因はapache でのタイムアウトなのでこちらが 500エラーで原因がつかめなくて時間を消費しました

対策

(1) phpinfo.php を作成し、”<?phpphpinfo();?>” をコーディングしました。こちらを表示して調査しました


(2)メモリ不足は、PHP.ini ファイルです。Docker作成済みなので直接vim で追加しました。vimインストールは
apt-get install vim
vim /usr/local/etc/php/php.ini
を行いました。下記変更です


(3)apacheの設定は
vim /etc/apache2/apache2.conf

docker再起動で変更されますのでお確かめください

その他補足

viの使い方は、下記おすすめです

https://blog.codecamp.jp/vim-command

Docker環境なれると、上記はLinux環境設定です

楽ですね。少し前では大変な開発環境ですが、あっさりできるので最近の若い人たちは恵まれてるなーと感じます。