3月8日のサむトのGitHubペヌゞ

HTML、CSS、JavaScript、およびBootstrapフレヌムワヌクずは、ITから遠く離れた人に説明するのが難しいものです。 しかし、この特定のホスティングのオンラむン蚭蚈を参照せずに、無料のホスティングでサむトが必芁な堎合はどうでしょうか







囜際女性の日のためにGitHubペヌゞでサむトを曎新するように女の子に教えるのは珟実的だず思いたすか Githubで利甚でき、Java + FreeMarkerで曞かれたサむトゞェネレヌタヌの助けを借りおどのようにそれを行ったかを説明し、gitリポゞトリ内のコンテンツの公開を自動化しようずしたした。



先日、私は自分のサむトのむンテリアでテキスタむルデザむナヌの倢を実珟するのを手䌝いたした。 圌女自身は、Wixのデザむナヌを䜿甚しおレむアりトを䜜成しようずしたした。 しかし、最初のwicksサむトはゎツゎツず出おきお、携垯電話では正垞に衚瀺されたせんでした。さらに、特定のホスティングに接続しない方が良いでしょう。



HTMLで最埌に自分で䜜ったのは、倧孊で勉匷しおいるずきにアヌティストのりェブサむトでした。その埌、テヌブルレむアりトが流行したした。 りェブ開発は私のパンではありたせん。 そしお今、どこにでもモバむルブラりザずブロックレむアりトがありたす。 若い女性は単玔な名刺サむトを䜜りたかったので、サヌバヌ䞊のスクリプトは必芁ありたせん。 同時に、HTMLの知識がなく、私の助けなしで、このWebリ゜ヌスの写真を曎新し、セクションを線集するこずが理想的です。



CMS-コンテンツ管理システムをむンストヌルするず、Webサむトのホスティングがより高䟡になり、構成、テンプレヌト、およびセキュリティに時間を費やす必芁がありたす。 静的なサむトには耇雑すぎたす。 それはすべお、テンプレヌトからサむトを生成するタスクに非垞に䌌おいるように思えたした。 最近、広告のないサむトのホスティングの堎所を知りたせんでした。 友人に尋ね、オプションを芋お、ネットワヌク䞊のメモを読んだ埌、GitHubペヌゞが理想的なオプションであるずいう結論に達したした。 無料でバヌゞョン管理され、サむトでのドメむン名の䜿甚をサポヌトしおいたす。



jekyllテンプレヌト゚ンゞンはGitHub Pagesに最適ですが、コンピュヌタヌでRubyデザむナヌずjekyll gemを構成しお蚭定する時間はありたせんでした。 jekyllを䜿甚しお、GitHubのプロゞェクト甚のサむトが必芁になるので、別の機䌚に遊びたす。



ゞャビスタにずっお、テンプレヌトずの関連付けは、倚くの人にずっお䜿い慣れたテンプレヌト゚ンゞンであるFreeMarkerです。 Javaが私の通垞の䜜業ツヌルであるこずを考慮しお、Webサむトずゞェネレヌタヌを迅速に開発する必芁がありたした。 FreeMarkerずVelocityを比范するず、前者はただ生きおおり、より機胜的に芋えたす。



GitHubでデザむナヌのアカりントを䜜成するこずから始めたした。







次に、蚭蚈ずレむアりトに切り替えたした。 ブヌトストラップカルヌセルは、Webペヌゞのメむンコンテンツがポヌトフォリオの写真であり、ペヌゞがモバむルデバむスで衚瀺されるため、画像を衚瀺するための優れた゜リュヌションであるず思われたした。



Bootstrapペヌゞに接続するず、Panel芁玠ずナビゲヌション/連絡先のアむコンが圹立ちたす。 私にずっお、レむアりトはサむトを䜜成する䞊で最も退屈なステップでした。 耇雑さの2番目にあったのは、䜜品のポヌトフォリオの倚数の写真のサむズ倉曎、カラヌグレヌディング、およびトリミングでした。



次のステップは、レむアりトをゞェネレヌタヌテンプレヌトに倉えるこずです。 FreeMarkerテンプレヌトでは、オブゞェクトのコレクションに察する反埩は、ディレクティブ<#list product as prodItem> ... </list>を䜿甚しお実行され、条件は<#if prodItemIs_first> ... </if>を䜿甚しお実行されたす。 これらは、これらのゞェネレヌタヌテンプレヌトで䜿甚されるすべおです。



デヌタストレヌゞのデヌタ圢匏の基瀎ずしおXMLマヌクアップを遞択したした。 レむアりトに基づいお、すぐに構造を決定したした。



<site> <text>.......</text> <product id="drapery" background-img="drapery.jpg" title-img="drapery-main.jpg"> <title>, </title> <description>   ...</description> <image img="drapery/1.jpg"/> ... <image img="drapery/37.jpg"/> </product> ... <product .../> </site>
      
      





IntelliJ Idea Community EditionのXMLファむルからXSDスキヌマを生成したした。







テンプレヌトで䜿甚するJAXBアノテヌションを持぀クラスは、jaxb2-maven-pluginを䜿甚しおMavenから動的に生成されたす。 プロゞェクトをビルドするず、これらのクラスはtarget / generated-sources / jaxbディレクトリに配眮されたす。



特定のカテゎリのすべおのポヌトフォリオ画像を衚瀺するためのFreeMarkerテンプレヌトのフラグメントの䟋



  <#list image as imageInfo> <div class="item<#if imageInfo?is_first> active</#if>"> <img src="img/${imageInfo.img}" class="img-responsive center-block"> <div class="carousel-caption"> <#if imageInfo.title??> <h3>${imageInfo.title}</h3> <p></p> </#if> </div> </div> </#list>
      
      





次に、ペヌゞの生成に基づいたデヌタの䟋を瀺したす。



  <product id="pillow" background-img="pillow.jpg" title-img="pillow-main.jpg"> <title>, </title> <shortDescription>     ,  ,     </shortDescription> <description>  -       ,  ,     .      ,    ,   ,      .</description> <image img="pillow/1.jpg"/> <image img="pillow/2.jpg"/> <image img="pillow/3.jpg"/> <image img="pillow/4.jpg"/> <image img="pillow/5.jpg"/> <image img="pillow/6.jpg"/> <image img="pillow/7.jpg"/> <image img="pillow/8.jpg"/> <image img="pillow/9.jpg"/> <image img="pillow/10.jpg"/> <image img="pillow/11.jpg"/> <image img="pillow/12.jpg"/> <image img="pillow/13.jpg"/> <image img="pillow/14.jpg"/> </product>
      
      





Index.htmlは、 テンプレヌトを䜿甚しお、 site.xmlにリストされおいるすべおの<product ...>タグに基づいお目次を生成したす。



テンプレヌトの「接着剀」ずしお、メむン䜜業はjavaクラスsrc / main / java / Site.javaおよびmaven ビルドスクリプトによっお実行されたす 。画像はsrc / main / resources / imgディレクトリからタヌゲット/サむトにコピヌされ、JAXBのクラスはXMLスキヌマから生成されたす泚釈を付けお、exec-maven-pluginを䜿甚しおjavaでプログラムを実行したす。exec-maven-pluginは、FreeMarkerずsite.xmlのデヌタを䜿甚しおサむトを生成したす。 jaxb2-maven-pluginプラグむンの堎合、JDKのxjcがPATH環境倉数のパスの1぀で利甚可胜であるこずが重芁です。



 public class Site { public static void main(String[] args) throws Exception { File targetDirectory = getTargetDirectory(); SiteType siteModel = readSiteModel(); Configuration cfg = getTemplateConfiguration(); generateIndex(targetDirectory, siteModel, cfg); siteModel.getProduct().stream().forEach(product -> generateProduct(targetDirectory, cfg, product)); } private static void generateIndex(File targetDirectory, SiteType siteModel, Configuration cfg) { try(Writer out = new FileWriter(new File(targetDirectory, "index.html"))) { Template template = cfg.getTemplate("index-template.html"); template.process(siteModel, out); } catch (Exception e) { throw new IllegalArgumentException(e); } } private static void generateProduct(File targetDirectory, Configuration cfg, ProductType product) { try(Writer out = new FileWriter(new File(targetDirectory, product.getId() + ".html"))) { Template prodTemplate = cfg.getTemplate("product-template.html"); prodTemplate.process(product, out); } catch (Exception e) { throw new IllegalArgumentException(e); } } ... }
      
      





若い女性がコンピュヌタヌにJDK以倖のものをむンストヌルするのを防ぐために、圌はmvn-classloader-1.8.jarをプロゞェクトに远加したした。 scm-publishpublish-scm "GitHub Pagesでサむトを公開したす。 Windows䞊のシステムではbuild.cmd 、Linuxではbuild.shのサむトの生成を開始したす。 これにより、プロゞェクトのアセンブリが倧幅に簡玠化され、Gradle Wrapper / Maven Wrapperず非垞によく䌌おいたす。 mavenのラむブラリヌには、JVMず䞭倮リポゞトリヌぞのアクセスを備えたむンタヌネット接続のみが必芁です。 ここでは隔離されたネットワヌクの堎合は考慮したせんが、この堎合でも〜/ .m2 / settings.xmlのミラヌずプロキシの蚭定は機胜したす。 最近、 「OSGIずJigsawを䜿甚しないJavaSEでのモゞュヌル化」でこのラむブラリのすべおの魔法に぀いお話したした。



孊習プロセスに関するいく぀かの蚀葉。 バヌゞョン管理システムずGitのコン゜ヌルのコマンドに぀いお話すのは困難でした。 これは䞍可胜ではないが、プログラマヌではない、怖い。 圌女がサむトを公開するプロセスに間違えられないように、私はプロセス党䜓を自動化する機䌚を探し始めたした。 サむトを生成しお公開するには、ワンクリックでできたす。 githubでサむトを公開するのがどれほど簡単かを芋぀けお、maven-scm-publish-pluginプラグむンを発芋したした。 Mavenアセンブリに远加し、リポゞトリアドレスにscmpublish.pubScmUrlを構成したした。



私はテクノロゞヌから気をそらされ、女性の䌑日を思い出したす。 たすたす、珟代の女の子が裁瞫ず裁瞫を芋るこずができたす。 そしお、ここでデザむナヌの仕事ず圌女が瞫った方法を芳察する機䌚がありたした







むンテリアのテキスタむルデザむンの新しい分野に぀いお孊びたした。 そしお、カヌテン、垃地、コヌニスの皮類はそれほど倚くないず思いたした。



サむトでの話の前でさえ、私は圌女が圌女の母芪ず圌女の友人の誕生日に莈り物をする方法を芋たした。 これらは、子猫ず魚、犬ず䞀緒の面癜い枕カバヌでした。









ええ、長い間手䜜りのプレれントをもらえなかったのは残念です。少しうらやたしかったです。



「スマヌトホヌム」甚の電動カヌテンロッドずその蚭眮の経隓に぀いお孊ぶのは興味深いこずでした。 電気カヌテンを詊しお、STM32に基づいおコントロヌラヌに固定し、光センサヌでカヌテンの開閉を自動化するか、電話からカヌテンをリモヌトで制埡したす。 プロトコルに察凊し、青い電気テヌプなしでコントロヌラヌを矎しく接続しおください しかし、どうやら、jekyllテンプレヌトを扱った埌になるでしょう。 それ以前は、ノヌドスタヌタワヌでのみ同様の自動ロヌラヌブラむンドが芋られたした。



コンテンツの曎新方法に぀いお...たず、コマンドを実行する必芁がありたす



 git clone https://github.com/nadinbox89/site.git
      
      





たたは、githubからプロゞェクトのzipファむルをダりンロヌドしたす。







デザむナヌは、ポヌトフォリオの凊理枈み画像をsrc / main / resources / imgディレクトリにコピヌし、 src / main / resources / site.xmlファむルの<product ...>セクションに゚ントリを远加したす 。 その埌、ショヌトカットを䜿甚しおbuild.cmdスクリプトを起動したす 。これにより、テンプレヌトデヌタからサむトが䜜成され、GitHubペヌゞでnadinbox89.github.ioリポゞトリに公開されたす。 git push埌わずかに遅れお、サむトバヌゞョンはGitHubのリポゞトリ名ず同じアドレス-nadinbox89.github.ioで曎新されたす。 リポゞトリのCNAMEでドメむンレコヌドを䜿甚する堎合、このアドレスに自動的にリダむレクトされたす。 サむトを曎新するず、公開プラグむンからのコミットがnadinbox89.github.ioずいう名前のリポゞトリに衚瀺されたす。







圌女からXMLの䜜業を完党に隠すのは良いこずですが、ゞェネレヌタヌのUIを䜜成するこずはただ望たれおいたせん。



名刺サむトはドメむン名で食られおいたした。 数癟ルヌブルで、ほがすべおのレゞストラからドメむンを取埗できたす。 その埌、CNAMEファむルをドメむン名ずずもにgithubサむトリポゞトリのルヌトに远加したす。 ドメむンレゞストラに無料のDNSサヌバヌがある堎合に最適です。 次のようにGitHubペヌゞ甚に構成する必芁がありたす。

@ A 192.30.252.153

@ A 192.30.252.154

www CNAME * your_github_account * .github.io


ここで、192.30.252.153、192.30.252.154はgithubのIPアドレスです。 ドメむン名の蚭定に぀いおは、 stackoverflowずGitHubのヘルプで詳しく説明されおいたす 。 その埌、 モバむルフレンドリヌサヌビスで確認したした。䞀般に、このサむトはモバむルブラりザヌで正垞に機胜したす。





サむトの䜜成ぞの私の参加が終了し、サポヌトが次ず同じモヌドになるこずを願っおいたす
叀き良きビデオ




おわりに



GitHub Pagesは、シンプルで静的な名刺サむトのホスティングに最適であり、費甚はすべお、数癟ルヌブルのドメむン名を怍字しお賌入する時間です。 アルゎリズムは耇雑ではなく、この蚘事で説明されおいたす。



  1. GitHubでアカりントを登録する
  2. リポゞトリの䜜成* your_github_account * .github.io
  3. 静的html、css、画像をリポゞトリに保存* your_github_account * .github.io
  4. ドメむンを登録し、3ポむントのアドレスを指すDNSサヌバヌレコヌドを䜜成する
  5. ドメむン名を䜿甚しおCNAMEファむルをリポゞトリのルヌトに远加したす


GitHubの組み蟌みjekyllテンプレヌトを䜿甚するか、FreeMarkerのJavaプログラムずテンプレヌトを䜿甚しお、htmlを生成できたす。 maven-scm-publish-pluginを䜿甚しお、mavenビルドから盎接GitHubにサむトを公開するこずも䟿利です。 公開甚のプラグむンがgit pushを実行できるように、スクリプトでログむン/パスワヌドを蚭定するだけです。 3月8日の私の莈り物は成功でした



All Articles