diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/API.mediawiki b/API.mediawiki new file mode 100644 index 000000000000..d3e9a9b22ed2 --- /dev/null +++ b/API.mediawiki @@ -0,0 +1,22 @@ +===Service (bot)=== + +Saleor memiliki [[API yang mendukung dashboard|https://github.com/mirumee/saleor/issues/3343]]. API juga akan menjadi integrasi (bahkan jika saat ini kehilangan beberapa mutasi yang berguna) untuk layanan pihak ketiga seperti + +* manajemen stok eksternal atau +* sinkronisasi harga. + +===Kapasitas Akun=== +* Izin baru akan memungkinkan admin untuk membuat, mengedit, dan menghapus (menonaktifkan?) Akun layanan. +* Akun layanan akan menggunakan izin dengan cara yang sama seperti akun biasa. +* Akun layanan tidak akan diizinkan menggunakan kata sandi untuk mengautentikasi. +* Detail akun layanan harus menghasilkan token JWT yang tidak pernah kedaluwarsa yang dapat digunakan untuk mengautentikasi dengan API GraphQL. +* Token JWT harus berbeda dari token login biasa karena itu akan memasukkan kata sandi / token / bidang lainnya saat ini sebagai muatan. Saat mengautentikasi bidang ini akan dibandingkan dengan nilai saat ini di database untuk memastikan mereka cocok. +* Layar perincian akun harus menyertakan tombol yang membuat ulang kata sandi / token / bidang lain dari akun dan karenanya menghasilkan token JWT baru. Ini dikombinasikan dengan hal di atas memungkinkan token yang bocor secara tidak sah dibatalkan oleh staf. +* Dasbor harus menyertakan ikon yang menunjukkan bahwa akun yang diberikan adalah akun layanan saat menampilkan namanya ("dibuat oleh robotSalesForce Robot", "diedit terakhir oleh robotSlack Integration" dll.). Ikon itu sendiri adalah TBD. + +===Alur kerja=== +Alur kerja yang diusulkan untuk integrasi adalah (alih-alih membangunnya menjadi Saleor) menyebarkannya sebagai fungsi AWS Lambda atau wadah Node kecil. + +Fungsi atau wadah ini masing-masing menggunakan akun layanan khusus dengan serangkaian izin yang dirancang khusus untuk berbicara dengan GraphQL API. + +Namun masih perlu metode yang kuat untuk menjalankan API tersebut dalam konfigurasi S2S. diff --git a/Akun-Layanan.mediawiki b/Akun-Layanan.mediawiki new file mode 100644 index 000000000000..7b3c3ce8b168 --- /dev/null +++ b/Akun-Layanan.mediawiki @@ -0,0 +1,12 @@ +__TOC__ +==Layanan== +===App Engine=== + +from google.auth import app_engine +credentials = app_engine.Credentials() +client = Client(credentials=credentials) + + +===Compute Engine=== + +==''Referensi''== diff --git a/Apa-Itu-Codefresh.mediawiki b/Apa-Itu-Codefresh.mediawiki new file mode 100644 index 000000000000..7ec75b250933 --- /dev/null +++ b/Apa-Itu-Codefresh.mediawiki @@ -0,0 +1,261 @@ +[[Codefresh|https://g.codefresh.io/signup?ref=ByhLQyoQ4]] adalah salah satu ''[[layanan CI/CD|https://en.wikipedia.org/wiki/CI/CD]]'' untuk aplikasi berbasis [[Apa-itu-Docker|Docker]]. Secara instan membangun, menguji, dan menggunakan gambar aplikasi umum di ''[[Apa-Itu-Kubernetes|Kubernetes]]''. + +__TOC__ +==Arsitektur== +* [[Manage GIT Triggers with Codefresh UI|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/git-triggers/]] +* [[Triggering Codefresh pipeline with DockerHub push|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/dockerhub-triggers/triggering-codefresh-pipeline-with-dockerhub-push]] +[[|https://wideops.com/introducing-automated-deployment-to-kubernetes-and-google-container-engine-with-codefresh/]] +===Akun=== +====Invite==== +====Internal==== +====External==== + +===Integrasi=== +* [[Calling Codefresh pipelines from Github actions|https://codefresh.io/codefresh-news/codefresh-github-action/]] +====Layanan==== +[[|https://snyk.io/blog/codefresh-snyk-ship-fast-and-securely/]] +====GCP Billing==== +Billing juga dapat diintegrasikan via [[Google Marketplace|https://console.cloud.google.com/marketplace/details/codefresh-gke/codefresh?filter=category:developer-tools]] + + +===Format=== +====Pipeline==== + +Codefresh bekerja berdasarkan [[step|https://github.com/codefresh-io/yaml-examples/wiki/Description-step-of-yml]] (langkah) dan [[type|https://codefresh.io/docs/docs/codefresh-yaml/steps/]] yang diformasikan kedalam [[Yml format|https://id.wikipedia.org/wiki/YAML]] seperti [[contoh² di github|https://github.com/codefresh-io/yaml-examples]]. Setiap step dapat dijelaskan sbb: +``` +step-id: + description: [Free-text description] + working-directory: [ID of another step or a relative path] + environment: + - key=value + [step contents] + on-fail: + - command + on-success: + - command + on-finish: + - command + fail-fast: false # default true +``` +====Multi Step==== +Saluran pipa Anda tidak perlu dimulai dan diakhiri dalam satu langkah. Anda dapat [[menjalankan langkah-langkah paralel|https://codefresh.io/codefresh-news/parallel-pipelines/]] dalam pipa Codefresh. Anda dapat memiliki langkah "mulai" sebanyak yang Anda inginkan dan langkah "berakhir" sebanyak mungkin.

+[[|https://codefresh.io/codefresh-news/parallel-pipelines/]] + +==Konfigurasi== +* [[Codefresh YAML|https://codefresh.io/docs/docs/codefresh-yaml/what-is-the-codefresh-yaml/]] + +Codefresh menawarkan format bawaannya sendiri untuk membuat saluran pipa. Spesifikasi pipa didasarkan pada sintaks YAML yang memungkinkan Anda untuk menggambarkan saluran pipa Anda dengan cara yang sepenuhnya deklaratif. +

+[[|https://user-images.githubusercontent.com/36441664/59958357-64b16800-94cf-11e9-9215-b63ff64cf4aa.png]] + +File YAML terdiri dari serangkaian langkah yang dieksekusi dalam urutan yang ditentukan. + + + + + + + + + + + + + +
FiturDeskripsi
[[Freestyle|https://codefresh.io/docs/docs/codefresh-yaml/steps/freestyle/]]Menjalankan satu atau lebih perintah shell dalam wadah yang mirip dengan docker run.
[[Build|https://codefresh.io/docs/docs/codefresh-yaml/steps/build/]]Membangun gambar Docker seperti build docker
[[Push|https://codefresh.io/docs/docs/codefresh-yaml/steps/push/]]Mendorong gambar Docker ke registri Docker mirip dengan tag docker dan push docker
[[Git Clone|https://codefresh.io/docs/docs/codefresh-yaml/steps/git-clone/]]Mengesampingkan perilaku git clone default
[[Composition|https://codefresh.io/docs/docs/codefresh-yaml/steps/composition/]]Memulai Docker Komposisi seperti docker-compose. Buang begitu pipa selesai.
[[Launch|https://codefresh.io/docs/docs/codefresh-yaml/steps/launch-composition/]]Komposisi Memulai komposisi Docker jangka panjang yang tetap setelah akhir pipa
[[Deploy|https://codefresh.io/docs/docs/codefresh-yaml/steps/deploy/]]Menyebarkan ke cluster Kubernetes
[[Approval|https://codefresh.io/docs/docs/codefresh-yaml/steps/approval/]]Menjeda pipa dan menunggu intervensi manusia
+ +===Build=== +====Pipelines==== +* [[Reuse a Git token from Codefresh integrations|https://stackoverflow.com/a/56705685/4058484]] +``` +version: '1.0' +steps: + get_git_token: + title: Reading Github token + image: codefresh/cli + commands: + - cf_export GITHUB_TOKEN=$(codefresh get context github --decrypt -o yaml | yq -y .spec.data.auth.password) + main_clone: + title: Updating the repo + image: alpine/git:latest + commands: + - if [ -d compose ]; then rm -Rf compose; fi + - git clone https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git + - cd compose && git remote rm origin + - git config --global user.name "chetabahana" + - git config --global user.email "chetabahana@gmail.com" + - git remote add origin https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git + - sed -i "s/-[0-9]\{1,\}-\([a-zA-Z0-9_]*\)'/-`date +%d%H%M`-whatever'/g" cloudbuild.yaml + - git status && git add . && git commit -m "fresh commit" && git push -u origin master +``` +====Variable Key==== +* [[Using Codefresh variables in your pipelines|https://codefresh.io/docs/docs/codefresh-yaml/variables/#using-codefresh-variables-in-your-pipelines]] + +Variabel yang disediakan pengguna dapat didefinisikan pada 4 level: + +* Definisi langkah freestyle: menggunakan bidang lingkungan. +* Eksekusi pipa: setelah mengklik tombol "Bangun", buka bagian "Opsi lanjutan". +* Definisi saluran pipa: di bawah bagian “Variabel lingkungan” di tampilan saluran pipa. +* Konfigurasi Bersama: didefinisikan di bawah pengaturan akun Anda. +Opsi terdaftar sesuai urutan kepentingannya, jadi dalam kasus beberapa variabel didefinisikan di lokasi berbeda dengan nama yang sama, urutan penggantian akan seperti yang tercantum di sini. +[[|https://user-images.githubusercontent.com/36441664/60767273-cf71be80-a0df-11e9-9f3e-fc005a4cfb60.png]] + +====Shared Volume==== +* [[Accessing your project folder from a composition|https://codefresh.io/docs/docs/codefresh-yaml/steps/composition/#accessing-your-project-folder-from-a-composition]] +``` +version: '1.0' +steps: + create_test_data_step: + title: Creating dummy data + image: alpine + commands: + - echo "Writing in shared volume" > /codefresh/volume/sample_text.txt + my_sample_composition: + type: composition + title: Composition with volume + composition: + version: '2' + services: + my_sample_service: + image: node + volumes: + - '${{CF_VOLUME_NAME}}:${{CF_VOLUME_PATH}}' + working_dir: '${{CF_VOLUME_PATH}}' + command: bash -c "pwd && cat sample_text.txt" + composition_candidates: + my_unit_tests: + image: python + volumes: + - '${{CF_VOLUME_NAME}}:${{CF_VOLUME_PATH}}' + working_dir: '${{CF_VOLUME_PATH}}' + command: bash -c "pwd && echo 'Finished tests' > test_result.txt" + read_test_data_step: + title: Reading dummy data + image: alpine + commands: + - ls -l /codefresh/volume + - cat /codefresh/volume/test_result.txt +``` +====Registry==== +[[|https://codefresh.io/docs/docs/docker-registries/codefresh-registry/]] + +===Compose=== + +[[|https://codefresh.io/codefresh-news/new-feature-composition-environment-variables/]] + +====Compute==== +* [[Docker Swarm on Google Cloud Platform|https://engineering.galleon.ph/posts/docker-swarm-gcp/]] +====Kubernetes==== + +===Deploy=== +====Swarm==== +* [[How to deploy to Docker Swarm with Codefresh|https://codefresh.io/docs/docs/deploy-your-containers/docker-swarm/]] +[[|https://codefresh.io/docs/images/0a66a41-image3.png]] +* [[Deploy Docker Compose (v3) to Swarm (mode) Cluster|https://codefresh.io/docker-tutorial/deploy-docker-compose-v3-swarm-mode-cluster/]] + +Jika Anda jalankan [[Apa-itu-Docker#docker-swarm|Docker Swarm]] di Server maka Codefresh dapat dengan mudah [[deploy aplikasi ke Docker Swarm|https://codefresh.io/docs/docs/deploy-your-containers/docker-swarm/]] menggunakan saluran pipa GUI atau YAML. + +* [[Docker-stack.yml|https://stackoverflow.com/a/56844406/4058484]] yang berisi definisi aplikasi +* Host tempat Docker Swarm Anda berjalan +* Kunci SSH yang dapat digunakan Codefresh untuk mengakses host +* Nama tumpukan yang akan digunakan setelah aplikasi dikerahkan. +* Semua informasi ini akan diteruskan ke pipa dalam bentuk parameter build. + +====Stacks==== + +===Integration=== +====Caching==== +[[|https://codefresh.io/containers/caching-build-dependencies-codefresh-volumes/]] + + +====Tes Dinamik==== +* [[Codefresh + Snyk = Ship Fast and Securely|https://snyk.io/blog/codefresh-snyk-ship-fast-and-securely/]] + +[[|https://snyk.io/blog/codefresh-snyk-ship-fast-and-securely/]] + +====Helm Charts==== +[[|https://cdn-images-1.medium.com/max/2600/1*h2fY9FgEXLXZyBv_L7qh_A.png]] + +==Menjalankan== +[[|https://camo.githubusercontent.com/3c6d86d6739e35db0bc4b47c919fe821090c64b3/68747470733a2f2f6a6178656e7465722e636f6d2f77702d636f6e74656e742f75706c6f6164732f323031372f30382f636f646566726573682d312d31303234783537382e706e67]] + +===Codefresh Plugin=== +* [[Codefresh CI/CD Plug-in Directory|http://steps.codefresh.io/]] +Codefresh juga menawarkan direktori plugin di http://steps.codefresh.io/ yang dibuat khusus untuk operasi CI / CD seperti +[[google-kms|https://steps.codefresh.io/plugin/google-kms]] berikut ini: +``` +- description: example-1 + workflow: + version: '1.0' + steps: + google_kms: + image: codefreshplugins/google-kms + commands: + - kms encrypt VALUE_1 VALUE_n +``` +===Codefresh API/CLI=== +* [[Codefresh Trigger Types|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/]] +[[|https://snyk.io/blog/codefresh-snyk-ship-fast-and-securely/]] + +Type Trigger +* Git Triggers +* Dockerhub Triggers +* Azure Registry Triggers +* Quay Triggers +* Artifactory Triggers +* Cron Trigger +* API/CLI Trigger + +====Git Commit==== +Seperti halnya Docker Hub atau Google Registry dll Pemicu GIT adalah jenis pemicu build. Namun dengan Codefresh Anda [[dapat memilih repositori lain|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/git-triggers/]] selain dari milik proyek itu sendiri. Bahkan untuk memicu build pada proyek A meskipun komit terjadi pada proyek B. + +[[|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/git-triggers/]] + + +====Image Push==== +Codefresh ''[[Apa-Itu-Codefresh#pipelines|piplines]]'' bisa disetel memicu eksekusi yang terkait dengan ''[[image push|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/dockerhub-triggers/#manage-dockerhub-triggers-with-codefresh-ui]]'' ke DockerHub. Anda juga dapat [[menggunakan klien baris perintah|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/dockerhub-triggers/#manage-dockerhub-triggers-with-codefresh-cli]] via [[Codefresh CLI|https://cli.codefresh.io/]] untuk mengelola pemicu. +``` +# get trigger-event details for previously created trigger-event +codefresh get trigger-event -o yaml registry:dockerhub:codefresh:fortune:push:107e9db97062 + +uri: 'registry:dockerhub:codefresh:fortune:push:107e9db97062' +type: registry +kind: dockerhub +public: false +secret: aGao5weuez2G6WF9 +status: active +endpoint: >- + https://g.codefresh.io/nomios/dockerhub?account=107e9db97062&secret=aGao5weuez2G6WF9 +description: Docker Hub codefresh/fortune push event +help: >- + Docker Hub webhooks fire when an image is built in, pushed or a new tag is + added to, your repository. + + Configure Docker Hub webhooks on + https://hub.docker.com/r/codefresh/fortune/~/settings/webhooks/ + + Add following Codefresh Docker Hub webhook endpoint + https://g.codefresh.io/nomios/dockerhub?account=107e9db97062&secret=aGao5weuez2G6WF9 +``` +====Triggering==== +* [[API/CLI Call|https://codefresh.io/docs/docs/integrations/codefresh-api/#example---triggering-pipelines]] +Codefresh menawarkan API komprehensif yang dapat Anda gunakan untuk berintegrasi dengan aplikasi atau solusi lain yang sudah Anda miliki. Detail lengkap lihat [[API dokumentasi|https://g.codefresh.io/api/]]. +[[|https://codefresh.io/docs/docs/integrations/codefresh-api/]] + +Untuk memicu jaringan pipa dari jarak jauh Anda dapat menemukan perintah Curl premade (termasuk kunci api) di pengaturan build untuk setiap pipa: +[[|https://codefresh.io/docs/images/integrations/api/webhook-url.png]] + +Anda juga dapat memasukkan variabel lingkungan tambahan menggunakan array: +``` +curl 'https://g.codefresh.io/api/builds/5b1a78d1bdbf074c8a9b3458' \ +--compressed -H 'content-type:application/json; charset=utf-8' \ +-H 'Authorization: ' \ +--data-binary '{"serviceId":"5b1a78d1bdbf074c8a9b3458",\ +"type":"build","repoOwner":"kostis-codefresh",\ +"branch":"master","repoName":"nestjs-example",\ +"variables":{"sample-var1":"sample1","SAMPLE_VAR2":"SAMPLE2"}}' +``` + +==''Referensi''== +* [[Use parallel steps in your Codefresh pipelines|https://codefresh.io/codefresh-news/parallel-pipelines/]] +* [[Advanced Workflows with Parallel steps|https://codefresh.io/docs/docs/codefresh-yaml/advanced-workflows/]] diff --git a/Apa-Itu-HELM-Charts.mediawiki b/Apa-Itu-HELM-Charts.mediawiki new file mode 100644 index 000000000000..bdefb380a57f --- /dev/null +++ b/Apa-Itu-HELM-Charts.mediawiki @@ -0,0 +1,7 @@ +[[Helm Charts|https://kubernetes.io/blog/2016/10/helm-charts-making-it-simple-to-package-and-deploy-apps-on-kubernetes/]] adalah salah satu perangkat yang juga tersedia di ''[[Apa-Itu-Codefresh|Codefresh]]'' untuk memudahkan dalam mengemas aplikasi umum dengan ''[[Apa-Itu-Docker|Docker]]'' dan menggunakannya di ''[[Apa-Itu-Kubernetes|Kubernetes]]''. + +__TOC__ +==Referensi== +* [[HELM Charts - Dokumentasi|https://github.com/helm/helm/blob/master/docs/charts.md]] +* [[HELM Charts - Best-Practices (pdf)|https://codefresh.io/wp-content/uploads/2019/05/Codefresh-Helm-Best-Practices-2019.pdf]] +* [[HELM Charts - Quickstart for Saleor|https://github.com/stephenmoloney/saleor-helm/tree/master/deployment/helm#quickstart]] \ No newline at end of file diff --git a/Apa-Itu-Kubernetes.mediawiki b/Apa-Itu-Kubernetes.mediawiki new file mode 100644 index 000000000000..aff2c514192e --- /dev/null +++ b/Apa-Itu-Kubernetes.mediawiki @@ -0,0 +1 @@ +[[Kubernetes|https://en.wikipedia.org/wiki/Kubernetes]] adalah sistem orkestrasi wadah sumber terbuka untuk mengotomatiskan penerapan, penskalaan, dan manajemen aplikasi yang bebasis kontainer termasuk ''[[Apa-itu-Docker|Docker]]''. \ No newline at end of file diff --git a/Apa-Itu-Saleor.mediawiki b/Apa-Itu-Saleor.mediawiki new file mode 100644 index 000000000000..fa60320a5660 --- /dev/null +++ b/Apa-Itu-Saleor.mediawiki @@ -0,0 +1,228 @@ +[[Saleor|https://getsaleor.com/]] dapat diartikan sebagai sebuah ''[[Aplikasi e-Commerce - Sumber Terbuka |https://github.com/mirumee/saleor]]'' beretalase modular yang diklaim berkinerja tinggi dibangun dengan [[Apa-Itu-Saleor#python|Python]], [[Apa-Itu-Saleor#graphql|GraphQL]], [[Apa-Itu-Saleor#django|Django]], dan [[Apa-Itu-Saleor#reactjs|ReactJS]]. + +__TOC__ + +==Arsitektur== + +* Demo: [[Web|https://demo.getsaleor.com/]] dan [[Mobile|https://pwa.getsaleor.com/]] +* Developer: [[Mirumee Software|https://mirumee.com/]] +* Case Study: [[Pretty Green - e-Commerce|https://mirumee.com/projects/pretty-green/]] +* Running Web: https://www.prettygreen.com/ +* Tryout di: [[CircleCI|https://github.com/mirumee/saleor/wiki/Demo-deployment]]. Gratis ''[[1 Container|https://circleci.com/pricing]]'', ''[[1 Projek|https://github.com/mirumee/saleor/search?q=CircleCI&unscoped_q=CircleCI]]'', ''[[1 Image|https://cloud.docker.com/repository/docker/chetabahana/saleor]]'' + +[[|https://github.com/mirumee/saleor]] + +===Python=== +[[Python|https://id.wikipedia.org/wiki/Python_(bahasa_pemrograman)]] adalah ''[[Bahasa Pemrograman - Open Source |https://github.com/python/cpython]]'' yang interpretatif multiguna dengan filosofi perancangan yang berfokus pada tingkat keterbacaan kode. + +Python diklaim sebagai bahasa yang menggabungkan kapabilitas, kemampuan, dengan sintaksis kode yang sangat jelas,[11] dan dilengkapi dengan fungsionalitas pustaka standar yang besar serta komprehensif. Python juga didukung oleh komunitas yang besar. + +[[|https://stackoverflow.blog/2017/09/06/incredible-growth-python/]] + +Bahasa pemrograman Python dalam lima tahun terakhir, seperti yang terlihat oleh lalu lintas Stack Overflow denga istilah "yang paling cepat berkembang" mungkin sulit untuk didefinisikan secara tepat, tetapi bahwa Python memiliki klaim kuat untuk menjadi bahasa pemrograman utama yang paling cepat berkembang. + +===Django=== +[[Django|https://en.wikipedia.org/wiki/Django_(web_framework)]] adalah ''[[Kerangka kerja web - Open Source|https://github.com/django/django]]'' berbasis-Python, yang mengikuti [[pola arsitektur|https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-16-04]] model-view-template, dikelola oleh [[Django Software Foundation|https://en.wikipedia.org/wiki/Django_Software_Foundation]], organisasi nirlaba. + +[[|http://django-easy-tutorial.blogspot.com/2017/03/django-project-layout-and-settings.html]] + +Selama 5 tahun terakhir, solusi open source berbasis Django telah menjadi salah satu solusi e-commerce Python yang paling cepat berkembang di dunia. + +Ia dipercaya oleh pengecer volume tinggi dari merek-merek mapan — di sektor-sektor seperti pakaian pria dan penerbitan online — serta startup yang mengganggu termasuk portal penjualan online yang diakui dalam daftar Forbes 30 Under 30. + +Ini adalah salah satu platform e-commerce paling populer untuk programmer, didukung oleh komunitas pengembang dari lebih dari 60 negara, dengan lebih dari 2600 bintang di Github. + +Dalam mengembangkan saleor, pengembang mengandalkan solusi e-Commerce dengan menggunakan flatform ini. Pembahasan secara detil silahkan simak di sesi setelan [[Django]]. + +===GraphQL=== +[[GraphQL|https://en.wikipedia.org/wiki/GraphQL]] adalah kueri sumber dan manipulasi data sumber terbuka untuk ''[[API - Open Source|https://github.com/graphql/graphiql]]'', dan runtime untuk memenuhi kueri dengan data yang ada. GraphQL dikembangkan secara internal oleh Facebook pada tahun 2012 sebelum dirilis secara publik pada tahun 2015 + +[[|https://cdn-images-1.medium.com/max/1200/1*ObWwLWml6KVvh-ZXbYSTVQ.png]] + +Saleor 2.0 bergeser dari struktur monolitik berbasis Django, dan memperkenalkan GraphQL API terpisah dengan dashboard dinamis dan modul etalase yang ditulis dalam React. + +Kerangka kerja yang fleksibel namun fungsional ini berarti Saleor 2.0 mungkin merupakan satu-satunya platform open source yang menawarkan GraphQL API dengan pengalaman e-commerce penuh. Saleor 2.0 memungkinkan platform sebagai aplikasi satu halaman yang menawarkan pengalaman seluler PWA seperti aplikasi asli. + +Misi Saleor selalu untuk mentransformasikan bisnis dan memberikan teknologi kepada pengembang yang mereka sukai untuk bekerja sama — arsitektur baru menghadirkan keduanya. + +===ReactJs=== +[[ReactJs|https://en.wikipedia.org/wiki/React_(JavaScript_library)]] adalah ''[[Perpustakaan JavaScript - Open Source|https://github.com/reactjs/reactjs.org]]'' untuk membangun antarmuka pengguna. Itu dikelola oleh Facebook dan komunitas pengembang dan perusahaan individu. ReactJs dapat digunakan sebagai dasar dalam pengembangan aplikasi satu halaman atau mobile. + +[[|https://create.roadtonaukri.com/server-side-rendering-in-react-js-applications-using-redux-and-react-router-21404a12ea05]] + +==Konfigurasi== + +* '''[[PWA|https://github.com/mirumee/saleor-storefront]]''': Pengguna akhir dapat berbelanja offline untuk pengalaman penjualan dan belanja yang lebih baik +* '''GraphQL API''': Akses semua data dari web atau klien seluler apa pun menggunakan teknologi terbaru +* '''Headless commerce''': Bangun aplikasi seluler, sesuaikan tampilan toko dan proses eksternalisasi +* '''UX dan UI''': Dirancang untuk pengalaman pengguna yang menyaingi bahkan platform komersial teratas +* '''Dashboard''': Administrator memiliki kontrol penuh terhadap pengguna, proses dan produk +* '''Orders''': Sistem komprehensif untuk pesanan, pengiriman dan pengembalian uang +* '''Cart''': Pembayaran lanjutan dan opsi pajak, dengan kontrol penuh atas diskon dan promosi +* '''Pembayaran ''': Arsitektur API fleksibel memungkinkan integrasi metode pembayaran apa pun. Dilengkapi dengan dukungan Braintree di luar kotak. +* '''Geo-adaptif''': Harga yang dilokalkan secara otomatis. Lebih dari 20 bahasa lokal. Pengalaman checkout yang dilokalkan oleh negara. +* '''SEO''': Dikemas dengan fitur yang membuat toko ke audiens yang lebih luas +* '''Cloud''': Dioptimalkan untuk penyebaran menggunakan Docker +* '''Analytics''': Google Analytics sisi-server melaporkan metrik e-niaga tanpa memengaruhi privasi + +===Repository=== + + + + + + + + + + + + + + + + + + +
Nama
+deployment +: elasticbeanstalk +:: Dockerrun.aws.json +
locale
+saleor +: celeryconf.py +: settings.py +: urls.py +
scripts
templates
test
common.env
docker-compose.override.yml
docker-compose.yml
manage.py
requirements.txt
requirements_dev.txt
runtime.txt
setup.cfg
+ +===Data Skema=== +Berdasarkan products/models/base.py and images.py dan postgresql database tables + +[[|https://i.stack.imgur.com/17aW2.png]] + +===Data Model=== +Data Model dapat dibuat dengan [[django-extensions|http://django-extensions.readthedocs.io/en/latest/graph_models.html]] + +[[|https://i.stack.imgur.com/a45YV.jpg]] + +===Dokumentasi=== +[[Dokumentasi|https://docs.getsaleor.com/en/latest/]] bisa di download [[disini|https://readthedocs.org/projects/saleor/downloads/]] + +Contents: + +* [[Getting Started|https://docs.getsaleor.com/en/latest/gettingstarted.html]] +** [[Installation for macOS|https://docs.getsaleor.com/en/latest/gettingstarted/installation-macos.html]] +** [[Installation for Windows|https://docs.getsaleor.com/en/latest/gettingstarted/installation-windows.html]] +** [[Installation for Linux|https://docs.getsaleor.com/en/latest/gettingstarted/installation-linux.html]] +** [[Configuration|https://docs.getsaleor.com/en/latest/gettingstarted/configuration.html]] +** [[Creating an Administrator Account|https://docs.getsaleor.com/en/latest/gettingstarted/superuser.html]] +** [[Debug tools|https://docs.getsaleor.com/en/latest/gettingstarted/dev-tools.html]] +** [[Example Data|https://docs.getsaleor.com/en/latest/gettingstarted/example-data.html]] +* [[Customizing Saleor|https://docs.getsaleor.com/en/latest/customization.html]] +** [[Using Docker for Development|https://docs.getsaleor.com/en/latest/customization/docker.html]] +** [[Customizing Templates|https://docs.getsaleor.com/en/latest/customization/templates.html]] +** [[Customizing Emails|https://docs.getsaleor.com/en/latest/customization/emails.html]] +** [[Customizing CSS and JavaScript|https://docs.getsaleor.com/en/latest/customization/frontend.html]] +** [[Working with Python Code|https://docs.getsaleor.com/en/latest/customization/backend.html]] +** [[Internationalization|https://docs.getsaleor.com/en/latest/customization/i18n.html]] +** [[Running Tests|https://docs.getsaleor.com/en/latest/customization/tests.html]] +** [[Continuous Integration|https://docs.getsaleor.com/en/latest/customization/ci.html]] +** [[Running with PyPy 3.5|https://docs.getsaleor.com/en/latest/customization/pypy.html]] +* [[Supported Payment Gateways|https://docs.getsaleor.com/en/latest/payment-gateways.html]] +** [[Braintree (supports PayPal and Credit Cards)|https://docs.getsaleor.com/en/latest/payment-gateways/braintree.html]] +** [[Razorpay (supports only the paisa currency)|https://docs.getsaleor.com/en/latest/payment-gateways/razorpay.html]] +** [[Stripe (supports Credit Cards)|https://docs.getsaleor.com/en/latest/payment-gateways/stripe.html]] +* [[Contributing Guides|https://docs.getsaleor.com/en/latest/contributing.html]] +** [[EditorConfig|https://docs.getsaleor.com/en/latest/contributing/editorconfig.html]] +** [[Coding Style|https://docs.getsaleor.com/en/latest/contributing/coding-style.html]] +** [[Naming Conventions|https://docs.getsaleor.com/en/latest/contributing/naming.html]] +* [[Architecture|https://docs.getsaleor.com/en/latest/architecture.html]] +** [[Handling Money Amounts|https://docs.getsaleor.com/en/latest/architecture/money.html]] +** [[Product Structure|https://docs.getsaleor.com/en/latest/architecture/products.html]] +** [[Thumbnails|https://docs.getsaleor.com/en/latest/architecture/thumbnails.html]] +** [[Stock Management|https://docs.getsaleor.com/en/latest/architecture/stock.html]] +** [[[[Order Management|https://docs.getsaleor.com/en/latest/architecture/orders.html]] +** [[Events|https://docs.getsaleor.com/en/latest/architecture/events.html]] +** [[Internationalization|https://docs.getsaleor.com/en/latest/architecture/i18n.html]] +** [[Model Translations|https://docs.getsaleor.com/en/latest/architecture/translations.html]] +** [[Search|https://docs.getsaleor.com/en/latest/architecture/search.html]] +** [[Payments Architecture|https://docs.getsaleor.com/en/latest/architecture/payments.html]] +** [[Shippings|https://docs.getsaleor.com/en/latest/architecture/shippings.html]] +** [[Site Settings|https://docs.getsaleor.com/en/latest/architecture/settings.html]] +** [[Pages|https://docs.getsaleor.com/en/latest/architecture/page.html]] +** [[GDPR Compliance|https://docs.getsaleor.com/en/latest/architecture/gdpr.html]] +** [[Manual actions required|https://docs.getsaleor.com/en/latest/architecture/gdpr.html#manual-actions-required]] +** [[GraphQL API (Beta)|https://docs.getsaleor.com/en/latest/architecture/graphql.html]] +* [[Integrations|https://docs.getsaleor.com/en/latest/integrations.html]] +** [[Search Engine Optimization (SEO)|https://docs.getsaleor.com/en/latest/integrations/seo.html]] +** [[Social Media Optimization (SMO)|https://docs.getsaleor.com/en/latest/integrations/smo.html]] +** [[Email Markup|https://docs.getsaleor.com/en/latest/integrations/emailmarkup.html]] +** [[Elasticsearch|https://docs.getsaleor.com/en/latest/integrations/elasticsearch.html]] +** [[Google Analytics|https://docs.getsaleor.com/en/latest/integrations/googleanalytics.html]] +** [[Google for Retail|https://docs.getsaleor.com/en/latest/integrations/googleforretail.html]] +** [[Open Exchange Rates|https://docs.getsaleor.com/en/latest/integrations/openexchangerates.html]] +** [[Error tracking with Sentry|https://docs.getsaleor.com/en/latest/integrations/sentry.html]] +* [[Deployment|https://docs.getsaleor.com/en/latest/deployment.html]] +** [[Docker|https://docs.getsaleor.com/en/latest/deployment/docker.html]] +** [[Heroku|https://docs.getsaleor.com/en/latest/deployment/heroku.html]] +** [[Storing Files on Amazon S3|https://docs.getsaleor.com/en/latest/deployment/s3.html]] +* [[Guides|https://docs.getsaleor.com/en/latest/guides.html]] +** [[Orders|https://docs.getsaleor.com/en/latest/guides/orders.html]] +** [[Payments|https://docs.getsaleor.com/en/latest/guides/payments.html]] +** [[Example|https://docs.getsaleor.com/en/latest/guides/payments.html#id8]] +** [[Navigation|https://docs.getsaleor.com/en/latest/guides/navigation.html]] +** [[Taxes|https://docs.getsaleor.com/en/latest/guides/taxes.html]] +** [[ReCaptcha|https://docs.getsaleor.com/en/latest/guides/recaptcha.html]] +** [[Email Configuration and Integration|https://docs.getsaleor.com/en/latest/guides/email_integration.html]] + + +==Pengembangan== +* [[Release Announcement|https://medium.com/saleor]] + +===Etalase=== +Etalase PWA (Aplikasi Web Progresif) memungkinkan pengguna untuk menelusuri dan membeli produk di seluruh perangkat dan platform, memberikan pengalaman berbelanja yang menarik + +[[|https://github.com/mirumee/saleor#features]] + +===Platform=== +API GraphQL, menggunakan Bereaksi, menggeser Saleor menjadi e-commerce tanpa kepala dan memindahkan solusi ke platform yang kedepan-bukti untuk tim pengembangan + +Saleor 2.0 dibangun berdasarkan kesuksesan itu tetapi menghadirkan pengalaman pengguna yang lebih baik, memperkenalkan solusi e-commerce tanpa kepala dengan PWA sebagai fitur standar, ditambah dengan tampilan dan nuansa yang telah diganti merek, dashboard yang lebih baik, dan etalase baru. + +“Kami merintis dengan GraphQL karena kami percaya bahwa gelombang ketiga e-commerce adalah tentang pengalaman. Perlu teknologi baru yang membuatnya mudah untuk bekerja dengan klien seluler dan PWA. Dan kami pikir pengalaman pengguna akhir yang lebih baik dimulai dengan pengalaman hebat bagi pengembang. Jika kami memberi mereka alat baru yang hebat untuk dikerjakan, mereka dapat fokus pada inovasi yang akhirnya bermanfaat bagi pelanggan. " + +- Mirek Mencel, CEO, Mirumee + +===Modul=== +Modularitas dari GraphQL API memungkinkan administrator untuk menjaga backend up-to-date tanpa perubahan minimal di frontend +[[|https://user-images.githubusercontent.com/5421321/47799917-8afd7a00-dd2b-11e8-88c7-63588e25bcea.png]] + +===Dasbor=== +Dasbor baru membuat fungsi terbaik dari versi sebelumnya tetapi menggunakan fitur pengalaman yang paling diinginkan seperti Shopify +[[|http://scotttactical.com/images/saleor4.png]] + + +==Maintenance== +===Pengelola=== +Pengelola Aplikasi Saleor adalah [[Mirumee Software|https://mirumee.com/]] yang didirikan pada tahun 2009, sebuah rumah perangkat lunak yang berspesialisasi dalam aplikasi dan e-commerce Python dan kinerja tinggi. + +Perusahaan ini menawarkan layanan pengembangan web dan konsultasi untuk bisnis dari pengecer online volume tinggi hingga inovator yang mengganggu di Forbes 30 Under 30 List. Mirumee adalah kontributor aktif dalam komunitas open source dan diperingkatkan sebagai kontributor Python open source teratas di Polandia. + +===Komitmen=== +Mirumee melihat Saleor 2.0 sebagai platform e-commerce open source untuk era PWA. Fungsionalitas tambahan seperti kemampuan multi-vendor, API permintaan pembayaran, dan perhitungan pajak lanjutan dengan integrasi Avalara ditargetkan dalam beberapa bulan mendatang seiring berkembangnya solusi. + +Perusahaan juga bertujuan untuk implementasi lebih lanjut untuk perusahaan ritel bervolume tinggi dan sedang mempersiapkan perluasan yang diperlukan dari platform Saleor saat basis pelanggan tumbuh. + +===Gabung Tim=== +Anda dapat meminta untuk bergabung dengan tim proyek "Saleor" dengan cara sbb +* Kontrusi koding di [[GitHub|https://github.com/mirumee/saleor]] +* Diskusi tentang masa depan Saleor di [[Gitter|https://gitter.im/mirumee/saleor]] +* Kemukakan keiinginan / peroleh jawaban di [[Spectrum|https://spectrum.chat/saleor]] +* Membagi solusi masalah pemrograman di [[Stackoverflow|https://stackoverflow.com/questions/tagged/saleor]] +* Membantu menterjemahkan ke bahasa Indonesia di [[Transifex|https://www.transifex.com/mirumee/teams/34782/id/]] + +==''Referensi''== +* [[Getting Started|https://docs.getsaleor.com/en/latest/gettingstarted.html#getting-started]] +* [[Documentation - pdf|https://media.readthedocs.org/pdf/saleor/stable/saleor.pdf]] +* [[Saleor Releases - zip/tar.gz|https://github.com/mirumee/saleor/releases]] +* [[Guides - Install in Google Cloud|https://github.com/mirumee/saleor/issues/2533#issuecomment-468963508]] diff --git a/Apa-itu-Docker.mediawiki b/Apa-itu-Docker.mediawiki new file mode 100644 index 000000000000..ac021f376af6 --- /dev/null +++ b/Apa-itu-Docker.mediawiki @@ -0,0 +1,703 @@ +[[Docker|https://en.wikipedia.org/wiki/Docker_(software)]] adalah platform virtualisasi tingkat sistem operasi yang digunakan oleh ''[[Apa-itu-Saleor|Saleor]]'' untuk mengembangkan dan mengirimkan perangkat lunak dalam paket yang disebut kontainer. + +__TOC__ + +==Arsitektur== + +[[Docker|https://en.wikipedia.org/wiki/Docker_(software)]] adalah program komputer yang melakukan virtualisasi tingkat sistem operasi. Ini pertama kali dirilis pada 2013 dan dikembangkan oleh [[Docker, Inc|https://en.wikipedia.org/wiki/Docker,_Inc.]]. Docker digunakan untuk menjalankan paket perangkat lunak yang disebut [[wadah|https://en.wikipedia.org/wiki/Container_(virtualization)]]. + +Wadah diisolasi dari satu sama lain dan bundel aplikasi mereka sendiri, alat, perpustakaan dan file konfigurasi; mereka dapat berkomunikasi satu sama lain melalui saluran dijalankan oleh kernel sistem operasi tunggal dan karenanya lebih ringan dari mesin virtual. + +Wadah dibuat dari gambar yang menentukan konten tepatnya. Gambar sering dibuat dengan menggabungkan dan memodifikasi gambar standar yang diunduh dari repositori publik. +[[|https://docs.docker.com/engine/docker-overview/]] +===Software=== +Daemon Docker, disebut dockerd, adalah proses persisten yang mengelola kontainer Docker dan menangani objek kontainer. Daemon mendengarkan permintaan yang dikirim melalui Docker Engine API. Program klien Docker, yang disebut docker, menyediakan antarmuka baris perintah yang memungkinkan pengguna untuk berinteraksi dengan daemon Docker. + +===Objects=== +Objek utama objek Docker adalah gambar, wadah, dan layanan. +* Wadah Docker adalah lingkungan berstandar, terbungkus yang menjalankan aplikasi. Wadah dikelola menggunakan Docker API atau CLI. +* Gambar Docker adalah templat baca-saja yang digunakan untuk membuat wadah. Gambar digunakan untuk menyimpan dan mengirimkan aplikasi. +* Layanan Docker memungkinkan penskalaan ditingkatkan di beberapa daemon Docker. Hasilnya dikenal sebagai swarm, yaitu seperangkat daemon yang berkomunikasi melalui Docker API. + +===Registry=== +Registri Docker adalah repositori untuk gambar Docker. Klien Docker terhubung ke pendaftar untuk mengunduh ("pull") gambar untuk digunakan atau mengunggah ("push") gambar yang telah mereka buat. Pendaftaran via Docker ID. Dapat bersifat publik atau pribadi. + +Registri utama adalah [[Docker Hub|https://www.docker.com/products/docker-hub]] dan [[Docker Cloud|https://docs.docker.com/v17.12/docker-cloud/getting-started/intro_cloud/]]. + +* [[Docker Hub|https://hub.docker.com/]] adalah registri default tempat Docker mencari gambar. Registri [[Docker Hub|https://docs.docker.com/docker-hub/]] juga memungkinkan pembuatan notifikasi berdasarkan peristiwa. + +* [[Docker Cloud|https://cloud.docker.com/]] adalah untuk meninjau skala aplikasi Anda di berbagai node. Di [[Docker Cloud|https://docs.docker.com/docker-hub/]] Anda menyeret slider untuk menambah atau mengurangi ketersediaan, kinerja, dan redundansi. + +Layanan dapat ditautkan satu sama lain bahkan jika mereka ditempatkan di berbagai node, wilayah, atau bahkan penyedia cloud. Anda juga dapat [[pasang dan operasikan registry|https://docs.docker.com/registry/deploying/]] untuk mengunggah ("push") gambar ke server Anda via perintah seperti berikut ini: +``` +docker push myregistrydomain.com:5000/saleor +``` + +==Konfigurasi== +===Docker Engine=== + +Docker tersedia dalam dua edisi: + +* Docker [[Community Edition (CE)|https://www.docker.com/products/docker-engine]] sangat ideal untuk pengembang individu dan tim kecil yang ingin memulai dengan Docker dan bereksperimen dengan aplikasi berbasis wadah (Free}. + +* Docker [[Enterprise Edition (EE)|https://www.docker.com/products/docker-enterprise]] dirancang untuk pengembangan perusahaan dan tim TI yang membangun dan menjalankan aplikasi bisnis skala besar (Basic, Standard & Advance). + + +===Docker Compose=== +Adalah alat untuk mendefinisikan dan menjalankan aplikasi Docker multi-kontainer menggunakan ''[[file YAML|https://en.wikipedia.org/wiki/YAML]]'' untuk mengkonfigurasi layanan aplikasi dan melakukan proses penciptaan dan memulai semua wadah dengan satu perintah. + +Utilitas CLI-compose docker memungkinkan pengguna untuk menjalankan perintah pada beberapa kontainer sekaligus, misalnya, membangun gambar, penskalaan kontainer, menjalankan kontainer yang dihentikan, dan banyak lagi. + +Perintah yang terkait dengan manipulasi gambar, atau opsi interaktif pengguna, tidak relevan di Docker Compose karena mereka menangani satu wadah. + +File docker-compose.yml digunakan untuk mendefinisikan layanan aplikasi dan menyertakan berbagai opsi konfigurasi. Misalnya, opsi build mendefinisikan opsi konfigurasi seperti jalur Dockerfile, opsi perintah memungkinkan seseorang untuk menimpah (override) perintah Docker default, dan banyak lagi. + +===Docker Swarm=== +Menyediakan fungsionalitas pengelompokan asli untuk wadah Docker, yang mengubah sekelompok mesin Docker menjadi mesin Docker virtual tunggal. Di Docker 1.12 dan lebih tinggi, [[mode Swarm|https://docs.docker.com/engine/swarm/]] terintegrasi dengan [[Apa-itu-Docker#docker-engine|Docker Engine]]. + +Utilitas swarm CLI memungkinkan pengguna untuk menjalankan wadah Swarm, membuat token penemuan, daftar node dalam cluster, dan banyak lagi. + +Utilitas docker node CLI memungkinkan pengguna untuk menjalankan berbagai perintah untuk mengelola node dalam swarm, misalnya, daftar node dalam segerombolan, memperbarui node, dan menghapus node dari swarm. + +Docker mengelola swarm menggunakan Algoritma Konsensus Raft. Menurut Raft, agar pembaruan dapat dilakukan, sebagian besar simpul Swarm harus menyetujui pembaruan tersebut. + +===Docker Stacks=== + +[[Fungsi Docker Stack|https://docs.docker.com/engine/reference/commandline/stack/]], disertakan dengan mesin Docker. Anda tidak perlu menginstal paket tambahan untuk menggunakannya Menyebarkan tumpukan buruh pelabuhan adalah bagian dari mode swarm. + +Ini mendukung jenis penulisan file yang sama, tetapi penanganannya terjadi pada kode Go, di dalam Docker Engine. [[Docker Stacks dan Bundel Aplikasi Terdistribusi|https://github.com/docker/cli/blob/master/experimental/docker-stacks-and-bundles.md]] adalah fitur eksperimental yang diperkenalkan di Docker 1.12 dan Docker Compose 1.8, di samping konsep mode segerombolan, dan Node dan Layanan di API Mesin. + +Dockerfile dapat dibangun menjadi gambar, dan wadah dapat dibuat dari gambar itu. Demikian pula, docker-compose.yml dapat dibangun ke dalam bundel aplikasi terdistribusi, dan tumpukan dapat dibuat dari bundel itu. Dalam pengertian itu, bundel adalah format gambar yang dapat didistribusikan secara multi-layanan. + +Pada Docker 1.12 dan Compose 1.8, fitur-fiturnya masih eksperimental. Baik Docker Engine maupun Docker Registry tidak mendukung distribusi bundel. + +==Dokumentasi== +[[Dokumentasi|https://docs.docker.com/]] bisa di download [[disini|https://docs.docker.com/docsarchive/]] + +===Guides=== + +* Get Docker +** [[Overview of Docker editions|https://docs.docker.com/install/overview/]] +** Docker CE +*** [[About Docker CE|https://docs.docker.com/install/]] +*** Cloud +*** [[Linux|https://docs.docker.com/install/linux/linux-postinstall/]] +*** MacOS +*** Microsoft Windows +*** Docker Toolbox (legacy) +*** Release notes +** Docker EE +*** About Docker EE +*** Linux +*** Microsoft Windows Server +*** Release notes +** Compatibility between Docker versions +*** CE-EE Node Activate +*** Migrate to Docker 1.10 +*** Breaking changes +*** Deprecated Docker features +*** FAQ +* Get started +** Get started with Docker +*** Part 1: Orientation +*** Part 2: Containers +*** Part 3: Services +*** Part 4: Swarms +*** Part 5: Stacks +*** Part 6: Deploy your app +** Docker overview +* Develop with Docker +** Develop your apps on Docker +*** App development overview +*** App development best practices +*** Develop images +*** Best practices for writing Dockerfiles +*** Create a base image +*** Docker build enhancements for 18.09 +*** Use multi-stage builds +*** Dockerfile reference +*** Manage images +*** Docker app examples +** Develop using the Docker Engine SDKs and API +*** Overview +*** SDK and API examples +* Configure networking +** Networking overview +** Use bridge networks +** Use overlay networks +** Use host networking +** Use Macvlan networks +** Disable networking for a container +** Networking tutorials +*** Bridge network tutorial +*** Host networking tutorial +*** Overlay networking tutorial +*** Macvlan network tutorial +** Configure the daemon and containers +*** Configure the daemon for IPv6 +*** Docker and iptables +*** Container networking +*** Configure Docker to use a proxy server +** Legacy networking content +*** (Legacy) Container links +*** Overlay networks for Swarm Classic +* Manage application data +** Storage overview +** Volumes +** Bind mounts +** tmpfs mounts +** Troubleshoot volume problems +** Store data within containers +*** About storage drivers +*** Select a storage driver +*** Use the AUFS storage driver +*** Use the Btrfs storage driver +*** Use the Device mapper storage driver +*** Use the OverlayFS storage driver +*** Use the ZFS storage driver +*** Use the VFS storage driver +* Run your app in production +** Configure all objects +*** Apply custom metadata to objects +*** Prune unused objects +*** Format command and log output +** Configure the daemon +*** Configure and run Docker +*** Control Docker with systemd +*** Apply custom metadata to daemons +*** Configuring default drivers +** Work with external tools +*** Third-party monitoring tools +*** Collect Docker metrics with Prometheus +** Configure containers +*** Start containers automatically +*** Keep containers alive during daemon downtime +*** Run multiple services in a container +*** Container runtime metrics +*** Limit a container's resources +*** Apply custom metadata to containers +*** Prune unused containers +*** Logging +*** View a container's logs +*** Configure logging drivers +*** Use a logging driver plugin +*** Customize log driver output +*** Logging driver details +*** Run a local registry mirror +*** Work with external tools +*** PowerShell DSC usage +*** Ansible +*** Chef +*** Puppet +*** (Obsolete) Link via an ambassador container +*** Security +*** Docker security +*** Docker security non-events +*** Protect the Docker daemon socket +*** Using certificates for repository client verification +*** Use trusted images +*** Content trust in Docker +*** Automation with content trust +*** Delegations for content trust +*** Deploying Notary +*** Manage keys for content trust +*** Play in a content trust sandbox +*** Antivirus software and Docker +*** AppArmor security profiles for Docker +*** Seccomp security profiles for Docker +*** Isolate containers with a user namespace +*** Scale your app +*** Swarm mode overview +*** Swarm mode key concepts +*** Get started with swarm mode +*** How swarm mode works +*** Run Docker in swarm mode +*** Join nodes to a swarm +*** Manage nodes in a swarm +*** Deploy services to a swarm +*** Store service configuration data +*** Manage sensitive data with Docker secrets +*** Lock your swarm +*** Manage swarm service networks +*** Swarm administration guide +*** Raft consensus in swarm mode +*** Extend Docker +*** Managed plugin system +*** Access authorization plugin +*** Extending Docker with plugins +*** Docker network driver plugins +*** Volume plugins +*** Plugin configuration +*** Plugins API +** Standards and compliance +*** Docker standards and compliance +*** NIST +*** CIS Benchmarks +*** Docker EE Benchmark +*** Docker CE Benchmark +*** Kubernetes Benchmark +*** FedRAMP +*** FISMA +** Open source at Docker +*** Contribute to documentation +*** Other ways to contribute +** Documentation archive +*** View the docs archives +*** Docs hackathon results + +===Manual=== +* Docker Enterprise Edition +** About Docker EE +** Try Docker EE on the cloud +** Supported platforms +** Deploy Docker EE standard +** Backup Docker EE +** Upgrade Docker EE +** Docker EE Architecture +** Manage usage data collection +** Docker EE Engine +** Universal Control Plane +** Docker Trusted Registry +** Get support +* Docker Compose +** [[Overview of Docker Compose|https://docs.docker.com/compose/overview/]] +** [[Install Compose|https://docs.docker.com/compose/install/]] +** [[Getting started|https://docs.docker.com/compose/gettingstarted/]] +** Compose (docker-compose) CLI reference +** [[Compose file reference|https://docs.docker.com/compose/reference/overview/]] +** [[Docker stacks and distributed application bundles|https://docs.docker.com/compose/bundles/]] +** [[Using Compose with Swarm|https://docs.docker.com/compose/swarm/]] +** [[Environment file|https://docs.docker.com/compose/env-file/]] +** [[Environment variables in Compose|https://docs.docker.com/compose/environment-variables/]] +** [[Extend services in Compose|https://docs.docker.com/compose/extends/]] +*** [[Networking in Compose|https://docs.docker.com/compose/networking/]] +*** [[Using Compose in production|https://docs.docker.com/compose/production/]] +*** [[Link environment variables (deprecated)|https://docs.docker.com/compose/link-env-deprecated/]] +** [[Control startup order|https://docs.docker.com/compose/startup-order/]] +** [[Sample apps with Compose|https://docs.docker.com/compose/samples-for-compose/]] +** [[Docker Compose release notes|https://docs.docker.com/release-notes/docker-compose/]] +* Docker Desktop for Mac +* Docker Desktop for Windows +** Getting started +** Install Docker Desktop for Windows +** Deploy on Kubernetes +** Networking +** Migrate Docker Toolbox +** Logs and troubleshooting +** FAQs +** Open source licensing +** Stable release notes +** Edge release notes +* Docker ID accounts +* Docker Machine +* Docker Hub +** Quickstart +** Repositories +** Official Images +** Teams & Organizations +** Webhooks +** Slack Integration +** Upgrading your plan +** Automated Builds +** Publisher & Certified Content +* Open-source projects +** Docker Notary +** Docker Registry +* Release notes +** Overview +** Docker EE and CE +** CS Docker Engine +** Docker (1.13 and earlier) +** Docker Desktop for Mac +** Docker Desktop for Windows +** Docker Compose +** Docker for AWS +** Docker for Azure +** Docker Machine release notes +** Docker Swarm release notes +* Superseded products and tools +** Commercially supported Docker Engine +** Docker Swarm (standalone) + +===Reference=== +* File formats +** Dockerfile reference +** Compose file reference +** Command-Line Interfaces (CLIs) +** Docker CLI (docker) +** Daemon CLI (dockerd) +** Machine (docker-machine) CLI +** Compose (docker-compose) CLI +** DTR CLI +** UCP CLI +* Application Programming Interfaces (APIs) +** Docker Engine API +** DTR API +** UCP API +** Registry API +* Drivers and specifications +** Image specification +** Machine drivers +** Registry token authentication +** Registry storage drivers +* Compliance control references +***NIST 800-53 + +===Samples=== +* Tutorial labs +** Library references +*** adminer +*** aerospike +*** alpine +*** alt +*** amazoncorretto +*** amazonlinux +*** arangodb +*** backdrop +*** bash +*** bonita +*** buildpack-deps +*** busybox +*** cassandra +*** centos +*** chronograf +*** cirros +*** clearlinux +*** clefos +*** clojure +*** composer +*** consul +*** convertigo +*** couchbase +*** couchdb +*** crate +*** crux +*** debian +*** docker +*** drupal +*** eclipse-mosquitto +*** eggdrop +*** elasticsearch +*** elixir +*** erlang +*** euleros +*** express-gateway +*** fedora +*** flink +*** fsharp +*** gazebo +*** gcc +*** geonetwork +*** ghost +*** golang +*** gradle +*** groovy +*** haproxy +*** haskell +*** haxe +*** hello-seattle +*** hello-world +*** hola-mundo +*** httpd +*** hylang +*** ibmjava +*** influxdb +*** irssi +*** jetty +*** joomla +*** jruby +*** julia +*** kaazing-gateway +*** kapacitor +*** kibana +*** known +*** kong +*** lightstreamer +*** logstash +*** mageia +*** mariadb +*** matomo +*** maven +*** mediawiki +*** memcached +*** mongo-express +*** mongo +*** mono +*** [[mysql|https://docs.docker.com/samples/library/mysql/]] +*** nats-streaming +*** nats +*** neo4j +*** neurodebian +*** nextcloud +*** [[nginx|https://docs.docker.com/samples/library/nginx/]] +*** node +*** notary +*** nuxeo +*** odoo +*** open-liberty +*** openjdk +*** opensuse +*** oraclelinux +*** orientdb +*** percona +*** perl +*** photon +*** php-zendserver +*** php +*** plone +*** postfixadmin +*** [[postgres|https://docs.docker.com/samples/library/postgres/]] +*** pypy +*** python +*** r-base +*** rabbitmq +*** rakudo-star +*** rapidoid +*** [[redis|https://docs.docker.com/samples/library/redis/]] +*** redmine +*** registry +*** rethinkdb +*** rocket.chat +*** ros +*** ruby +*** rust +*** scratch +*** sentry +*** silverpeas +*** sl +*** solr +*** sonarqube +*** sourcemage +*** spiped +*** storm +*** swarm +*** swift +*** swipl +*** teamspeak +*** telegraf +*** thrift +*** tomcat +*** tomee +*** traefik +*** ubuntu +*** vault +*** websphere-liberty +*** wordpress +*** xwiki +*** yourls +*** znc +*** zookeeper +** Sample applications +*** Samples home +*** apt-cacher-ng +*** .NET Core application +*** ASP.NET Core + SQL Server on Linux +*** CouchDB +*** Django and PostgreSQL +*** PostgreSQL +*** Rails and PostgreSQL +*** Riak +*** SSHd + +==Menjalankan== +``` +$ docker run --rm gcr.io/chetabahana/saleor --env-file ~/.env.list ubuntu bash +``` +Maka: +* Perintah Utama adalah run +* Opsi Perintah run yg dipakai --rm dan --env-file + +===Perintah=== +``` +$ docker --help +Usage: docker [OPTIONS] COMMAND + +A self-sufficient runtime for containers + +Options: + --config string Location of client config files (default "/home/chetabahana_gmail_com/.docker") + -D, --debug Enable debug mode + -H, --host list Daemon socket(s) to connect to + -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") + --tls Use TLS; implied by --tlsverify + --tlscacert string Trust certs signed only by this CA (default "/home/chetabahana_gmail_com/.docker/ca.pem") + --tlscert string Path to TLS certificate file (default "/home/chetabahana_gmail_com/.docker/cert.pem") + --tlskey string Path to TLS key file (default "/home/chetabahana_gmail_com/.docker/key.pem") + --tlsverify Use TLS and verify the remote + -v, --version Print version information and quit + +Management Commands: + config Manage Docker configs + container Manage containers + image Manage images + network Manage networks + node Manage Swarm nodes + plugin Manage plugins + secret Manage Docker secrets + service Manage services + stack Manage Docker stacks + swarm Manage Swarm + system Manage Docker + trust Manage trust on Docker images + volume Manage volumes + +Commands: + attach Attach local standard input, output, and error streams to a running container + build Build an image from a Dockerfile commit Create a new image from a container's changes + cp Copy files/folders between a container and the local filesystem + create Create a new container + deploy Deploy a new stack or update an existing stack + diff Inspect changes to files or directories on a container's filesystem + events Get real time events from the server + exec Run a command in a running container + export Export a container's filesystem as a tar archive + history Show the history of an image + images List images + import Import the contents from a tarball to create a filesystem image + info Display system-wide information + inspect Return low-level information on Docker objects + kill Kill one or more running containers + load Load an image from a tar archive or STDIN + login Log in to a Docker registry + logout Log out from a Docker registry + logs Fetch the logs of a container + pause Pause all processes within one or more containers + port List port mappings or a specific mapping for the container + ps List containers + pull Pull an image or a repository from a registry + push Push an image or a repository to a registry + rename Rename a container + restart Restart one or more containers + rm Remove one or more containers + rmi Remove one or more images + run Run a command in a new container + save Save one or more images to a tar archive (streamed to STDOUT by default) + search Search the Docker Hub for images + start Start one or more stopped containers + stats Display a live stream of container(s) resource usage statistics + stop Stop one or more running containers + tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE + top Display the running processes of a container + unpause Unpause all processes within one or more containers + update Update configuration of one or more containers + version Show the Docker version information + wait Block until one or more containers stop, then print their exit codes + +``` + +===Opsi Perintah=== + run +``` +$ docker run --help +Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] + +Run a command in a new container + +Options: + --add-host list Add a custom host-to-IP mapping (host:ip) + -a, --attach list Attach to STDIN, STDOUT or STDERR + --blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) + --blkio-weight-device list Block IO weight (relative device weight) (default []) + --cap-add list Add Linux capabilities + --cap-drop list Drop Linux capabilities + --cgroup-parent string Optional parent cgroup for the container + --cidfile string Write the container ID to the file + --cpu-count int CPU count (Windows only) + --cpu-percent int CPU percent (Windows only) + --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period + --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota + --cpu-rt-period int Limit CPU real-time period in microseconds + --cpu-rt-runtime int Limit CPU real-time runtime in microseconds + -c, --cpu-shares int CPU shares (relative weight) + --cpus decimal Number of CPUs + --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) + --cpuset-mems string MEMs in which to allow execution (0-3, 0,1) + -d, --detach Run container in background and print container ID + --detach-keys string Override the key sequence for detaching a container + --device list Add a host device to the container + --device-cgroup-rule list Add a rule to the cgroup allowed devices list + --device-read-bps list Limit read rate (bytes per second) from a device (default []) + --device-read-iops list Limit read rate (IO per second) from a device (default []) + --device-write-bps list Limit write rate (bytes per second) to a device (default []) + --device-write-iops list Limit write rate (IO per second) to a device (default []) + --disable-content-trust Skip image verification (default true) + --dns list Set custom DNS servers + --dns-option list Set DNS options --dns-search list Set custom DNS search domains + --entrypoint string Overwrite the default ENTRYPOINT of the image + -e, --env list Set environment variables + --env-file list Read in a file of environment variables + --expose list Expose a port or a range of ports + --group-add list Add additional groups to join + --health-cmd string Command to run to check health + --health-interval duration Time between running the check (ms|s|m|h) (default 0s) + --health-retries int Consecutive failures needed to report unhealthy + --health-start-period duration Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s) + --health-timeout duration Maximum time to allow one check to run (ms|s|m|h) (default 0s) + --help Print usage + -h, --hostname string Container host name + --init Run an init inside the container that forwards signals and reaps processes + -i, --interactive Keep STDIN open even if not attached + --io-maxbandwidth bytes Maximum IO bandwidth limit for the system drive (Windows only) + --io-maxiops uint Maximum IOps limit for the system drive (Windows only) + --ip string IPv4 address (e.g., 172.30.100.104) + --ip6 string IPv6 address (e.g., 2001:db8::33) + --ipc string IPC mode to use + --isolation string Container isolation technology + --kernel-memory bytes Kernel memory limit + -l, --label list Set meta data on a container + --label-file list Read in a line delimited file of labels + --link list Add link to another container + --link-local-ip list Container IPv4/IPv6 link-local addresses + --log-driver string Logging driver for the container + --log-opt list Log driver options + --mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33) + -m, --memory bytes Memory limit + --memory-reservation bytes Memory soft limit + --memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap + --memory-swappiness int Tune container memory swappiness (0 to 100) (default -1) --mount mount Attach a filesystem mount to the container + --name string Assign a name to the container + --network string Connect a container to a network (default "default") + --network-alias list Add network-scoped alias for the container + --no-healthcheck Disable any container-specified HEALTHCHECK + --oom-kill-disable Disable OOM Killer + --oom-score-adj int Tune host's OOM preferences (-1000 to 1000) + --pid string PID namespace to use + --pids-limit int Tune container pids limit (set -1 for unlimited) + --platform string Set platform if server is multi-platform capable + --privileged Give extended privileges to this container + -p, --publish list Publish a container's port(s) to the host + -P, --publish-all Publish all exposed ports to random ports + --read-only Mount the container's root filesystem as read only + --restart string Restart policy to apply when a container exits (default "no") + --rm Automatically remove the container when it exits + --runtime string Runtime to use for this container + --security-opt list Security Options + --shm-size bytes Size of /dev/shm + --sig-proxy Proxy received signals to the process (default true) + --stop-signal string Signal to stop a container (default "SIGTERM") + --stop-timeout int Timeout (in seconds) to stop a container + --storage-opt list Storage driver options for the container + --sysctl map Sysctl options (default map[]) + --tmpfs list Mount a tmpfs directory + -t, --tty Allocate a pseudo-TTY + --ulimit ulimit Ulimit options (default []) + -u, --user string Username or UID (format: [:]) + --userns string User namespace to use + --uts string UTS namespace to use + -v, --volume list Bind mount a volume + --volume-driver string Optional volume driver for the container + --volumes-from list Mount volumes from the specified container(s) + -w, --workdir string Working directory inside the container +``` + +===File yaml=== + +===Dockerfile=== + + + +==''Referensi''== +* https://chocolatey.org/install +* https://github.com/chocolatey/choco/issues/991 +* https://github.com/docker/toolbox/issues/453 +* https://medium.com/redbubble/running-a-docker-container-as-a-non-root-user-7d2e00f8ee15 diff --git a/App-Engine.mediawiki b/App-Engine.mediawiki new file mode 100644 index 000000000000..a1a66eea572a --- /dev/null +++ b/App-Engine.mediawiki @@ -0,0 +1,122 @@ +__TOC__ +==Umum== +===Bahasa=== +Prinsipnya GAE adalah layanan untuk membangun dan menggunakan aplikasi sehingga dapat fokus hanya pada penulisan kode tanpa khawatir mengelola infrastruktur yang mendasarinya. + +App Engine secara otomatis berskala tergantung pada lalu lintas aplikasi Anda dan hanya gunakan sumber daya saat kode Anda berjalan. + +GAE sedia bahasa populer seperti Java, PHP, Node.js, Python, C #, .Net, Ruby dan Go. Di GAE ini kita akan pilih dengan bahasa Python, untuk kenal lebih jauh Anda bisa simak ''[[GAE Python - Tutorial|https://codelabs.developers.google.com/codelabs/cloud-app-engine-python/]]''. +===Fungsi=== +* Sebagai Fungsi Web: App Engine menyediakan lingkungan standar, yang memungkinkan Anda menjalankan aplikasi di lingkungan yang aman dan mendistribusikan permintaan di beberapa server, dan mengukur server untuk memenuhi permintaan lalu lintas. + +[[|https://cloud.google.com/solutions/web-serving-overview#app-engine]] + +* Sebagai Backend Aplikasi Mobile: Aplikasi Anda berjalan di lingkungannya sendiri yang aman dan andal yang tidak tergantung pada perangkat keras, sistem operasi, atau lokasi fisik server. +[[|https://cloud.google.com/appengine/]] +[[|https://cloud.google.com/solutions/mobile/mobile-app-backend-services/]] + +==Jenis== +GAE memberikan dua jenis layanan yaitu ''[[Standard|https://cloud.google.com/appengine/docs/standard/]]'' dan ''[[Flexible|https://cloud.google.com/appengine/docs/flexible/]]''. Kedua lingkungan menyediakan Anda dengan infrastruktur penerapan, penyajian, dan penskalaan App Engine. + +[[|https://cloud.google.com/appengine/docs/python/]] + +''[[Perbedaan utama|https://cloud.google.com/appengine/docs/the-appengine-environments#comparing_high-level_features]]'' adalah cara lingkungan menjalankan aplikasi Anda, bagaimana aplikasi Anda mengakses layanan eksternal, bagaimana Anda menjalankan aplikasi Anda secara lokal, dan bagaimana skala aplikasi Anda. + +Anda juga dapat merujuk memilih lingkungan untuk ringkasan tingkat tinggi dari perbedaan-perbedaan ini. + +===Standard=== + +Di jenis standard kita bisa jalankan Aplikasi secara ''[[kuota harian gratis|https://cloud.google.com/appengine/quotas#Instances]]''. Jenis standard terdiri dari ''[[dua generasi|https://cloud.google.com/appengine/docs/standard/runtimes]]'' dimana generasi kedua banyak dilakukan peningkatan layanan. + +Selain ''[[Python library|https://docs.python.org/3/library/]]'' secara umum kita bisa pasang ''[[Apa Itu Saleor|Aplikasi Saleor]]'' dengan pustaka lebih untuk ''[[jalankan|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/requirements.txt]]'' maupun ''[[kembangkan|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/requirements_dev.txt]]''. Namun lingkungan standar ''[[tidak support|https://cloud.google.com/appengine/docs/standard/python3/runtime#dependencies]]'' untuk bisa ''[[kelola spesifikasnya|https://stackoverflow.com/a/49867443/4058484]]'' dengan file ''[[Pipfile|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/Pipfile]]'' dan ''[[Pipfile.lock|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/Pipfile.lock]]''. + +===Flexibel=== +Untuk memberi Anda lebih banyak opsi, App Engine menawarkan lingkungan yang fleksibel. Saat Anda menggunakan lingkungan yang fleksibel, aplikasi Anda berjalan pada mesin Compute Engine yang dapat dikonfigurasi, tetapi App Engine mengelola lingkungan hosting untuk Anda. + +Ini berarti bahwa Anda dapat menggunakan runtimes tambahan, termasuk runtimes khusus, untuk pilihan bahasa pemrograman lainnya. Anda juga dapat memanfaatkan beberapa fleksibilitas yang ditawarkan Compute Engine, seperti memilih dari berbagai [[Opsi CPU dan memori|https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type]]. + +Lingkungan yang fleksibel dimaksudkan untuk ''[[melengkapi lingkungan standar|https://stackoverflow.com/a/47324010/4058484]]''. Jika Anda memiliki aplikasi yang sudah berjalan di lingkungan standar, biasanya tidak perlu untuk memigrasi seluruh aplikasi ke lingkungan yang fleksibel. + +Alih-alih, identifikasi bagian-bagian aplikasi Anda yang membutuhkan lebih banyak CPU, lebih banyak RAM, perpustakaan atau program pihak ketiga khusus, atau yang perlu melakukan tindakan yang tidak mungkin dilakukan dalam lingkungan standar. + +Setelah Anda mengidentifikasi bagian-bagian ini dari aplikasi Anda, buat layanan App Engine kecil yang menggunakan lingkungan fleksibel untuk menangani hanya bagian-bagian itu. Layanan Anda yang ada yang berjalan di lingkungan standar dapat memanggil layanan lain menggunakan HTTP, Cloud Tasks (beta), atau Cloud Pub / Sub. +Untuk detilnya bisa Anda disimak ''[[disini|https://cloud.google.com/appengine/docs/flexible/python/flexible-for-standard-users]]''. + +==Items== +Sebelum memasang aplikasi sebaiknya Anda pelajari terlebih dahulu tentang biaya penagihan (billing). Billing bisa diestimasi via ''[[Google Cloud Pricing Calculator|https://cloud.google.com/products/calculator/]]'' sbb: + +===Instance=== +* Standard +** Tagihan mengikuti tabel ''[[GAE Standar|https://cloud.google.com/appengine/pricing#standard_instance_pricing]]'' +** Batas biaya tagihan harian bisa disetel via ''[[Spending Limit|https://cloud.google.com/appengine/docs/standard/python/console/#setting_a_spending_limit]]'' +** Free Daily Quota: ''[[28 jam type F1 plus 9 jam type B1 (RAM 128MB)|https://cloud.google.com/appengine/quotas#Instances]]'' +** Total Estimasi Tagihan ''[[Type F2/B2 (RAM 256MB)|https://cloud.google.com/appengine/docs/standard/#instance_classes]]'' per bulan: ''[[USD 30.44|https://cloud.google.com/products/calculator/#id=29cba647-c313-4a8e-9944-d9d27048ecf0]]'' +** Bisa setel [[Automatic/Manual/Basic|https://cloud.google.com/appengine/docs/standard/python3/how-instances-are-managed#instance_scaling]]: Stop via Idle / _ah/stop / idle_timeout. + +* Flexible +** Tagihan mengikuti tabel ''[[GAE Flexible|https://cloud.google.com/appengine/pricing#flexible-environment-instances]]'' +** Batas biaya tagihan harian ''[[tidak bisa disetel|https://cloud.google.com/appengine/docs/flexible/java/upgrading#pricing_changes]]'' +** Mesin default ''[[2 vCPUs 3.75 GiB VMs n1-standard-1|https://medium.com/google-cloud/three-simple-steps-to-save-costs-when-prototyping-with-app-engine-flexible-environment-104fc6736495]]'' +** Konfigurasi core/CPUs ''[[tidak bisa di pecah via app.yaml|https://stackoverflow.com/a/44569110/4058484]]'' +** Total ''[[Estimasi Tagihan|https://cloud.google.com/appengine/pricing#flexible-environment-instances]]'' minimum per bulan: ''[[USD 83.42|https://cloud.google.com/products/calculator/?hl=in#id=7d3318d6-9920-4a1c-bfbc-5bed6d58eabf]]'' +** Tidak bisa setel stop otomatis. ''[[Minimum 1 Instance Running|https://cloud.google.com/appengine/docs/the-appengine-environments#comparing_high-level_features]]'' + +===Database=== +* GCE +** Tagihan mengikuti tabel ''[[Instance Pricing|https://cloud.google.com/compute/pricing#Predefined vCPUs and memory#standard_machine_types]]'' +** Mesin default ''[[1 vCPUs 3.75 GiB n1-standard-1|https://cloud.google.com/compute/pricing#predefined]]'' +** Total ''[[Estimasi Tagihan|https://cloud.google.com/appengine/pricing#flexible-environment-instances]]'' minimum per bulan: ''[[USD 24.27|https://cloud.google.com/products/calculator/#id=8d216ac0-855c-4510-8b92-8a54a221bd0f]]'' +** Tersedia ''[[Always Free|https://cloud.google.com/compute/pricing#freeusage]]'' type ''[[f1-micro|https://cloud.google.com/compute/pricing#sharedcore]]'' dan ''[[30 GB Standard|https://cloud.google.com/compute/docs/disks/#performance]]'' +** Cara pasang ikuti Tutorial Remote Access ''[[MySQL|https://cloud.google.com/solutions/mysql-remote-access]]'' dan ''[[Postgres|https://cloud.google.com/community/tutorials/setting-up-postgres]]'' + +* Cloud SQL +** Tagihan mengikuti tabel ''[[Instance Pricing|https://cloud.google.com/sql/pricing#2nd-gen-instance-pricing]]'' +** Mesin default ''[[1 vCPUs 3.75 GiB db-n1-standard-1|https://cloud.google.com/sql/docs/postgres/create-instance#machine-types]]'' +** Total ''[[Estimasi Tagihan|https://cloud.google.com/appengine/pricing#flexible-environment-instances]]'' minimum per bulan: ''[[USD 51.01|https://cloud.google.com/products/calculator/#id=3d442a05-5a24-42a7-888f-b7eab2c2c552]]'' +** Type shared (db-f1-micro and db-g1-small) ''[[tidak tersedia|https://cloud.google.com/sql/pricing#2nd-gen-instance-pricing]]'' +** Cara pasang dan koneksi ikuti Dokumentasi ''[[MySQL|https://cloud.google.com/sql/docs/mysql/configure-private-ip]]'' dan ''[[Postgres|https://cloud.google.com/sql/docs/postgres/configure-private-ip]]'' + +===Penyimpanan=== +Untuk Aplikasi Saleor opsi penyimpanan dilakukan di ''[[Amazon S3|https://saleor.readthedocs.io/en/latest/deployment/s3.html]]''. Karena kita pilih pasang di Google Cloud maka dalam proyek ini [[Google-Cloud-Storage|Google Cloud Storage]] akan digunakan via ''[[Django File Api|https://django-storages.readthedocs.io/en/latest/backends/gcloud.html]]''. + +[[Harga Cloud Storage|https://cloud.google.com/storage/pricing]] didasarkan pada komponen-komponen berikut: + +* [[Penyimpanan data|https://cloud.google.com/storage/pricing#price-tables]]: menyimpan data dalam buckets. +* [[Penggunaan jaringan|https://cloud.google.com/storage/pricing#network-pricing]]: mengakses dan memindahkan data dalam buckets. +* [[Penggunaan operasi|https://cloud.google.com/storage/pricing#operations-pricing]]: melakukan tindakan dalam Penyimpanan Cloud. +* [[Biaya pengambilan dan penghapusan awal|https://cloud.google.com/storage/pricing#archival-pricing]]: hanya berlaku untuk data yang disimpan di kelas Penyimpanan Nearline atau Coldline Storage. + +==Billing== +Karena semua opsi bisa dilakukan maka Anda bisa mulai bekerja dengan budget minim sekalipun. Namun tentu saja akan ada konsekuensi terhadap kerentanan layanan. +===Status=== +Actual total biaya harian bisa Anda cek di ''Status Penagihan'' via ''[[Dasbor Aplikasi|https://console.cloud.google.com/appengine]]''. Namun dikarenakan oleh cara penghitungan perkiraannya, jumlah biaya resource individual mungkin tidak sama persis dengan jumlah total yang ditampilkan. + +===Support=== +Jika ada hal yang Anda ingin tanyakan tentang hal layanan anada bisa kontak ke [[Support|https://support.google.com/cloud/contact/cloud_platform_billing?hl=en]]: + +[[|https://support.google.com/cloud/contact/cloud_platform_billing?hl=en]] + +Kasus yang Anda tanyakan akan diberi konfirmasi tentang rekam kasus dan berapa lama waktu yang diperlukan: + +[[|https://support.google.com/cloud/contact/cloud_platform_billing?hl=en]] + +==Planning== +===Free Trial=== +Berikutnya akan kita ulas cara memasang ''[[Aplikasi Saleor|https://github.com/MarketLeader/Tutorial-Buka-Toko/wiki/Apa-Itu-Saleor]]'' dengan opsi seperti berikut: + +* Opsi 1: Pasang Aplikasi di GAE Flexible dengan Opsi Database diterapkan di GCE. +* Opsi 2: Pasang Aplikasi di GAE Standard dengan Opsi Database diterapkan di GCE. +* Opsi 3: Pasang Aplikasi di GAE Flexible dengan Opsi Database diterapkan di Cloud SQL. +* Opsi 4: Pasang Aplikasi di GAE Standard dengan Opsi Database diterapkan di Cloud SQL. + +Untuk mengenal sistem secara keseluruhan maka dalam masa ''[[Free Trial|https://cloud.google.com/free/docs/gcp-free-tier#free-trial]]'' Anda bisa lakukan tes running GAE baik type standard maupun flexible berikut semua opsi database. Sebelum kredit atau masanya habis sebaiknya semua mesin disesuaikan dengan budget Anda. + +===Extend=== +
Dilain pihak jika bisnis Anda berkembang besar maka opsi di atas juga akan mengalami kerentanan sehingga perlu ditingkatkan guna melayani beban layanan tinggi dengan cara: + +* Pasang aplikasi kedalam Cluster di GKE +* Topang oleh Skala via Memory Redis +* Atur beban dengan Load Balancing + +Ada banyak cara lain untuk optimalkan biaya bisa dipertimbangkan, bahkan Anda juga ''[[bisa berkontribusi|https://cloud.google.com/community/tutorials/write]]''. Kita akan ulas secara mendetil di ''[[Optimasi Biaya|https://github.com/MarketLeader/Toko-Chetabahana/wiki/Optimasi-Biaya]]'' pada sesi terakhir. + diff --git a/Build-Log.mediawiki b/Build-Log.mediawiki new file mode 100644 index 000000000000..5a2d2de733d3 --- /dev/null +++ b/Build-Log.mediawiki @@ -0,0 +1,836 @@ +__TOC__ +===BuildingDockerImage=== +``` +Fetching required images: codefresh/cf-docker-builder:v14 +Pulling image codefresh/cf-docker-builder:v14 +Layer 'ff3a5c916c92' already exists +Pulled layer '1a649ea86bca' +Pulled layer 'ce35f4d5f86a' +Pulled layer 'b1d15a86a6f2' +Pulled layer '51bc8225373b' +Pulled layer '3ccbd5e4d0b5' +Pulled layer '759c5d07e1bf' +Pulled layer '1ff27b3973c6' +Pulled layer '32ee00599b7e' +Pulled layer '355d13311728' +Pulled layer '40592683d355' +Pulled layer '816144bab41e' +Digest: sha256:68fae327c7b40f7818f4ad93d7e10bc42b9fbfcfd53f954b866210f1f5b1f13c +Status: Downloaded newer image for codefresh/cf-docker-builder:v14 +Preparing build +Pulling previous built image: r.cfcr.io/chetabahana/saleor@sha256:b1a42e68c135b441195e310b845b68b6a4a29d6eb3a64fc8a916fcf4a3573bec to be used as cache for the build +Pulling image chetabahana/saleor:sha256:b1a42e68c135b441195e310b845b68b6a4a29d6eb3a64fc8a916fcf4a3573bec +Pulled layer 'f7e2b70d04ae' +Pulled layer '43e4f8f1b597' +Pulled layer 'a258d156c9da' +Pulled layer 'd1ad5fffd2fe' +Pulled layer 'c566b011e81d' +Pulled layer 'd34f4b4957c2' +Pulled layer '37fa78443666' +Pulled layer '0498ec96822c' +Pulled layer 'f6ae8660e8a8' +Pulled layer 'e46b81b6c5e4' +Pulled layer '5f8f3b27564d' +Pulled layer '51f1bb120d62' +Pulled layer 'd06570632e7f' +Pulled layer '3cfb2f655244' +Pulled layer '66e86ba3f573' +Digest: sha256:b1a42e68c135b441195e310b845b68b6a4a29d6eb3a64fc8a916fcf4a3573bec +Status: Downloaded newer image for r.cfcr.io/chetabahana/saleor@sha256:b1a42e68c135b441195e310b845b68b6a4a29d6eb3a64fc8a916fcf4a3573bec +Image: r.cfcr.io/chetabahana/saleor@sha256:b1a42e68c135b441195e310b845b68b6a4a29d6eb3a64fc8a916fcf4a3573bec pulled +Building image: saleor:master using unique hash: fc9279bf74c93a861c51c653e0c02c4a8e6c227c +Sending build context to Docker daemon 557.1kB Sending build context to Docker daemon 15.6MB Sending build context to Docker daemon 18.94MB Sending build context to Docker daemon 32.87MB +Step 1/40 : FROM python:3.6 as build-python +3.6: Pulling from library/python + +e79bb959ec00: Pulling fs layer +d4b7902036fe: Pulling fs layer +1b2a72d4e030: Pulling fs layer +d54db43011fd: Pulling fs layer +69d473365bb3: Pulling fs layer +35b4aebab92b: Pulling fs layer +60ddbccc0359: Pulling fs layer +0b3c337d0c3e: Pulling fs layer +2b75f9fe405b: Pulling fs layer 69d473365bb3: Waiting 35b4aebab92b: Waiting 60ddbccc0359: Waiting 0b3c337d0c3e: Waiting 2b75f9fe405b: Waiting d54db43011fd: Waiting 1b2a72d4e030: Downloading 50.69kB/4.34MB d4b7902036fe: Downloading 120.3kB/10.78MB e79bb959ec00: Downloading 468.4kB/45.34MB 1b2a72d4e030: Downloading 2.296MB/4.34MB d4b7902036fe: Downloading 5.078MB/10.78MB e79bb959ec00: Downloading 5.082MB/45.34MB 1b2a72d4e030: Verifying Checksum 1b2a72d4e030: Download complete d4b7902036fe: Downloading 9.319MB/10.78MB d4b7902036fe: Verifying Checksum d4b7902036fe: Download complete e79bb959ec00: Downloading 10.61MB/45.34MB d54db43011fd: Downloading 503.3kB/50.07MB d54db43011fd: Downloading 10.63MB/50.07MB e79bb959ec00: Downloading 19.79MB/45.34MB 69d473365bb3: Downloading 533.8kB/215MB d54db43011fd: Downloading 20.81MB/50.07MB e79bb959ec00: Downloading 25.75MB/45.34MB 69d473365bb3: Downloading 5.91MB/215MB d54db43011fd: Downloading 26.89MB/50.07MB e79bb959ec00: Downloading 29.42MB/45.34MB 69d473365bb3: Downloading 12.39MB/215MB d54db43011fd: Downloading 35.54MB/50.07MB e79bb959ec00: Downloading 40.43MB/45.34MB 69d473365bb3: Downloading 19.94MB/215MB d54db43011fd: Downloading 39.09MB/50.07MB e79bb959ec00: Downloading 43.64MB/45.34MB 69d473365bb3: Downloading 22.64MB/215MB e79bb959ec00: Verifying Checksum e79bb959ec00: Download complete d54db43011fd: Downloading 46.21MB/50.07MB d54db43011fd: Verifying Checksum d54db43011fd: Download complete 69d473365bb3: Downloading 32.35MB/215MB e79bb959ec00: Extracting 458.8kB/45.34MB 35b4aebab92b: Downloading 68.1kB/5.747MB 69d473365bb3: Downloading 39.91MB/215MB 35b4aebab92b: Downloading 3.689MB/5.747MB 60ddbccc0359: Downloading 224.8kB/20.98MB e79bb959ec00: Extracting 2.294MB/45.34MB 69d473365bb3: Downloading 42.61MB/215MB 35b4aebab92b: Downloading 4.733MB/5.747MB 60ddbccc0359: Downloading 1.095MB/20.98MB 69d473365bb3: Downloading 43.15MB/215MB 35b4aebab92b: Downloading 5.708MB/5.747MB 35b4aebab92b: Verifying Checksum 35b4aebab92b: Download complete 60ddbccc0359: Downloading 1.966MB/20.98MB e79bb959ec00: Extracting 2.753MB/45.34MB 69d473365bb3: Downloading 49.62MB/215MB 60ddbccc0359: Downloading 7.398MB/20.98MB 0b3c337d0c3e: Downloading 240B/240B 0b3c337d0c3e: Verifying Checksum 0b3c337d0c3e: Download complete e79bb959ec00: Extracting 4.588MB/45.34MB 69d473365bb3: Downloading 52.32MB/215MB 2b75f9fe405b: Downloading 33.28kB/1.813MB e79bb959ec00: Extracting 6.423MB/45.34MB 60ddbccc0359: Downloading 10.44MB/20.98MB 2b75f9fe405b: Verifying Checksum 2b75f9fe405b: Download complete 69d473365bb3: Downloading 59.34MB/215MB 60ddbccc0359: Downloading 19.81MB/20.98MB 60ddbccc0359: Verifying Checksum 60ddbccc0359: Download complete e79bb959ec00: Extracting 7.799MB/45.34MB 69d473365bb3: Downloading 65.81MB/215MB e79bb959ec00: Extracting 10.09MB/45.34MB 69d473365bb3: Downloading 74.98MB/215MB e79bb959ec00: Extracting 12.85MB/45.34MB 69d473365bb3: Downloading 83.08MB/215MB e79bb959ec00: Extracting 14.68MB/45.34MB 69d473365bb3: Downloading 90.63MB/215MB 69d473365bb3: Downloading 97.65MB/215MB e79bb959ec00: Extracting 16.52MB/45.34MB 69d473365bb3: Downloading 100.9MB/215MB e79bb959ec00: Extracting 18.35MB/45.34MB 69d473365bb3: Downloading 108.4MB/215MB e79bb959ec00: Extracting 20.19MB/45.34MB 69d473365bb3: Downloading 113.8MB/215MB e79bb959ec00: Extracting 21.1MB/45.34MB 69d473365bb3: Downloading 121.4MB/215MB 69d473365bb3: Downloading 128.4MB/215MB e79bb959ec00: Extracting 21.56MB/45.34MB 69d473365bb3: Downloading 133.8MB/215MB e79bb959ec00: Extracting 22.48MB/45.34MB 69d473365bb3: Downloading 138.1MB/215MB e79bb959ec00: Extracting 27.53MB/45.34MB 69d473365bb3: Downloading 146.8MB/215MB 69d473365bb3: Downloading 151.1MB/215MB e79bb959ec00: Extracting 29.82MB/45.34MB 69d473365bb3: Downloading 158.6MB/215MB e79bb959ec00: Extracting 31.65MB/45.34MB 69d473365bb3: Downloading 160.8MB/215MB e79bb959ec00: Extracting 33.03MB/45.34MB 69d473365bb3: Downloading 162.9MB/215MB e79bb959ec00: Extracting 33.95MB/45.34MB 69d473365bb3: Downloading 165.6MB/215MB e79bb959ec00: Extracting 34.87MB/45.34MB 69d473365bb3: Downloading 170.5MB/215MB e79bb959ec00: Extracting 36.7MB/45.34MB 69d473365bb3: Downloading 177.5MB/215MB 69d473365bb3: Downloading 185.6MB/215MB e79bb959ec00: Extracting 37.62MB/45.34MB 69d473365bb3: Downloading 188.9MB/215MB e79bb959ec00: Extracting 38.99MB/45.34MB 69d473365bb3: Downloading 197.5MB/215MB e79bb959ec00: Extracting 40.83MB/45.34MB 69d473365bb3: Downloading 200.2MB/215MB e79bb959ec00: Extracting 42.21MB/45.34MB 69d473365bb3: Downloading 209.4MB/215MB 69d473365bb3: Verifying Checksum 69d473365bb3: Download complete e79bb959ec00: Extracting 43.58MB/45.34MB e79bb959ec00: Extracting 44.5MB/45.34MB e79bb959ec00: Extracting 45.34MB/45.34MB e79bb959ec00: Pull complete d4b7902036fe: Extracting 131.1kB/10.78MB d4b7902036fe: Extracting 3.015MB/10.78MB d4b7902036fe: Extracting 7.078MB/10.78MB d4b7902036fe: Extracting 10.78MB/10.78MB d4b7902036fe: Pull complete 1b2a72d4e030: Extracting 65.54kB/4.34MB 1b2a72d4e030: Extracting 2.818MB/4.34MB 1b2a72d4e030: Extracting 4.34MB/4.34MB 1b2a72d4e030: Pull complete d54db43011fd: Extracting 524.3kB/50.07MB d54db43011fd: Extracting 6.291MB/50.07MB d54db43011fd: Extracting 12.06MB/50.07MB d54db43011fd: Extracting 16.78MB/50.07MB d54db43011fd: Extracting 18.87MB/50.07MB d54db43011fd: Extracting 19.92MB/50.07MB d54db43011fd: Extracting 21.5MB/50.07MB d54db43011fd: Extracting 23.07MB/50.07MB d54db43011fd: Extracting 24.12MB/50.07MB d54db43011fd: Extracting 25.69MB/50.07MB d54db43011fd: Extracting 26.74MB/50.07MB d54db43011fd: Extracting 28.31MB/50.07MB d54db43011fd: Extracting 31.98MB/50.07MB d54db43011fd: Extracting 35.13MB/50.07MB d54db43011fd: Extracting 38.27MB/50.07MB d54db43011fd: Extracting 42.47MB/50.07MB d54db43011fd: Extracting 45.61MB/50.07MB d54db43011fd: Extracting 47.71MB/50.07MB d54db43011fd: Extracting 49.81MB/50.07MB d54db43011fd: Extracting 50.07MB/50.07MB d54db43011fd: Pull complete 69d473365bb3: Extracting 557.1kB/215MB 69d473365bb3: Extracting 5.014MB/215MB 69d473365bb3: Extracting 9.47MB/215MB 69d473365bb3: Extracting 11.14MB/215MB 69d473365bb3: Extracting 12.26MB/215MB 69d473365bb3: Extracting 13.93MB/215MB 69d473365bb3: Extracting 15.6MB/215MB 69d473365bb3: Extracting 17.27MB/215MB 69d473365bb3: Extracting 22.84MB/215MB 69d473365bb3: Extracting 26.74MB/215MB 69d473365bb3: Extracting 32.31MB/215MB 69d473365bb3: Extracting 35.09MB/215MB 69d473365bb3: Extracting 39.55MB/215MB 69d473365bb3: Extracting 44.56MB/215MB 69d473365bb3: Extracting 49.02MB/215MB 69d473365bb3: Extracting 50.69MB/215MB 69d473365bb3: Extracting 52.92MB/215MB 69d473365bb3: Extracting 55.71MB/215MB 69d473365bb3: Extracting 57.93MB/215MB 69d473365bb3: Extracting 61.28MB/215MB 69d473365bb3: Extracting 65.73MB/215MB 69d473365bb3: Extracting 69.63MB/215MB 69d473365bb3: Extracting 73.53MB/215MB 69d473365bb3: Extracting 76.87MB/215MB 69d473365bb3: Extracting 77.99MB/215MB 69d473365bb3: Extracting 82.44MB/215MB 69d473365bb3: Extracting 88.01MB/215MB 69d473365bb3: Extracting 90.24MB/215MB 69d473365bb3: Extracting 93.03MB/215MB 69d473365bb3: Extracting 94.14MB/215MB 69d473365bb3: Extracting 96.93MB/215MB 69d473365bb3: Extracting 99.71MB/215MB 69d473365bb3: Extracting 101.9MB/215MB 69d473365bb3: Extracting 104.2MB/215MB 69d473365bb3: Extracting 105.8MB/215MB 69d473365bb3: Extracting 107MB/215MB 69d473365bb3: Extracting 108.1MB/215MB 69d473365bb3: Extracting 109.2MB/215MB 69d473365bb3: Extracting 110.3MB/215MB 69d473365bb3: Extracting 112MB/215MB 69d473365bb3: Extracting 113.6MB/215MB 69d473365bb3: Extracting 115.9MB/215MB 69d473365bb3: Extracting 117.5MB/215MB 69d473365bb3: Extracting 119.2MB/215MB 69d473365bb3: Extracting 120.9MB/215MB 69d473365bb3: Extracting 122MB/215MB 69d473365bb3: Extracting 123.7MB/215MB 69d473365bb3: Extracting 127.6MB/215MB 69d473365bb3: Extracting 130.9MB/215MB 69d473365bb3: Extracting 135.4MB/215MB 69d473365bb3: Extracting 139.3MB/215MB 69d473365bb3: Extracting 141.5MB/215MB 69d473365bb3: Extracting 148.2MB/215MB 69d473365bb3: Extracting 154.3MB/215MB 69d473365bb3: Extracting 164.3MB/215MB 69d473365bb3: Extracting 172.7MB/215MB 69d473365bb3: Extracting 179.4MB/215MB 69d473365bb3: Extracting 184.4MB/215MB 69d473365bb3: Extracting 185.5MB/215MB 69d473365bb3: Extracting 191.1MB/215MB 69d473365bb3: Extracting 194.4MB/215MB 69d473365bb3: Extracting 197.2MB/215MB 69d473365bb3: Extracting 201.1MB/215MB 69d473365bb3: Extracting 204.4MB/215MB 69d473365bb3: Extracting 207.8MB/215MB 69d473365bb3: Extracting 210.6MB/215MB 69d473365bb3: Extracting 212.8MB/215MB 69d473365bb3: Extracting 213.9MB/215MB 69d473365bb3: Extracting 215MB/215MB 69d473365bb3: Extracting 215MB/215MB 69d473365bb3: Pull complete 35b4aebab92b: Extracting 65.54kB/5.747MB 35b4aebab92b: Extracting 2.032MB/5.747MB 35b4aebab92b: Extracting 5.177MB/5.747MB 35b4aebab92b: Extracting 5.747MB/5.747MB 35b4aebab92b: Pull complete 60ddbccc0359: Extracting 229.4kB/20.98MB 60ddbccc0359: Extracting 4.588MB/20.98MB 60ddbccc0359: Extracting 7.799MB/20.98MB 60ddbccc0359: Extracting 11.47MB/20.98MB 60ddbccc0359: Extracting 15.37MB/20.98MB 60ddbccc0359: Extracting 19.73MB/20.98MB 60ddbccc0359: Extracting 20.98MB/20.98MB 60ddbccc0359: Pull complete 0b3c337d0c3e: Extracting 240B/240B 0b3c337d0c3e: Extracting 240B/240B 0b3c337d0c3e: Pull complete 2b75f9fe405b: Extracting 32.77kB/1.813MB 2b75f9fe405b: Extracting 1.376MB/1.813MB 2b75f9fe405b: Extracting 1.813MB/1.813MB 2b75f9fe405b: Pull complete Digest: sha256:fcbf363c285f331894b33f2577e0426182b989c750133a989abaaa4edea324e9 +Status: Downloaded newer image for python:3.6 + ---> 2bb3204ab1d1 +Step 2/40 : RUN apt-get -y update && apt-get install -y gettext && apt-get clean && rm -rf /var/lib/apt/lists/* + ---> Running in 0db141ecc0ff +Ign:1 http://deb.debian.org/debian stretch InRelease +Get:2 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB] +Get:3 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB] +Get:4 http://deb.debian.org/debian stretch Release [118 kB] +Get:5 http://deb.debian.org/debian stretch Release.gpg [2434 B] +Get:6 http://deb.debian.org/debian stretch-updates/main amd64 Packages [11.1 kB] +Get:7 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [481 kB] +Get:8 http://deb.debian.org/debian stretch/main amd64 Packages [7084 kB] +Fetched 7881 kB in 1s (5706 kB/s) +Reading package lists... +Reading package lists... +Building dependency tree... +Reading state information... +The following additional packages will be installed: + gettext-base +Suggested packages: + gettext-doc autopoint libasprintf-dev libgettextpo-dev +The following NEW packages will be installed: + gettext gettext-base +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Need to get 1616 kB of archives. +After this operation, 7981 kB of additional disk space will be used. +Get:1 http://deb.debian.org/debian stretch/main amd64 gettext-base amd64 0.19.8.1-2 [121 kB] +Get:2 http://deb.debian.org/debian stretch/main amd64 gettext amd64 0.19.8.1-2 [1495 kB] +debconf: delaying package configuration, since apt-utils is not installed +Fetched 1616 kB in 0s (31.1 MB/s) +Selecting previously unselected package gettext-base. +(Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 30553 files and directories currently installed.) +Preparing to unpack .../gettext-base_0.19.8.1-2_amd64.deb ... +Unpacking gettext-base (0.19.8.1-2) ... +Selecting previously unselected package gettext. +Preparing to unpack .../gettext_0.19.8.1-2_amd64.deb ... +Unpacking gettext (0.19.8.1-2) ... +Setting up gettext-base (0.19.8.1-2) ... +Setting up gettext (0.19.8.1-2) ... +Removing intermediate container 0db141ecc0ff + ---> a2db48386479 +Step 3/40 : RUN pip install pipenv + ---> Running in b2e32d0a87e1 +Collecting pipenv + Downloading https://files.pythonhosted.org/packages/13/b4/3ffa55f77161cff9a5220f162670f7c5eb00df52e00939e203f601b0f579/pipenv-2018.11.26-py3-none-any.whl (5.2MB) +Collecting virtualenv (from pipenv) + Downloading https://files.pythonhosted.org/packages/33/5d/314c760d4204f64e4a968275182b7751bd5c3249094757b39ba987dcfb5a/virtualenv-16.4.3-py2.py3-none-any.whl (2.0MB) +Requirement already satisfied: pip>=9.0.1 in /usr/local/lib/python3.6/site-packages (from pipenv) (19.0.3) +Collecting certifi (from pipenv) + Downloading https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl (158kB) +Collecting virtualenv-clone>=0.2.5 (from pipenv) + Downloading https://files.pythonhosted.org/packages/e3/d9/d9c56deb483c4d3289a00b12046e41428be64e8236fa210111a1f57cc42d/virtualenv_clone-0.5.1-py2.py3-none-any.whl +Requirement already satisfied: setuptools>=36.2.1 in /usr/local/lib/python3.6/site-packages (from pipenv) (40.8.0) +Installing collected packages: virtualenv, certifi, virtualenv-clone, pipenv +Successfully installed certifi-2019.3.9 pipenv-2018.11.26 virtualenv-16.4.3 virtualenv-clone-0.5.1 +Removing intermediate container b2e32d0a87e1 + ---> 58d2005ed74f +Step 4/40 : COPY Pipfile Pipfile.lock /app/ + ---> 7433cabcb9bc +Step 5/40 : WORKDIR /app + ---> Running in 3b97b775fadf +Removing intermediate container 3b97b775fadf + ---> e4696fd6b67d +Step 6/40 : RUN pipenv install --system --deploy --dev + ---> Running in 5e81128350c0 +Installing dependencies from Pipfile.lock (8c2e1b)… +Removing intermediate container 5e81128350c0 + ---> 4eb9a2e077c6 +Step 7/40 : FROM node:10 as build-nodejs +10: Pulling from library/node + +e79bb959ec00: Already exists +d4b7902036fe: Already exists +1b2a72d4e030: Already exists +d54db43011fd: Already exists +69d473365bb3: Already exists +6e2490ee2dc8: Pulling fs layer +6381e1b5feaa: Pulling fs layer +b1efb42c63e2: Pulling fs layer 6e2490ee2dc8: Download complete 6e2490ee2dc8: Extracting 4.156kB/4.156kB 6e2490ee2dc8: Extracting 4.156kB/4.156kB b1efb42c63e2: Downloading 16.36kB/1.323MB b1efb42c63e2: Verifying Checksum b1efb42c63e2: Download complete 6e2490ee2dc8: Pull complete 6381e1b5feaa: Downloading 207.4kB/19.27MB 6381e1b5feaa: Downloading 10.44MB/19.27MB 6381e1b5feaa: Download complete 6381e1b5feaa: Extracting 196.6kB/19.27MB 6381e1b5feaa: Extracting 3.736MB/19.27MB 6381e1b5feaa: Extracting 9.437MB/19.27MB 6381e1b5feaa: Extracting 13.76MB/19.27MB 6381e1b5feaa: Extracting 15.53MB/19.27MB 6381e1b5feaa: Extracting 16.71MB/19.27MB 6381e1b5feaa: Extracting 17.69MB/19.27MB 6381e1b5feaa: Extracting 18.87MB/19.27MB 6381e1b5feaa: Extracting 19.27MB/19.27MB 6381e1b5feaa: Pull complete b1efb42c63e2: Extracting 32.77kB/1.323MB b1efb42c63e2: Extracting 1.323MB/1.323MB b1efb42c63e2: Pull complete Digest: sha256:dbe1830d4a8b5ec8226b1cb4a760f9e53696130f76bd4c2e5785e13eba19993b +Status: Downloaded newer image for node:10 + ---> 64c810caf95a +Step 8/40 : ARG STATIC_URL + ---> Running in 4005efff11a1 +Removing intermediate container 4005efff11a1 + ---> 4be4d902f980 +Step 9/40 : ENV STATIC_URL ${STATIC_URL:-/static/} + ---> Running in 73df3af15af3 +Removing intermediate container 73df3af15af3 + ---> 67caceebb5f7 +Step 10/40 : COPY webpack.config.js app.json package.json package-lock.json tsconfig.json tslint.json webpack.d.ts /app/ + ---> e16e9f0910b9 +Step 11/40 : WORKDIR /app + ---> Running in 3e43fe9ed882 +Removing intermediate container 3e43fe9ed882 + ---> f55d11dc65e7 +Step 12/40 : RUN npm install + ---> Running in 6b27115d2275 + +> node-sass@4.10.0 install /app/node_modules/node-sass +> node scripts/install.js + +Downloading binary from https://github.com/sass/node-sass/releases/download/v4.10.0/linux-x64-64_binding.node +Download complete +Binary saved to /app/node_modules/node-sass/vendor/linux-x64-64/binding.node +Caching binary to /root/.npm/node-sass/4.10.0/linux-x64-64_binding.node + +> protobufjs@6.8.8 postinstall /app/node_modules/protobufjs +> node scripts/postinstall + + +> jss@9.8.7 postinstall /app/node_modules/jss +> node -e "console.log('\u001b[35m\u001b[1mLove JSS? You can now support us on open collective:\u001b[22m\u001b[39m\n > \u001b[34mhttps://opencollective.com/jss/donate\u001b[0m')" + +Love JSS? You can now support us on open collective: + > https://opencollective.com/jss/donate + +> node-sass@4.10.0 postinstall /app/node_modules/node-sass +> node scripts/build.js + +Binary found at /app/node_modules/node-sass/vendor/linux-x64-64/binding.node +Testing binary +Binary is fine +npm WARN saleor@0.0.0 No description +npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents): +npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) + +added 3067 packages from 1333 contributors and audited 65306 packages in 45.943s +found 81 vulnerabilities (59 low, 20 moderate, 2 high) + run `npm audit fix` to fix them, or `npm audit` for details +Removing intermediate container 6b27115d2275 + ---> c097457c4e7f +Step 13/40 : COPY ./saleor/static /app/saleor/static/ + ---> 464ad735e397 +Step 14/40 : COPY ./templates /app/templates/ + ---> 1b834c99962c +Step 15/40 : RUN STATIC_URL=${STATIC_URL} npm run build-assets --production && npm run build-emails --production + ---> Running in 58df0e8d569a + +> saleor@0.0.0 build-assets /app +> webpack -p + +Starting type checking and linting service... +Using 1 worker with 2048MB memory limit +(node:20) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead +DEPRECATION WARNING on line 4, column 8 of stdin: +Including .css files with @import is non-standard behaviour which will be removed in future versions of LibSass. +Use a custom importer to maintain this behaviour. Check your implementations documentation on how to create a custom importer. + +Hash: ad59fc0e1e2e61b941fe +Version: webpack 4.27.0 +Time: 71772ms +Built at: 03/29/2019 12:06:37 AM + Asset Size Chunks Chunk Names + Lato-Bold.061b572d02df38e00fc9978034ac09b8.woff2 28.1 KiB [emitted] + Lato-Bold.44dfe8cc676882243911a3197a50169e.ttf 119 KiB [emitted] + Lato-Bold.d0549ba90a0800d86d585f1e63df52b3.woff 36.1 KiB [emitted] + Lato-Light.067d56d83ba6202f296c6acd0fd107b1.woff 34.9 KiB [emitted] + Lato-Light.5b761f2d1e4259ea6ac7ab3ebf7f3c49.ttf 120 KiB [emitted] + Lato-Light.96b78ec9be61a9b1e91d455627636d53.woff2 31.6 KiB [emitted] + Lato-Regular.01f09144fb08c2185c04b46601a6894d.woff 36.9 KiB [emitted] + Lato-Regular.183bf2570509b4588f48227a1799c1bc.woff2 28.6 KiB [emitted] + Lato-Regular.7f690e503a254e0b8349aec0177e07aa.ttf 117 KiB [emitted] + Roboto-Bold.c0f1e4a4fdfb8048c72e86aadb2a247d.woff2 63.3 KiB [emitted] + Roboto-Bold.eed9aab5449cc9c8430d7d258108f602.woff 88.2 KiB [emitted] + Roboto-Light.3c37aa69cd77e6a53a067170fa8fe2e9.woff2 62.8 KiB [emitted] + Roboto-Light.ea36cd9a0e9eee97012a67b8a4570d7b.woff 87.6 KiB [emitted] + Roboto-Medium.1561b424aaef2f704bbd89155b3ce514.woff2 63.9 KiB [emitted] + Roboto-Medium.cf4d60bc0b1d4b2314085919a00e1724.woff 88.4 KiB [emitted] + Roboto-Regular.3cf6adf61054c328b1b0ddcd8f9ce24d.woff 87.7 KiB [emitted] + Roboto-Regular.5136cbe62a63604402f2fedb97f246f8.woff2 63.3 KiB [emitted] + Roboto-Thin.1f35e6a11d27d2e10d28946d42332dc5.woff2 61.6 KiB [emitted] + Roboto-Thin.44b78f142603eb69f593ed4002ed7a4a.woff 86.1 KiB [emitted] + align_center.261490e2a4abf6925c5e533cacef7361.svg 239 bytes [emitted] + align_justify.2eecf9cbf6e5c9260e4c366e1f2b49b1.svg 238 bytes [emitted] + align_left.ab9f0ff87e27ff7b6a58106c012daf22.svg 240 bytes [emitted] + align_right.b45aa1ea0df06c6a9506b0cd3e8527fe.svg 239 bytes [emitted] + arrow-select.cf30a11fd56d142d7630b56f16fb0f65.svg 571 bytes [emitted] + block1.b6fb939e413b8a23addbde6341ce6b56.jpg 260 KiB [emitted] [big] + block2.781788024131717ff285b55c9b65bc9b.jpg 193 KiB [emitted] + block3.32b6cc89f5782d49fcea30e7b50ef506.jpg 131 KiB [emitted] + chevron-right.b90a94d3bf483b8d97e4647049ecdaa2.svg 210 bytes [emitted] + close.ec0a5fedbc923f0763a1886366f4967c.svg 266 bytes [emitted] + dashboard-next.0d86ae6d344e4dc2a3bb.js 2.32 MiB 1 [emitted] [big] dashboard-next + dashboard.74961f339242e2087554.css 224 KiB 0 [emitted] dashboard + dashboard.74961f339242e2087554.js 531 KiB 0 [emitted] [big] dashboard + document.91cc661de358d85f42ad.css 2.52 KiB 2 [emitted] document + document.91cc661de358d85f42ad.js 1010 bytes 2 [emitted] document + done.6469e271be639f7e5f1e45ffbb16c876.svg 215 bytes [emitted] + format_clear.9ea4294f9494325a0a198b0201443e63.svg 296 bytes [emitted] + insert_link.9523768776537a425ceaf093d2dddb00.svg 375 bytes [emitted] + insert_photo.497fe7788e4adeb99de29152704b8d32.svg 284 bytes [emitted] + login-background.37d2649918db527e7f5c0dc49475a4ff.svg 16.3 KiB [emitted] + logo-dark.b1ba93dc28e3576f4769cab4b77dbbc7.svg 2.56 KiB [emitted] + logo-light.d493430f320751f6bffac210ced37643.svg 1.2 KiB [emitted] + not-found-404.a4d671be72e48d8ad9e8254297221171.svg 1.21 KiB [emitted] + pass-invisible.d5a74fda0ae925038d3d4a2b9cb030d3.svg 1.67 KiB [emitted] + pass-visible.d7d2a2f14d58c56691160e88464dfdb5.svg 1.24 KiB [emitted] +placeholder255x255.bb658a475f01d6538c482fd852ad782c.png 4.6 KiB [emitted] + quote.a519f24a889ca0c8830dccdd93a810b4.svg 204 bytes [emitted] + storefront.ff1bc1d3d26e5f350c84.css 176 KiB 3 [emitted] storefront + storefront.ff1bc1d3d26e5f350c84.js 466 KiB 3 [emitted] [big] storefront + what.b7ae116ae14cafe6adfb9cfa119599c5.svg 1.49 KiB [emitted] +Entrypoint dashboard [big] = dashboard.74961f339242e2087554.css dashboard.74961f339242e2087554.js +Entrypoint dashboard-next [big] = dashboard-next.0d86ae6d344e4dc2a3bb.js +Entrypoint document = document.91cc661de358d85f42ad.css document.91cc661de358d85f42ad.js +Entrypoint storefront [big] = storefront.ff1bc1d3d26e5f350c84.css storefront.ff1bc1d3d26e5f350c84.js + [2] ./saleor/static/dashboard-next/i18n.ts 478 bytes {1} [built] + [29] ./saleor/static/dashboard-next/types/globalTypes.ts 8.44 KiB {1} [built] + [98] ./node_modules/apollo-link/lib/index.js + 4 modules 8.12 KiB {1} [built] + | 5 modules + [145] ./saleor/static/dashboard-next/auth/index.tsx 716 bytes {1} [built] + [285] ./saleor/static/dashboard-next/configuration/index.tsx 3.94 KiB {1} [built] + [365] ./node_modules/react-apollo/react-apollo.esm.js + 3 modules 64 KiB {1} [built] + | 4 modules + [374] ./saleor/static/dashboard-next/index.tsx 8.8 KiB {1} [built] + [432] ./saleor/static/dashboard-next/NotFound.tsx 476 bytes {1} [built] + [434] ./saleor/static/dashboard-next/auth/misc.ts 227 bytes {1} [built] + [850] ./node_modules/apollo-client/index.js + 24 modules 121 KiB {1} [built] + | 25 modules + [884] ./saleor/static/dashboard/scss/dashboard.scss 39 bytes {0} [built] + [939] ./saleor/static/dashboard-next/auth/AuthProvider.tsx 4.07 KiB {1} [built] +[1789] ./saleor/static/dashboard/js/document.js 31 bytes {2} [built] +[1792] ./saleor/static/js/storefront.js 464 bytes {3} [built] +[1815] ./saleor/static/dashboard/js/dashboard.js + 1 modules 589 bytes {0} [built] + | ./saleor/static/dashboard/js/dashboard.js 125 bytes [built] + | + 1 hidden module + + 1825 hidden modules + +WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). +This can impact web performance. +Assets: + block1.b6fb939e413b8a23addbde6341ce6b56.jpg (260 KiB) + dashboard.74961f339242e2087554.js (531 KiB) + dashboard-next.0d86ae6d344e4dc2a3bb.js (2.32 MiB) + storefront.ff1bc1d3d26e5f350c84.js (466 KiB) + +WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance. +Entrypoints: + dashboard (755 KiB) + dashboard.74961f339242e2087554.css + dashboard.74961f339242e2087554.js + dashboard-next (2.32 MiB) + dashboard-next.0d86ae6d344e4dc2a3bb.js + storefront (642 KiB) + storefront.ff1bc1d3d26e5f350c84.css + storefront.ff1bc1d3d26e5f350c84.js + + +WARNING in webpack performance recommendations: +You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application. +For more info visit https://webpack.js.org/guides/code-splitting/ +Child mini-css-extract-plugin node_modules/css-loader/index.js??ref--5-1!node_modules/postcss-loader/lib/index.js??ref--5-2!node_modules/sass-loader/lib/loader.js??ref--5-3!saleor/static/dashboard/scss/dashboard.scss: + Asset Size Chunks Chunk Names + Roboto-Bold.c0f1e4a4fdfb8048c72e86aadb2a247d.woff2 63.3 KiB [emitted] + Roboto-Bold.eed9aab5449cc9c8430d7d258108f602.woff 88.2 KiB [emitted] + Roboto-Light.3c37aa69cd77e6a53a067170fa8fe2e9.woff2 62.8 KiB [emitted] + Roboto-Light.ea36cd9a0e9eee97012a67b8a4570d7b.woff 87.6 KiB [emitted] + Roboto-Medium.1561b424aaef2f704bbd89155b3ce514.woff2 63.9 KiB [emitted] + Roboto-Medium.cf4d60bc0b1d4b2314085919a00e1724.woff 88.4 KiB [emitted] + Roboto-Regular.3cf6adf61054c328b1b0ddcd8f9ce24d.woff 87.7 KiB [emitted] + Roboto-Regular.5136cbe62a63604402f2fedb97f246f8.woff2 63.3 KiB [emitted] + Roboto-Thin.1f35e6a11d27d2e10d28946d42332dc5.woff2 61.6 KiB [emitted] + Roboto-Thin.44b78f142603eb69f593ed4002ed7a4a.woff 86.1 KiB [emitted] + chevron-right.b90a94d3bf483b8d97e4647049ecdaa2.svg 210 bytes [emitted] + Entrypoint mini-css-extract-plugin = * + [0] ./node_modules/css-loader??ref--5-1!./node_modules/postcss-loader/lib??ref--5-2!./node_modules/sass-loader/lib/loader.js??ref--5-3!./saleor/static/dashboard/scss/dashboard.scss 645 KiB {0} [built] + [13] ./saleor/static/dashboard/images/chevron-right.svg 96 bytes {0} [built] + + 12 hidden modules +Child mini-css-extract-plugin node_modules/css-loader/index.js??ref--5-1!node_modules/postcss-loader/lib/index.js??ref--5-2!node_modules/sass-loader/lib/loader.js??ref--5-3!saleor/static/dashboard/scss/document.scss: + Entrypoint mini-css-extract-plugin = * + [0] ./node_modules/css-loader??ref--5-1!./node_modules/postcss-loader/lib??ref--5-2!./node_modules/sass-loader/lib/loader.js??ref--5-3!./saleor/static/dashboard/scss/document.scss 7.1 KiB {0} [built] + + 1 hidden module +Child mini-css-extract-plugin node_modules/css-loader/index.js??ref--5-1!node_modules/postcss-loader/lib/index.js??ref--5-2!node_modules/sass-loader/lib/loader.js??ref--5-3!saleor/static/scss/storefront.scss: + Asset Size Chunks Chunk Names + Lato-Bold.061b572d02df38e00fc9978034ac09b8.woff2 28.1 KiB [emitted] + Lato-Bold.44dfe8cc676882243911a3197a50169e.ttf 119 KiB [emitted] + Lato-Bold.d0549ba90a0800d86d585f1e63df52b3.woff 36.1 KiB [emitted] + Lato-Light.067d56d83ba6202f296c6acd0fd107b1.woff 34.9 KiB [emitted] + Lato-Light.5b761f2d1e4259ea6ac7ab3ebf7f3c49.ttf 120 KiB [emitted] + Lato-Light.96b78ec9be61a9b1e91d455627636d53.woff2 31.6 KiB [emitted] + Lato-Regular.01f09144fb08c2185c04b46601a6894d.woff 36.9 KiB [emitted] + Lato-Regular.183bf2570509b4588f48227a1799c1bc.woff2 28.6 KiB [emitted] + Lato-Regular.7f690e503a254e0b8349aec0177e07aa.ttf 117 KiB [emitted] + arrow-select.cf30a11fd56d142d7630b56f16fb0f65.svg 571 bytes [emitted] + block1.b6fb939e413b8a23addbde6341ce6b56.jpg 260 KiB [emitted] [big] + block2.781788024131717ff285b55c9b65bc9b.jpg 193 KiB [emitted] + block3.32b6cc89f5782d49fcea30e7b50ef506.jpg 131 KiB [emitted] + Entrypoint mini-css-extract-plugin = * + [0] ./node_modules/css-loader??ref--5-1!./node_modules/postcss-loader/lib??ref--5-2!./node_modules/sass-loader/lib/loader.js??ref--5-3!./saleor/static/scss/storefront.scss 508 KiB {0} [built] + [3] ./saleor/static/images/arrow-select.svg 95 bytes {0} [built] + [4] ./saleor/static/fonts/Lato-Light.woff2 95 bytes {0} [built] + [5] ./saleor/static/fonts/Lato-Light.woff 94 bytes {0} [built] + [6] ./saleor/static/fonts/Lato-Light.ttf 93 bytes {0} [built] + [7] ./saleor/static/fonts/Lato-Regular.woff2 97 bytes {0} [built] + [8] ./saleor/static/fonts/Lato-Regular.woff 96 bytes {0} [built] + [9] ./saleor/static/fonts/Lato-Regular.ttf 95 bytes {0} [built] + [10] ./saleor/static/fonts/Lato-Bold.woff2 94 bytes {0} [built] + [11] ./saleor/static/fonts/Lato-Bold.woff 93 bytes {0} [built] + [12] ./saleor/static/fonts/Lato-Bold.ttf 92 bytes {0} [built] + [13] ./saleor/static/images/block1.jpg 89 bytes {0} [built] + [14] ./saleor/static/images/block2.jpg 89 bytes {0} [built] + [15] ./saleor/static/images/block3.jpg 89 bytes {0} [built] + + 2 hidden modules + +> saleor@0.0.0 build-emails /app +> mjml --config.beautify false -l skip "templates/templated_email/source/*.mjml" -o templates/templated_email/compiled + +Removing intermediate container 58df0e8d569a + ---> 4eb6d3b430ba +Step 16/40 : FROM python:3.6-slim +3.6-slim: Pulling from library/python + +27833a3ba0a5: Pulling fs layer +ad5023f26108: Pulling fs layer +bee9b272bde4: Pulling fs layer +b7a013bcc41c: Pulling fs layer +52bac8a245e2: Pulling fs layer b7a013bcc41c: Waiting 52bac8a245e2: Waiting ad5023f26108: Downloading 33.28kB/2.528MB 27833a3ba0a5: Downloading 225.8kB/22.5MB bee9b272bde4: Downloading 224.8kB/22.39MB ad5023f26108: Verifying Checksum ad5023f26108: Download complete 27833a3ba0a5: Downloading 8.642MB/22.5MB bee9b272bde4: Downloading 9.503MB/22.39MB b7a013bcc41c: Downloading 240B/240B b7a013bcc41c: Verifying Checksum b7a013bcc41c: Download complete 27833a3ba0a5: Downloading 21.94MB/22.5MB 27833a3ba0a5: Verifying Checksum 27833a3ba0a5: Download complete bee9b272bde4: Downloading 19.4MB/22.39MB 27833a3ba0a5: Extracting 229.4kB/22.5MB bee9b272bde4: Verifying Checksum bee9b272bde4: Download complete 52bac8a245e2: Downloading 33.28kB/2.096MB 52bac8a245e2: Verifying Checksum 52bac8a245e2: Download complete 27833a3ba0a5: Extracting 2.523MB/22.5MB 27833a3ba0a5: Extracting 6.881MB/22.5MB 27833a3ba0a5: Extracting 11.01MB/22.5MB 27833a3ba0a5: Extracting 15.14MB/22.5MB 27833a3ba0a5: Extracting 19.5MB/22.5MB 27833a3ba0a5: Extracting 21.33MB/22.5MB 27833a3ba0a5: Extracting 21.79MB/22.5MB 27833a3ba0a5: Extracting 22.5MB/22.5MB 27833a3ba0a5: Pull complete ad5023f26108: Extracting 32.77kB/2.528MB ad5023f26108: Extracting 2.195MB/2.528MB ad5023f26108: Extracting 2.528MB/2.528MB ad5023f26108: Pull complete bee9b272bde4: Extracting 229.4kB/22.39MB bee9b272bde4: Extracting 2.294MB/22.39MB bee9b272bde4: Extracting 6.193MB/22.39MB bee9b272bde4: Extracting 9.634MB/22.39MB bee9b272bde4: Extracting 13.53MB/22.39MB bee9b272bde4: Extracting 17.2MB/22.39MB bee9b272bde4: Extracting 21.1MB/22.39MB bee9b272bde4: Extracting 22.39MB/22.39MB bee9b272bde4: Pull complete b7a013bcc41c: Extracting 240B/240B b7a013bcc41c: Extracting 240B/240B b7a013bcc41c: Pull complete 52bac8a245e2: Extracting 32.77kB/2.096MB 52bac8a245e2: Extracting 1.376MB/2.096MB 52bac8a245e2: Extracting 2.096MB/2.096MB 52bac8a245e2: Pull complete Digest: sha256:90167f0d52404dfdd9e4c4ea17f2623571f8e51be0ac230325f77b9f2b401adf +Status: Downloaded newer image for python:3.6-slim + ---> 5d4dd7f71a65 +Step 17/40 : ARG STATIC_URL + ---> Running in f70b80765812 +Removing intermediate container f70b80765812 + ---> f97a83dc1370 +Step 18/40 : ENV STATIC_URL ${STATIC_URL:-/static/} + ---> Running in cb5d4b8e1840 +Removing intermediate container cb5d4b8e1840 + ---> 5609893b43d4 +Step 19/40 : RUN groupadd -r saleor && useradd -r -g saleor saleor + ---> Running in 5a17e08bd50e +Removing intermediate container 5a17e08bd50e + ---> c9bd8f155d02 +Step 20/40 : RUN apt-get update && apt-get install -y libxml2 libssl1.1 libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 shared-mime-info mime-support && apt-get clean && rm -rf /var/lib/apt/lists/* + ---> Running in b613a22d8eb3 +Ign:1 http://deb.debian.org/debian stretch InRelease +Get:2 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB] +Get:3 http://deb.debian.org/debian stretch Release [118 kB] +Get:4 http://deb.debian.org/debian stretch Release.gpg [2434 B] +Get:5 http://deb.debian.org/debian stretch-updates/main amd64 Packages [11.1 kB] +Get:6 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB] +Get:7 http://deb.debian.org/debian stretch/main amd64 Packages [7084 kB] +Get:8 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [481 kB] +Fetched 7881 kB in 1s (5497 kB/s) +Reading package lists... +Reading package lists... +Building dependency tree... +Reading state information... +libssl1.1 is already the newest version (1.1.0j-1~deb9u1). +The following additional packages will be installed: + bzip2 file fontconfig fontconfig-config fonts-dejavu-core libbsd0 libdatrie1 + libfontconfig1 libfreetype6 libgdk-pixbuf2.0-common libglib2.0-0 + libglib2.0-data libgraphite2-3 libharfbuzz0b libicu57 libjbig0 + libjpeg62-turbo libmagic-mgc libmagic1 libpangoft2-1.0-0 libpixman-1-0 + libpng16-16 libthai-data libthai0 libtiff5 libx11-6 libx11-data libxau6 + libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxext6 libxrender1 sgml-base + ucf xdg-user-dirs xml-core xz-utils +Suggested packages: + bzip2-doc sgml-base-doc debhelper +The following NEW packages will be installed: + bzip2 file fontconfig fontconfig-config fonts-dejavu-core libbsd0 libcairo2 + libdatrie1 libfontconfig1 libfreetype6 libgdk-pixbuf2.0-0 + libgdk-pixbuf2.0-common libglib2.0-0 libglib2.0-data libgraphite2-3 + libharfbuzz0b libicu57 libjbig0 libjpeg62-turbo libmagic-mgc libmagic1 + libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 + libpng16-16 libthai-data libthai0 libtiff5 libx11-6 libx11-data libxau6 + libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxext6 libxml2 libxrender1 + mime-support sgml-base shared-mime-info ucf xdg-user-dirs xml-core xz-utils +0 upgraded, 46 newly installed, 0 to remove and 0 not upgraded. +Need to get 23.8 MB of archives. +After this operation, 79.6 MB of additional disk space will be used. +Get:1 http://deb.debian.org/debian stretch/main amd64 libpng16-16 amd64 1.6.28-1 [280 kB] +Get:2 http://deb.debian.org/debian stretch/main amd64 libfreetype6 amd64 2.6.3-3.2 [438 kB] +Get:3 http://deb.debian.org/debian stretch/main amd64 ucf all 3.0036 [70.2 kB] +Get:4 http://deb.debian.org/debian stretch/main amd64 fonts-dejavu-core all 2.37-1 [1068 kB] +Get:5 http://deb.debian.org/debian stretch/main amd64 fontconfig-config all 2.11.0-6.7 [271 kB] +Get:6 http://deb.debian.org/debian stretch/main amd64 libfontconfig1 amd64 2.11.0-6.7+b1 [331 kB] +Get:7 http://deb.debian.org/debian stretch/main amd64 fontconfig amd64 2.11.0-6.7+b1 [404 kB] +Get:8 http://deb.debian.org/debian stretch/main amd64 libxau6 amd64 1:1.0.8-1 [20.7 kB] +Get:9 http://deb.debian.org/debian stretch/main amd64 sgml-base all 1.29 [14.8 kB] +Get:10 http://deb.debian.org/debian stretch/main amd64 bzip2 amd64 1.0.6-8.1 [47.5 kB] +Get:11 http://deb.debian.org/debian stretch/main amd64 libmagic-mgc amd64 1:5.30-1+deb9u2 [222 kB] +Get:12 http://deb.debian.org/debian stretch/main amd64 libmagic1 amd64 1:5.30-1+deb9u2 [111 kB] +Get:13 http://deb.debian.org/debian stretch/main amd64 file amd64 1:5.30-1+deb9u2 [64.1 kB] +Get:14 http://deb.debian.org/debian stretch/main amd64 libicu57 amd64 57.1-6+deb9u2 [7700 kB] +Get:15 http://deb.debian.org/debian stretch/main amd64 libxml2 amd64 2.9.4+dfsg1-2.2+deb9u2 [920 kB] +Get:16 http://deb.debian.org/debian stretch/main amd64 mime-support all 3.60 [36.7 kB] +Get:17 http://deb.debian.org/debian stretch/main amd64 xz-utils amd64 5.2.2-1.2+b1 [266 kB] +Get:18 http://deb.debian.org/debian stretch/main amd64 libbsd0 amd64 0.8.3-1 [83.0 kB] +Get:19 http://deb.debian.org/debian stretch/main amd64 libpixman-1-0 amd64 0.34.0-1 [530 kB] +Get:20 http://deb.debian.org/debian stretch/main amd64 libxdmcp6 amd64 1:1.1.2-3 [26.3 kB] +Get:21 http://deb.debian.org/debian stretch/main amd64 libxcb1 amd64 1.12-1 [133 kB] +Get:22 http://deb.debian.org/debian stretch/main amd64 libx11-data all 2:1.6.4-3+deb9u1 [287 kB] +Get:23 http://deb.debian.org/debian stretch/main amd64 libx11-6 amd64 2:1.6.4-3+deb9u1 [748 kB] +Get:24 http://deb.debian.org/debian stretch/main amd64 libxcb-render0 amd64 1.12-1 [105 kB] +Get:25 http://deb.debian.org/debian stretch/main amd64 libxcb-shm0 amd64 1.12-1 [95.9 kB] +Get:26 http://deb.debian.org/debian stretch/main amd64 libxext6 amd64 2:1.3.3-1+b2 [52.5 kB] +Get:27 http://deb.debian.org/debian stretch/main amd64 libxrender1 amd64 1:0.9.10-1 [33.0 kB] +Get:28 http://deb.debian.org/debian stretch/main amd64 libcairo2 amd64 1.14.8-1 [771 kB] +Get:29 http://deb.debian.org/debian stretch/main amd64 libdatrie1 amd64 0.2.10-4+b1 [36.4 kB] +Get:30 http://deb.debian.org/debian stretch/main amd64 libglib2.0-0 amd64 2.50.3-2 [2691 kB] +Get:31 http://deb.debian.org/debian stretch/main amd64 libjpeg62-turbo amd64 1:1.5.1-2 [134 kB] +Get:32 http://deb.debian.org/debian stretch/main amd64 libjbig0 amd64 2.1-3.1+b2 [31.0 kB] +Get:33 http://deb.debian.org/debian stretch/main amd64 libtiff5 amd64 4.0.8-2+deb9u4 [238 kB] +Get:34 http://deb.debian.org/debian stretch/main amd64 shared-mime-info amd64 1.8-1+deb9u1 [731 kB] +Get:35 http://deb.debian.org/debian stretch/main amd64 libgdk-pixbuf2.0-common all 2.36.5-2+deb9u2 [311 kB] +Get:36 http://deb.debian.org/debian stretch/main amd64 libgdk-pixbuf2.0-0 amd64 2.36.5-2+deb9u2 [170 kB] +Get:37 http://deb.debian.org/debian stretch/main amd64 libglib2.0-data all 2.50.3-2 [2517 kB] +Get:38 http://deb.debian.org/debian stretch/main amd64 libgraphite2-3 amd64 1.3.10-1 [84.2 kB] +Get:39 http://deb.debian.org/debian stretch/main amd64 libharfbuzz0b amd64 1.4.2-1 [671 kB] +Get:40 http://deb.debian.org/debian stretch/main amd64 libthai-data all 0.1.26-1 [166 kB] +Get:41 http://deb.debian.org/debian stretch/main amd64 libthai0 amd64 0.1.26-1 [52.1 kB] +Get:42 http://deb.debian.org/debian stretch/main amd64 libpango-1.0-0 amd64 1.40.5-1 [320 kB] +Get:43 http://deb.debian.org/debian stretch/main amd64 libpangoft2-1.0-0 amd64 1.40.5-1 [205 kB] +Get:44 http://deb.debian.org/debian stretch/main amd64 libpangocairo-1.0-0 amd64 1.40.5-1 [193 kB] +Get:45 http://deb.debian.org/debian stretch/main amd64 xdg-user-dirs amd64 0.15-2+b1 [52.2 kB] +Get:46 http://deb.debian.org/debian stretch/main amd64 xml-core all 0.17 [23.2 kB] +debconf: delaying package configuration, since apt-utils is not installed +Fetched 23.8 MB in 0s (77.1 MB/s) +Selecting previously unselected package libpng16-16:amd64. +(Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 6709 files and directories currently installed.) +Preparing to unpack .../00-libpng16-16_1.6.28-1_amd64.deb ... +Unpacking libpng16-16:amd64 (1.6.28-1) ... +Selecting previously unselected package libfreetype6:amd64. +Preparing to unpack .../01-libfreetype6_2.6.3-3.2_amd64.deb ... +Unpacking libfreetype6:amd64 (2.6.3-3.2) ... +Selecting previously unselected package ucf. +Preparing to unpack .../02-ucf_3.0036_all.deb ... +Moving old data out of the way +Unpacking ucf (3.0036) ... +Selecting previously unselected package fonts-dejavu-core. +Preparing to unpack .../03-fonts-dejavu-core_2.37-1_all.deb ... +Unpacking fonts-dejavu-core (2.37-1) ... +Selecting previously unselected package fontconfig-config. +Preparing to unpack .../04-fontconfig-config_2.11.0-6.7_all.deb ... +Unpacking fontconfig-config (2.11.0-6.7) ... +Selecting previously unselected package libfontconfig1:amd64. +Preparing to unpack .../05-libfontconfig1_2.11.0-6.7+b1_amd64.deb ... +Unpacking libfontconfig1:amd64 (2.11.0-6.7+b1) ... +Selecting previously unselected package fontconfig. +Preparing to unpack .../06-fontconfig_2.11.0-6.7+b1_amd64.deb ... +Unpacking fontconfig (2.11.0-6.7+b1) ... +Selecting previously unselected package libxau6:amd64. +Preparing to unpack .../07-libxau6_1%3a1.0.8-1_amd64.deb ... +Unpacking libxau6:amd64 (1:1.0.8-1) ... +Selecting previously unselected package sgml-base. +Preparing to unpack .../08-sgml-base_1.29_all.deb ... +Unpacking sgml-base (1.29) ... +Selecting previously unselected package bzip2. +Preparing to unpack .../09-bzip2_1.0.6-8.1_amd64.deb ... +Unpacking bzip2 (1.0.6-8.1) ... +Selecting previously unselected package libmagic-mgc. +Preparing to unpack .../10-libmagic-mgc_1%3a5.30-1+deb9u2_amd64.deb ... +Unpacking libmagic-mgc (1:5.30-1+deb9u2) ... +Selecting previously unselected package libmagic1:amd64. +Preparing to unpack .../11-libmagic1_1%3a5.30-1+deb9u2_amd64.deb ... +Unpacking libmagic1:amd64 (1:5.30-1+deb9u2) ... +Selecting previously unselected package file. +Preparing to unpack .../12-file_1%3a5.30-1+deb9u2_amd64.deb ... +Unpacking file (1:5.30-1+deb9u2) ... +Selecting previously unselected package libicu57:amd64. +Preparing to unpack .../13-libicu57_57.1-6+deb9u2_amd64.deb ... +Unpacking libicu57:amd64 (57.1-6+deb9u2) ... +Selecting previously unselected package libxml2:amd64. +Preparing to unpack .../14-libxml2_2.9.4+dfsg1-2.2+deb9u2_amd64.deb ... +Unpacking libxml2:amd64 (2.9.4+dfsg1-2.2+deb9u2) ... +Selecting previously unselected package mime-support. +Preparing to unpack .../15-mime-support_3.60_all.deb ... +Unpacking mime-support (3.60) ... +Selecting previously unselected package xz-utils. +Preparing to unpack .../16-xz-utils_5.2.2-1.2+b1_amd64.deb ... +Unpacking xz-utils (5.2.2-1.2+b1) ... +Selecting previously unselected package libbsd0:amd64. +Preparing to unpack .../17-libbsd0_0.8.3-1_amd64.deb ... +Unpacking libbsd0:amd64 (0.8.3-1) ... +Selecting previously unselected package libpixman-1-0:amd64. +Preparing to unpack .../18-libpixman-1-0_0.34.0-1_amd64.deb ... +Unpacking libpixman-1-0:amd64 (0.34.0-1) ... +Selecting previously unselected package libxdmcp6:amd64. +Preparing to unpack .../19-libxdmcp6_1%3a1.1.2-3_amd64.deb ... +Unpacking libxdmcp6:amd64 (1:1.1.2-3) ... +Selecting previously unselected package libxcb1:amd64. +Preparing to unpack .../20-libxcb1_1.12-1_amd64.deb ... +Unpacking libxcb1:amd64 (1.12-1) ... +Selecting previously unselected package libx11-data. +Preparing to unpack .../21-libx11-data_2%3a1.6.4-3+deb9u1_all.deb ... +Unpacking libx11-data (2:1.6.4-3+deb9u1) ... +Selecting previously unselected package libx11-6:amd64. +Preparing to unpack .../22-libx11-6_2%3a1.6.4-3+deb9u1_amd64.deb ... +Unpacking libx11-6:amd64 (2:1.6.4-3+deb9u1) ... +Selecting previously unselected package libxcb-render0:amd64. +Preparing to unpack .../23-libxcb-render0_1.12-1_amd64.deb ... +Unpacking libxcb-render0:amd64 (1.12-1) ... +Selecting previously unselected package libxcb-shm0:amd64. +Preparing to unpack .../24-libxcb-shm0_1.12-1_amd64.deb ... +Unpacking libxcb-shm0:amd64 (1.12-1) ... +Selecting previously unselected package libxext6:amd64. +Preparing to unpack .../25-libxext6_2%3a1.3.3-1+b2_amd64.deb ... +Unpacking libxext6:amd64 (2:1.3.3-1+b2) ... +Selecting previously unselected package libxrender1:amd64. +Preparing to unpack .../26-libxrender1_1%3a0.9.10-1_amd64.deb ... +Unpacking libxrender1:amd64 (1:0.9.10-1) ... +Selecting previously unselected package libcairo2:amd64. +Preparing to unpack .../27-libcairo2_1.14.8-1_amd64.deb ... +Unpacking libcairo2:amd64 (1.14.8-1) ... +Selecting previously unselected package libdatrie1:amd64. +Preparing to unpack .../28-libdatrie1_0.2.10-4+b1_amd64.deb ... +Unpacking libdatrie1:amd64 (0.2.10-4+b1) ... +Selecting previously unselected package libglib2.0-0:amd64. +Preparing to unpack .../29-libglib2.0-0_2.50.3-2_amd64.deb ... +Unpacking libglib2.0-0:amd64 (2.50.3-2) ... +Selecting previously unselected package libjpeg62-turbo:amd64. +Preparing to unpack .../30-libjpeg62-turbo_1%3a1.5.1-2_amd64.deb ... +Unpacking libjpeg62-turbo:amd64 (1:1.5.1-2) ... +Selecting previously unselected package libjbig0:amd64. +Preparing to unpack .../31-libjbig0_2.1-3.1+b2_amd64.deb ... +Unpacking libjbig0:amd64 (2.1-3.1+b2) ... +Selecting previously unselected package libtiff5:amd64. +Preparing to unpack .../32-libtiff5_4.0.8-2+deb9u4_amd64.deb ... +Unpacking libtiff5:amd64 (4.0.8-2+deb9u4) ... +Selecting previously unselected package shared-mime-info. +Preparing to unpack .../33-shared-mime-info_1.8-1+deb9u1_amd64.deb ... +Unpacking shared-mime-info (1.8-1+deb9u1) ... +Selecting previously unselected package libgdk-pixbuf2.0-common. +Preparing to unpack .../34-libgdk-pixbuf2.0-common_2.36.5-2+deb9u2_all.deb ... +Unpacking libgdk-pixbuf2.0-common (2.36.5-2+deb9u2) ... +Selecting previously unselected package libgdk-pixbuf2.0-0:amd64. +Preparing to unpack .../35-libgdk-pixbuf2.0-0_2.36.5-2+deb9u2_amd64.deb ... +Unpacking libgdk-pixbuf2.0-0:amd64 (2.36.5-2+deb9u2) ... +Selecting previously unselected package libglib2.0-data. +Preparing to unpack .../36-libglib2.0-data_2.50.3-2_all.deb ... +Unpacking libglib2.0-data (2.50.3-2) ... +Selecting previously unselected package libgraphite2-3:amd64. +Preparing to unpack .../37-libgraphite2-3_1.3.10-1_amd64.deb ... +Unpacking libgraphite2-3:amd64 (1.3.10-1) ... +Selecting previously unselected package libharfbuzz0b:amd64. +Preparing to unpack .../38-libharfbuzz0b_1.4.2-1_amd64.deb ... +Unpacking libharfbuzz0b:amd64 (1.4.2-1) ... +Selecting previously unselected package libthai-data. +Preparing to unpack .../39-libthai-data_0.1.26-1_all.deb ... +Unpacking libthai-data (0.1.26-1) ... +Selecting previously unselected package libthai0:amd64. +Preparing to unpack .../40-libthai0_0.1.26-1_amd64.deb ... +Unpacking libthai0:amd64 (0.1.26-1) ... +Selecting previously unselected package libpango-1.0-0:amd64. +Preparing to unpack .../41-libpango-1.0-0_1.40.5-1_amd64.deb ... +Unpacking libpango-1.0-0:amd64 (1.40.5-1) ... +Selecting previously unselected package libpangoft2-1.0-0:amd64. +Preparing to unpack .../42-libpangoft2-1.0-0_1.40.5-1_amd64.deb ... +Unpacking libpangoft2-1.0-0:amd64 (1.40.5-1) ... +Selecting previously unselected package libpangocairo-1.0-0:amd64. +Preparing to unpack .../43-libpangocairo-1.0-0_1.40.5-1_amd64.deb ... +Unpacking libpangocairo-1.0-0:amd64 (1.40.5-1) ... +Selecting previously unselected package xdg-user-dirs. +Preparing to unpack .../44-xdg-user-dirs_0.15-2+b1_amd64.deb ... +Unpacking xdg-user-dirs (0.15-2+b1) ... +Selecting previously unselected package xml-core. +Preparing to unpack .../45-xml-core_0.17_all.deb ... +Unpacking xml-core (0.17) ... +Setting up libjpeg62-turbo:amd64 (1:1.5.1-2) ... +Setting up mime-support (3.60) ... +Setting up libpng16-16:amd64 (1.6.28-1) ... +Setting up libjbig0:amd64 (2.1-3.1+b2) ... +Setting up fonts-dejavu-core (2.37-1) ... +Setting up libglib2.0-0:amd64 (2.50.3-2) ... +No schema files found: doing nothing. +Setting up libgdk-pixbuf2.0-common (2.36.5-2+deb9u2) ... +Setting up libdatrie1:amd64 (0.2.10-4+b1) ... +Setting up libtiff5:amd64 (4.0.8-2+deb9u4) ... +Setting up sgml-base (1.29) ... +Setting up libicu57:amd64 (57.1-6+deb9u2) ... +Setting up libbsd0:amd64 (0.8.3-1) ... +Setting up ucf (3.0036) ... +debconf: unable to initialize frontend: Dialog +debconf: (TERM is not set, so the dialog frontend is not usable.) +debconf: falling back to frontend: Readline +debconf: unable to initialize frontend: Readline +debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.) +debconf: falling back to frontend: Teletype +Setting up libxml2:amd64 (2.9.4+dfsg1-2.2+deb9u2) ... +Setting up libfreetype6:amd64 (2.6.3-3.2) ... +Setting up libmagic-mgc (1:5.30-1+deb9u2) ... +Setting up bzip2 (1.0.6-8.1) ... +Setting up libmagic1:amd64 (1:5.30-1+deb9u2) ... +Setting up libgraphite2-3:amd64 (1.3.10-1) ... +Setting up libpixman-1-0:amd64 (0.34.0-1) ... +Setting up libglib2.0-data (2.50.3-2) ... +Processing triggers for libc-bin (2.24-11+deb9u4) ... +Setting up xz-utils (5.2.2-1.2+b1) ... +update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode +update-alternatives: warning: skip creation of /usr/share/man/man1/lzma.1.gz because associated file /usr/share/man/man1/xz.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/unlzma.1.gz because associated file /usr/share/man/man1/unxz.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzcat.1.gz because associated file /usr/share/man/man1/xzcat.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzmore.1.gz because associated file /usr/share/man/man1/xzmore.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzless.1.gz because associated file /usr/share/man/man1/xzless.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzdiff.1.gz because associated file /usr/share/man/man1/xzdiff.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzcmp.1.gz because associated file /usr/share/man/man1/xzcmp.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzgrep.1.gz because associated file /usr/share/man/man1/xzgrep.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzegrep.1.gz because associated file /usr/share/man/man1/xzegrep.1.gz (of link group lzma) doesn't exist +update-alternatives: warning: skip creation of /usr/share/man/man1/lzfgrep.1.gz because associated file /usr/share/man/man1/xzfgrep.1.gz (of link group lzma) doesn't exist +Setting up shared-mime-info (1.8-1+deb9u1) ... +Setting up libthai-data (0.1.26-1) ... +Setting up libxdmcp6:amd64 (1:1.1.2-3) ... +Setting up xml-core (0.17) ... +Setting up xdg-user-dirs (0.15-2+b1) ... +Setting up libx11-data (2:1.6.4-3+deb9u1) ... +Setting up libxau6:amd64 (1:1.0.8-1) ... +Setting up fontconfig-config (2.11.0-6.7) ... +debconf: unable to initialize frontend: Dialog +debconf: (TERM is not set, so the dialog frontend is not usable.) +debconf: falling back to frontend: Readline +debconf: unable to initialize frontend: Readline +debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.) +debconf: falling back to frontend: Teletype +Setting up libharfbuzz0b:amd64 (1.4.2-1) ... +Setting up libthai0:amd64 (0.1.26-1) ... +Setting up file (1:5.30-1+deb9u2) ... +Setting up libxcb1:amd64 (1.12-1) ... +Setting up libfontconfig1:amd64 (2.11.0-6.7+b1) ... +Setting up libxcb-render0:amd64 (1.12-1) ... +Setting up libx11-6:amd64 (2:1.6.4-3+deb9u1) ... +Setting up libxcb-shm0:amd64 (1.12-1) ... +Setting up libxrender1:amd64 (1:0.9.10-1) ... +Setting up fontconfig (2.11.0-6.7+b1) ... +Regenerating fonts cache... done. +Setting up libxext6:amd64 (2:1.3.3-1+b2) ... +Setting up libgdk-pixbuf2.0-0:amd64 (2.36.5-2+deb9u2) ... +Setting up libpango-1.0-0:amd64 (1.40.5-1) ... +Setting up libcairo2:amd64 (1.14.8-1) ... +Setting up libpangoft2-1.0-0:amd64 (1.40.5-1) ... +Setting up libpangocairo-1.0-0:amd64 (1.40.5-1) ... +Processing triggers for libc-bin (2.24-11+deb9u4) ... +Processing triggers for sgml-base (1.29) ... +Removing intermediate container b613a22d8eb3 + ---> a0c7bd45c807 +Step 21/40 : COPY . /app + ---> ef718a7fdc8c +Step 22/40 : COPY --from=build-python /usr/local/lib/python3.6/site-packages/ /usr/local/lib/python3.6/site-packages/ + ---> ce47aaa3996c +Step 23/40 : COPY --from=build-python /usr/local/bin/ /usr/local/bin/ + ---> 6eaba3eabda9 +Step 24/40 : COPY --from=build-nodejs /app/saleor/static /app/saleor/static + ---> 36b29a608312 +Step 25/40 : COPY --from=build-nodejs /app/webpack-bundle.json /app/ + ---> dd2a403fabf6 +Step 26/40 : COPY --from=build-nodejs /app/templates /app/templates + ---> cba6c312421c +Step 27/40 : WORKDIR /app + ---> Running in 6e5814badb1f +Removing intermediate container 6e5814badb1f + ---> e266e811b901 +Step 28/40 : RUN SECRET_KEY=dummy STATIC_URL=${STATIC_URL} python3 manage.py collectstatic --no-input + ---> Running in b8571e297409 + +446 static files copied to '/app/static'. +Removing intermediate container b8571e297409 + ---> cf3fe0d5b115 +Step 29/40 : RUN mkdir -p /app/media /app/static && chown -R saleor:saleor /app/ + ---> Running in 41f5a0d5f438 +Removing intermediate container 41f5a0d5f438 + ---> 0ae7dcce1b5d +Step 30/40 : EXPOSE 8000 + ---> Running in b0d53e98a33d +Removing intermediate container b0d53e98a33d + ---> cd5cd11de530 +Step 31/40 : ENV PORT 8000 + ---> Running in 285377ac452c +Removing intermediate container 285377ac452c + ---> 103ba5fa27c1 +Step 32/40 : ENV PYTHONUNBUFFERED 1 + ---> Running in 8b6a6b59b66c +Removing intermediate container 8b6a6b59b66c + ---> 460d8b8a74ab +Step 33/40 : ENV PROCESSES 4 + ---> Running in 6c9d85d411cc +Removing intermediate container 6c9d85d411cc + ---> 3a08e22e7247 +Step 34/40 : CMD ["uwsgi", "--ini", "/app/saleor/wsgi/uwsgi.ini"] + ---> Running in fdcf594f7ead +Removing intermediate container fdcf594f7ead + ---> c2a793eb5e2e +Step 35/40 : LABEL io.codefresh.repo.branch=master + ---> Running in 546e83948d3d +Removing intermediate container 546e83948d3d + ---> c38d0e6480ac +Step 36/40 : LABEL io.codefresh.repo.hash=fc9279bf74c93a861c51c653e0c02c4a8e6c227c + ---> Running in 690547eb41d9 +Removing intermediate container 690547eb41d9 + ---> 67759ee8a8f4 +Step 37/40 : LABEL io.codefresh.repo.name=saleor + ---> Running in ba1e7fac5498 +Removing intermediate container ba1e7fac5498 + ---> cdacc1b15cfa +Step 38/40 : LABEL io.codefresh.repo.owner=mirumee + ---> Running in 9c8e3057ebd9 +Removing intermediate container 9c8e3057ebd9 + ---> 4ffc9b54786f +Step 39/40 : LABEL io.codefresh.repo.sha=6cb3b96f36783ef1e82824f5074ffeb7af7b3c98 + ---> Running in 73ab4bd72efc +Removing intermediate container 73ab4bd72efc + ---> c5038449e91e +Step 40/40 : LABEL io.codefresh.repo.type=yml + ---> Running in cd25cf05ba52 +Removing intermediate container cd25cf05ba52 + ---> 9b3be650c46a +Successfully built 9b3be650c46a +Successfully tagged r.cfcr.io/chetabahana/saleor:fc9279bf74c93a861c51c653e0c02c4a8e6c227c +Successfully built image: r.cfcr.io/chetabahana/saleor:fc9279bf74c93a861c51c653e0c02c4a8e6c227c +Fetching required images: codefresh/cf-docker-pusher:v5 +Pulling image codefresh/cf-docker-pusher:v5 +Layer '8cae0e1ac61c' already exists +Pulled layer 'eb19aade29ad' +Pulled layer '421178bc5ec9' +Pulled layer '57278680e313' +Pulled layer '6457e3a12315' +Pulled layer '1964d681ba40' +Pulled layer '887ca68f81ca' +Pulled layer '7f0b2e2d9bac' +Digest: sha256:358d374148432329a07b344db967a9f87115d7e1e6a977d2216da15a901abc3f +Status: Downloaded newer image for codefresh/cf-docker-pusher:v5 +The push refers to repository [r.cfcr.io/chetabahana/saleor] +Layer 'bb7e7949be80' successfully pushed +Layer '879a4508c1fd' successfully pushed +Layer 'b92c32b97aa1' successfully pushed +Layer '200c43cb1652' successfully pushed +Layer 'a595859ac82f' successfully pushed +Layer 'b7dca22cbf0f' successfully pushed +Layer 'ab9243d5ce39' successfully pushed +Layer '7c27748d57e7' successfully pushed +Layer '63a7fac2db5b' successfully pushed +Layer '808c4a375127' successfully pushed +Layer '5180d36fbddf' successfully pushed +Layer '0b776d2c2318' successfully pushed +Layer 'f1e324b9134c' successfully pushed +Layer '5dacd731af1b' successfully pushed +Layer '2066d60190c4' successfully pushed +fc9279bf74c93a861c51c653e0c02c4a8e6c227c: digest: sha256:016406a5b34ff1460cfc7fcc717e3e1d60ab296daf121d70c4542e8f7ee4eb31 size: 3477 +``` +===Initializing Process=== +``` +Validating connection to Docker daemon... +Connection to Docker daemon validated +Creating logging service... +Logging service created +Validating logging service +Logging service validated +Fetching required images: codefresh/fs-ops:latest +Pulling image codefresh/fs-ops:latest +Pulled layer 'ff3a5c916c92' +Pulled layer 'e0742d2dbac8' +Pulled layer '8530063e00cf' +Digest: sha256:3c44c5dad4a5033ec17ddf24dbfe66359af734f772d10e4c7438092cbbaf4eef +Status: Downloaded newer image for codefresh/fs-ops:latest +Provisioning volume: pipeline_5c4d76c8d290da08a3f40e24 +Successfully provisioned volume: pipeline_5c4d76c8d290da08a3f40e24 +Creating environment variable exporting file: /codefresh/volume/env_vars_to_export +Creating export environment variable script file: /codefresh/volume/cf_export +``` +===main_clone=== +``` +Evaluating execution condition skip ( '${{CF_SKIP_MAIN_CLONE}}' != 'true' ): it evaluates to true +Continuing execution. +Fetching required images: codefresh/cf-git-cloner:v7 +Pulling image codefresh/cf-git-cloner:v7 +Pulled layer '407ea412d82c' +Pulled layer '525c35ee317e' +Pulled layer 'fdbb9612acab' +Pulled layer 'c02c6dd99ecc' +Pulled layer 'f29263e89bdc' +Digest: sha256:48ec44b96d375b05419dc2207eebd0243ff604f62a035fde6d2ea8a06b7586a6 +Status: Downloaded newer image for codefresh/cf-git-cloner:v7 +Running git-clone step: Cloning main repository... +Request context: github +Using git context: github +cloning https://github.com/mirumee/saleor.git +Cloning into 'saleor'... +remote: Enumerating objects: 1, done. +remote: Counting objects: 100% (1/1) remote: Counting objects: 100% (1/1), done. +Receiving objects: 0% (1/112453) Receiving objects: 1% (1125/112453) Receiving objects: 2% (2250/112453) Receiving objects: 3% (3374/112453) Receiving objects: 4% (4499/112453) Receiving objects: 5% (5623/112453) Receiving objects: 6% (6748/112453) Receiving objects: 7% (7872/112453) Receiving objects: 8% (8997/112453) Receiving objects: 9% (10121/112453) Receiving objects: 10% (11246/112453) Receiving objects: 11% (12370/112453) Receiving objects: 12% (13495/112453) Receiving objects: 13% (14619/112453) Receiving objects: 14% (15744/112453) Receiving objects: 15% (16868/112453) Receiving objects: 16% (17993/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 17% (19118/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 18% (20242/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 19% (21367/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 20% (22491/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 21% (23616/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 22% (24740/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 23% (25865/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 24% (26989/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 25% (28114/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 26% (29238/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 26% (30175/112453), 16.11 MiB | 32.14 MiB/s Receiving objects: 27% (30363/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 28% (31487/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 29% (32612/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 30% (33736/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 31% (34861/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 32% (35985/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 33% (37110/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 34% (38235/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 35% (39359/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 36% (40484/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 37% (41608/112453), 34.86 MiB | 34.82 MiB/s Receiving objects: 38% (42733/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 39% (43857/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 40% (44982/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 41% (46106/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 42% (47231/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 43% (48355/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 44% (49480/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 45% (50604/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 46% (51729/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 47% (52853/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 48% (53978/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 49% (55102/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 50% (56227/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 51% (57352/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 52% (58476/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 53% (59601/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 54% (60725/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 55% (61850/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 56% (62974/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 57% (64099/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 57% (64720/112453), 55.10 MiB | 36.68 MiB/s Receiving objects: 58% (65223/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 59% (66348/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 60% (67472/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 61% (68597/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 62% (69721/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 63% (70846/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 64% (71970/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 65% (73095/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 66% (74219/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 67% (75344/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 68% (76469/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 69% (77593/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 70% (78718/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 71% (79842/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 72% (80967/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 73% (82091/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 74% (83216/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 75% (84340/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 76% (85465/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 77% (86589/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 78% (87714/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 79% (88838/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 80% (89963/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 81% (91087/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 82% (92212/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 83% (93336/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 84% (94461/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 85% (95586/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 86% (96710/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 87% (97835/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 88% (98959/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 89% (100084/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 90% (101208/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 91% (102333/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 92% (103457/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 93% (104582/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 94% (105706/112453), 74.07 MiB | 37.01 MiB/s Receiving objects: 95% (106831/112453), 93.33 MiB | 37.32 MiB/s Receiving objects: 96% (107955/112453), 93.33 MiB | 37.32 MiB/s Receiving objects: 97% (109080/112453), 93.33 MiB | 37.32 MiB/s Receiving objects: 98% (110204/112453), 93.33 MiB | 37.32 MiB/s Receiving objects: 99% (111329/112453), 93.33 MiB | 37.32 MiB/s remote: Total 112453 (delta 0), reused 0 (delta 0), pack-reused 112452 +Receiving objects: 100% (112453/112453), 93.33 MiB | 37.32 MiB/s Receiving objects: 100% (112453/112453), 95.77 MiB | 36.88 MiB/s, done. +Resolving deltas: 0% (0/79317) Resolving deltas: 1% (794/79317) Resolving deltas: 2% (1617/79317) Resolving deltas: 3% (2380/79317) Resolving deltas: 4% (3425/79317) Resolving deltas: 5% (3970/79317) Resolving deltas: 6% (4791/79317) Resolving deltas: 7% (5575/79317) Resolving deltas: 8% (6353/79317) Resolving deltas: 9% (7237/79317) Resolving deltas: 10% (7966/79317) Resolving deltas: 11% (8745/79317) Resolving deltas: 12% (9532/79317) Resolving deltas: 13% (10317/79317) Resolving deltas: 14% (11121/79317) Resolving deltas: 15% (11899/79317) Resolving deltas: 16% (13012/79317) Resolving deltas: 17% (13492/79317) Resolving deltas: 18% (14388/79317) Resolving deltas: 18% (14457/79317) Resolving deltas: 19% (15075/79317) Resolving deltas: 20% (15894/79317) Resolving deltas: 21% (16741/79317) Resolving deltas: 22% (17551/79317) Resolving deltas: 23% (18246/79317) Resolving deltas: 24% (19053/79317) Resolving deltas: 25% (19852/79317) Resolving deltas: 26% (20627/79317) Resolving deltas: 27% (21472/79317) Resolving deltas: 28% (22212/79317) Resolving deltas: 29% (23004/79317) Resolving deltas: 30% (23796/79317) Resolving deltas: 31% (24627/79317) Resolving deltas: 32% (25391/79317) Resolving deltas: 33% (26240/79317) Resolving deltas: 34% (27255/79317) Resolving deltas: 35% (27853/79317) Resolving deltas: 35% (28404/79317) Resolving deltas: 36% (28577/79317) Resolving deltas: 38% (30243/79317) Resolving deltas: 39% (30967/79317) Resolving deltas: 40% (31748/79317) Resolving deltas: 41% (32544/79317) Resolving deltas: 42% (33335/79317) Resolving deltas: 43% (34112/79317) Resolving deltas: 44% (34900/79317) Resolving deltas: 45% (35698/79317) Resolving deltas: 46% (36486/79317) Resolving deltas: 47% (37280/79317) Resolving deltas: 48% (38086/79317) Resolving deltas: 49% (38925/79317) Resolving deltas: 50% (39661/79317) Resolving deltas: 51% (40472/79317) Resolving deltas: 52% (41257/79317) Resolving deltas: 52% (41549/79317) Resolving deltas: 53% (42102/79317) Resolving deltas: 54% (42832/79317) Resolving deltas: 55% (43665/79317) Resolving deltas: 56% (44429/79317) Resolving deltas: 57% (45219/79317) Resolving deltas: 58% (46013/79317) Resolving deltas: 59% (46819/79317) Resolving deltas: 60% (47594/79317) Resolving deltas: 61% (48398/79317) Resolving deltas: 62% (49192/79317) Resolving deltas: 63% (49973/79317) Resolving deltas: 64% (50766/79317) Resolving deltas: 65% (51565/79317) Resolving deltas: 66% (52360/79317) Resolving deltas: 67% (53145/79317) Resolving deltas: 68% (53947/79317) Resolving deltas: 69% (54747/79317) Resolving deltas: 70% (55527/79317) Resolving deltas: 71% (56316/79317) Resolving deltas: 72% (57122/79317) Resolving deltas: 73% (57915/79317) Resolving deltas: 74% (58750/79317) Resolving deltas: 75% (59509/79317) Resolving deltas: 76% (60397/79317) Resolving deltas: 77% (61078/79317) Resolving deltas: 78% (61869/79317) Resolving deltas: 79% (62663/79317) Resolving deltas: 80% (63548/79317) Resolving deltas: 81% (64252/79317) Resolving deltas: 82% (65061/79317) Resolving deltas: 83% (65843/79317) Resolving deltas: 84% (66714/79317) Resolving deltas: 85% (67420/79317) Resolving deltas: 86% (68221/79317) Resolving deltas: 87% (69009/79317) Resolving deltas: 88% (69847/79317) Resolving deltas: 89% (70888/79317) Resolving deltas: 90% (71402/79317) Resolving deltas: 91% (72196/79317) Resolving deltas: 92% (72995/79317) Resolving deltas: 93% (73768/79317) Resolving deltas: 94% (74569/79317) Resolving deltas: 95% (75362/79317) Resolving deltas: 96% (76149/79317) Resolving deltas: 97% (76945/79317) Resolving deltas: 98% (77741/79317) Resolving deltas: 99% (78524/79317) Resolving deltas: 100% (79317/79317) Resolving deltas: 100% (79317/79317), done. +HEAD is now at 6cb3b96f3... Merge pull request #3869 from patrys/sync-transifex +Successfully ran git-clone step: Cloning main repository... +``` \ No newline at end of file diff --git a/CPU-Bursting.mediawiki b/CPU-Bursting.mediawiki new file mode 100644 index 000000000000..976c0072aedd --- /dev/null +++ b/CPU-Bursting.mediawiki @@ -0,0 +1,11 @@ +[[CPU Bursting|https://cloud.google.com/compute/docs/machine-types#sharedcore]] adalah kemampuan yang memungkinkan mesin virtual untuk menggunakan CPU fisik tambahan untuk periode waktu yang singkat. Spike terjadi secara otomatis ketika instance Anda membutuhkan lebih banyak CPU fisik daripada yang dialokasikan sebelumnya.. + +__TOC__ + +[[|https://cloud.google.com/compute/docs/machine-types#sharedcore]] + +Spike ini perlu diperhatikan statusnya pada konsol compute engine di akun Anda karena juga akan membebani tagihan, seperti yang terlihat berikut [[sebagai contoh|https://user-images.githubusercontent.com/36441664/65305179-b770ed80-dbac-11e9-92b9-e88d58d26cd4.png]] + +==Referensi== +* [[Shared-core machine types|https://cloud.google.com/compute/docs/machine-types#sharedcore]] +* [[How to avoid Google Cloud Compute bursting/burstable cpu throttling|https://serverfault.com/questions/776117/how-to-avoid-google-cloud-compute-bursting-burstable-cpu-throttling]] diff --git a/Celery.mediawiki b/Celery.mediawiki new file mode 100644 index 000000000000..f50eb296f59f --- /dev/null +++ b/Celery.mediawiki @@ -0,0 +1,274 @@ +__TOC__ + + +==Antrian== +* Histori: [[usulan|https://github.com/mirumee/saleor/issues/1153]] dan [[konfirmasi|https://github.com/mirumee/saleor/pull/1157]] +Hampir setiap proyek membutuhkan antrian tugas begitu juga Saleor. + +[[Celery|https://en.wikipedia.org/wiki/Celery_(software)]] adalah salah satu [[project antrian|https://en.wikipedia.org/wiki/Celery_(software)]] paling populer untuk Python dan juga mudah untuk diintegrasikan dan digunakan. + +Hal-hal yang dijalankan Celery dalam antrian secara default meliputi: + +* mengirim email +* membuat gambar thumbnails +* menghasilkan file umpan (umpan Google Merchant) +===Cara Kerja=== +* [[Celery and Django and Docker|https://www.revsys.com/tidbits/celery-and-django-and-docker-oh-my/]] + +Celery bekerja berdasarkan sinkronisasi pengiriman pesan yang didistribusikan. Ini difokuskan pada operasi real-time, tetapi mendukung penjadwalan juga. + +Unit eksekusi, yang disebut tugas, dieksekusi bersamaan pada satu atau lebih server pekerja menggunakan multiprosesor, Eventlet, atau gevent. + +Tugas dapat dieksekusi sbb +* secara tidak sinkron (di latar belakang) atau +* secara sinkron (tunggu sampai siap). + +===Pialang pesan=== +* [[Generating the thumbnails|https://stackoverflow.com/a/55764254/4058484]] + +Da lam melakukan tugasnya, celery bekerja via [[pialang pesan|https://en.wikipedia.org/wiki/Message_broker]]. Pialang pesan yang disarankan adalah [[RabbitMQ|https://en.wikipedia.org/wiki/RabbitMQ]] atau [[Redis|https://en.wikipedia.org/wiki/RabbitMQ]]. + +Saleor menggunakan Redis disetel via lingkungan: + +[[common.env|https://github.com/mirumee/saleor/blob/master/common.env]] +``` +DATABASE_URL=postgres://saleor:saleor@db/saleor +DEFAULT_FROM_EMAIL=noreply@example.com +OPENEXCHANGERATES_API_KEY +CACHE_URL=redis://redis:6379/0 +CELERY_BROKER_URL=redis://redis:6379/1 +SECRET_KEY=changeme +JWT_VERIFY_EXPIRATION=True +VATLAYER_ACCESS_KEY +``` + +==Setelan== +* [[Update history|https://github.com/mirumee/saleor/pull/1157/files/f15e8f99f6f0d9c9ec84129be521bd209f005a3e]] meliputi file berikut +* saleor/settings.py +* saleor/celeryconf.py +* saleor/userprofile/management/commands/__init__.py +* saleor/search/backends/elasticsearch.py +* saleor/product/models.py + +Setelan secara lengkap bisa diikuti via [[search repo|https://github.com/mirumee/saleor/search?q=celery&unscoped_q=celery]] + + +===Arguments=== +``` +$ docker ps +CONTAINER ID IMAGE COMMAND NAMES +0abb19d50414 chetabahana/saleor "celery -A saleor wo…" backend_celery_1 +529752a79fe3 postgres "docker-entrypoint.s…" backend_postgres_1 +812a0a46cf74 redis "docker-entrypoint.s…" backend_redis_1 + +$ docker exec -it backend_celery_1 bash +saleor@0abb19d50414:/app$ celery --help +usage: celery [options] + +Show help screen and exit. + +positional arguments: + args + +optional arguments: + -h, --help show this help message and exit + --version show program's version number and exit + +Global Options: + -A APP, --app APP + -b BROKER, --broker BROKER + --result-backend RESULT_BACKEND + --loader LOADER + --config CONFIG + --workdir WORKDIR + --no-color, -C + --quiet, -q + +---- -- - - ---- Commands- -------------- --- ------------ + ++ Main: +| celery worker +| celery events +| celery beat +| celery shell +| celery multi +| celery amqp + ++ Remote Control: +| celery status + +| celery inspect --help +| celery inspect active +| celery inspect active_queues +| celery inspect clock +| celery inspect conf [include_defaults=False] +| celery inspect memdump [n_samples=10] +| celery inspect memsample +| celery inspect objgraph [object_type=Request] [num=200 [max_depth=10]] +| celery inspect ping +| celery inspect query_task [id1 [id2 [... [idN]]]] +| celery inspect registered [attr1 [attr2 [... [attrN]]]] +| celery inspect report +| celery inspect reserved +| celery inspect revoked +| celery inspect scheduled +| celery inspect stats + +| celery control --help +| celery control add_consumer [exchange [type [routing_key]]] +| celery control autoscale [max [min]] +| celery control cancel_consumer +| celery control disable_events +| celery control election +| celery control enable_events +| celery control heartbeat +| celery control pool_grow [N=1] +| celery control pool_restart +| celery control pool_shrink [N=1] +| celery control rate_limit +| celery control revoke [id1 [id2 [... [idN]]]] +| celery control shutdown +| celery control terminate [id1 [id2 [... [idN]]]] +| celery control time_limit [hard_secs] + ++ Utils: +| celery purge +| celery list +| celery call +| celery result +| celery migrate +| celery graph +| celery upgrade + ++ Debugging: +| celery report +| celery logtool +---- -- - - --------- -- - -------------- --- ------------ + +Type 'celery --help' for help using a specific command. +``` + +===Daemonization=== +* [[User Guide - Daemonization|http://docs.celeryproject.org/en/latest/userguide/daemonizing.html]] + +``` +# Names of nodes to start +# most people will only start one node: +CELERYD_NODES="worker1" +# but you can also start multiple and configure settings +# for each in CELERYD_OPTS +#CELERYD_NODES="worker1 worker2 worker3" +# alternatively, you can specify the number of nodes to start: +#CELERYD_NODES=10 + +# Absolute or relative path to the 'celery' command: +CELERY_BIN="/usr/local/bin/celery" +#CELERY_BIN="/virtualenvs/def/bin/celery" + +# App instance to use +# comment out this line if you don't use an app +CELERY_APP="proj" +# or fully qualified: +#CELERY_APP="proj.tasks:app" + +# Where to chdir at start. +CELERYD_CHDIR="/opt/Myproject/" + +# Extra command-line arguments to the worker +CELERYD_OPTS="--time-limit=300 --concurrency=8" +# Configure node-specific settings by appending node name to arguments: +#CELERYD_OPTS="--time-limit=300 -c 8 -c:worker2 4 -c:worker3 2 -Ofair:worker1" + +# Set logging level to DEBUG +#CELERYD_LOG_LEVEL="DEBUG" + +# %n will be replaced with the first part of the nodename. +CELERYD_LOG_FILE="/var/log/celery/%n%I.log" +CELERYD_PID_FILE="/var/run/celery/%n.pid" + +# Workers should run as an unprivileged user. +# You need to create this user manually (or you can choose +# a user/group combination that already exists (e.g., nobody). +CELERYD_USER="celery" +CELERYD_GROUP="celery" + +# If enabled pid and log directories will be created if missing, +# and owned by the userid/group configured. +CELERY_CREATE_DIRS=1 +``` + +====Running Worker==== +* [[Celery user permission denied to /bin/celery|https://stackoverflow.com/a/51855648/4058484]] + +``` +$ docker exec -it backend_celery_1 bash +saleor@0abb19d50414:/app$ id +uid=999(saleor) gid=999(saleor) groups=999(saleor) + +saleor@0abb19d50414:/app$ celery -A saleor worker --app=saleor.celeryconf:app \ + --loglevel=info + + -------------- celery@0abb19d50414 v4.3.0 (rhubarb) +---- **** ----- +--- * *** * -- Linux-4.15.0-1029-gcp-x86_64-with-debian-9.8 2019-04-20 17:38:35 +-- * - **** --- +- ** ---------- [config] +- ** ---------- .> app: saleor:0x7ff1fbacfeb8 +- ** ---------- .> transport: redis://redis:6379/1 +- ** ---------- .> results: +- *** --- * --- .> concurrency: 1 (prefork) +-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) +--- ***** ----- + -------------- [queues] + .> celery exchange=celery(direct) key=celery + + +[tasks] + . saleor.account.emails.send_account_delete_confirmation_email + . saleor.account.emails.send_password_reset_email + . saleor.account.thumbnails.create_user_avatar_thumbnails + . saleor.core.analytics.ga_report + . saleor.core.utils.update_conversion_rates_from_openexchangerates + . saleor.dashboard.emails.send_promote_customer_to_staff_email + . saleor.dashboard.emails.send_set_password_customer_email + . saleor.dashboard.emails.send_set_password_staff_email + . saleor.order.emails.send_fulfillment_confirmation + . saleor.order.emails.send_fulfillment_update + . saleor.order.emails.send_order_confirmation + . saleor.order.emails.send_payment_confirmation + . saleor.product.tasks.update_variants_names + . saleor.product.thumbnails.create_category_background_image_thumbnails + . saleor.product.thumbnails.create_collection_background_image_thumbnails + . saleor.product.thumbnails.create_product_thumbnails + +[2019-04-20 17:38:38,001: INFO/MainProcess] Connected to redis://redis:6379/1 +[2019-04-20 17:38:38,919: INFO/MainProcess] mingle: searching for neighbors +[2019-04-20 17:38:40,690: INFO/MainProcess] mingle: all alone +[2019-04-20 17:38:42,946: WARNING/MainProcess] /usr/local/lib/python3.7/site-packages/\ + celery/fixups/django.py:202: UserWarning: Using settings.DEBUG leads to a memory \ + leak, never use this setting in production environments!\ + warnings.warn('Using settings.DEBUG leads to a memory leak, never ' +[2019-04-20 17:38:42,955: INFO/MainProcess] celery@0abb19d50414 ready. + +``` + +==Deploy== +===Scaling=== +* [[Scaling elements|https://cloud.google.com/appengine/docs/standard/php7/config/appref#scaling_elements]] +* [[How Instances are Managed|https://cloud.google.com/appengine/docs/standard/python3/how-instances-are-managed]] + +``` +service: celery +runtime: python37 +instance_class: B1 +entrypoint: celery -A saleor worker --app=saleor.celeryconf:app --loglevel=info + +basic_scaling: + max_instances: 1 + idle_timeout: 10m + + +``` +==''Referensi''== +* [[Understand how celery works by building a clone|https://www.komu.engineer/blogs/celery-clone/understand-how-celery-works]] +* [[Run Celery on Kubernetes of Google Cloud Container Service|https://esciencegroup.com/2016/08/18/kubernetes-and-the-google-cloud-container-service-fun-with-pods-of-celery/]] \ No newline at end of file diff --git a/Class.mediawiki b/Class.mediawiki new file mode 100644 index 000000000000..6b51201655a1 --- /dev/null +++ b/Class.mediawiki @@ -0,0 +1,61 @@ +__TOC__ +==Penskalaan== +===Basic=== +Layanan dengan penskalaan basic menggunakan instance dinamis. Setiap instance dibuat ketika aplikasi menerima permintaan. Mesin virtual akan ditolak ketika aplikasi menjadi diam. Penskalaan basic ideal untuk pekerjaan yang berselang atau didorong oleh aktivitas pengguna. + +===Manual=== +Sebuah layanan dengan penskalaan manual menggunakan instance resident yang terus menerus menjalankan jumlah instance yang ditentukan terlepas dari level beban. Ini memungkinkan tugas-tugas seperti inisialisasi kompleks dan aplikasi yang bergantung pada status memori seiring waktu. + +===Otomatis=== +Layanan penskalaan otomatis menggunakan instance dinamis yang dibuat berdasarkan tingkat permintaan, latensi respons, dan metrik aplikasi lainnya. Namun, jika Anda menentukan jumlah instance idle minimum, jumlah instance tertentu dijalankan sebagai instance resident sementara instances tambahan apa pun adalah dinamis. +[[|https://cloud.google.com/appengine/docs/standard/python/how-instances-are-managed]] + + +==Penyelelan== +* [[Settings in the app.yaml - Python3|https://cloud.google.com/appengine/docs/standard/python3/config/appref]] + +===Memory=== +[[|https://cloud.google.com/appengine/docs/standard/]] + +===Instance=== +* [[App Engine instance not starting with basic scaling|https://stackoverflow.com/questions/38005333/app-engine-instance-not-starting-with-basic-scaling-but-works-with-auto-scaling]] + +[[|https://user-images.githubusercontent.com/36441664/65078210-c9913700-d9c6-11e9-9041-e6ef9e355484.png]] + +====Saleor==== +* [[Console - Saleor Instance Tabel Size|https://console.cloud.google.com/appengine/instances?project=chetabahana&serviceId=saleor&versionId=production&instancesTablesize=20&duration=P30D&graph=AE_MEMORY_USAGE]] + +``` +env: standard +service: saleor +runtime: python37 +instance_class: F2 +entrypoint: uwsgi --ini saleor/wsgi/uwsgi.ini + +automatic_scaling: + max_instances: 1 + +handlers: +- url: /.* + script: auto + secure: always + redirect_http_response_code: 301 +``` +====Celery==== +* [[Console - Celery Instance Tabel Size|https://console.cloud.google.com/appengine/instances?project=chetabahana&serviceId=celery&versionId=dev-v2&instancesTablesize=20&duration=P30D&graph=AE_MEMORY_USAGE]] + +``` +env: standard +service: celery +runtime: python37 +instance_class: B2 +entrypoint: celery -A saleor worker --app saleor.celeryconf:app --loglevel info + +basic_scaling: + max_instances: 1 + idle_timeout: 10m + +handlers: +- url: /.* + script: auto +``` diff --git a/Code.mediawiki b/Code.mediawiki new file mode 100644 index 000000000000..f516850d7665 --- /dev/null +++ b/Code.mediawiki @@ -0,0 +1,196 @@ +__TOC__ + + +==Syntax== +* [[Errors and exceptions|https://python-textbok.readthedocs.io/en/1.0/Errors_and_Exceptions.html]] +===If-Else=== +====Trap==== +``` +myfunction(x, y): + return x + y +else: + print("Hello!") + +if mark >= 50 + print("You passed!") + +if flag: + print("Flag is set!") +esle: + print("Bye!") +``` +====Checks==== +``` +# with checks + +n = None +while n is None: + s = input("Please enter an integer: ") + if s.lstrip('-').isdigit(): + n = int(s) + else: + print("%s is not an integer." % s) +``` + +===Try-Except=== +====Block==== +* [[Python Try Except|https://www.w3schools.com/python/python_try_except.asp]] +``` +def main(): + Do this + Do that + try: + dividend = int(input("Please enter the dividend: ")) + divisor = int(input("Please enter the divisor: ")) + print("%d / %d = %f" % (dividend, divisor, dividend/divisor)) + except ValueError: + print("The divisor and dividend have to be numbers!") + except ZeroDivisionError: + print("The dividend may not be zero!") +``` +====Specific==== +``` +def main(): + Do this + Do that + try: + dividend = int(input("Please enter the dividend: ")) + except ValueError: + print("The dividend has to be a number!") + + try: + divisor = int(input("Please enter the divisor: ")) + except ValueError: + print("The divisor has to be a number!") + + try: + print("%d / %d = %f" % (dividend, divisor, dividend/divisor)) + except ZeroDivisionError: + print("The dividend may not be zero!") +``` +====Raise==== +* [[Re-Raising Exceptions|https://www.techbeamers.com/use-try-except-python/#raising-exceptions-in-Python]] + +``` +def main(): + Do this + Do that + try: + file = open('input-file', 'open mode') + except: + # In case of any unhandled error, throw it away + raise +``` +====Finally==== +* [[Re-Raising Exceptions|https://www.techbeamers.com/use-try-except-python/#raising-exceptions-in-Python]] + +``` +def main(): + Do this + Do that + try: + age = int(input("Please enter your age: ")) + except ValueError: + print("Hey, that wasn't a number!") + else: + print("I see that you are %d years old." % age) + finally: + print("It was really nice talking to you. Goodbye!") +``` +====Exceptions==== +* [[Re-Raising Exceptions|https://www.techbeamers.com/use-try-except-python/#raising-exceptions-in-Python]] + +``` +def main(): + Do this + Do that + try: + age = int(input("Please enter your age: ")) + if age < 0: + raise ValueError("%d is not a valid age. Age must be positive or zero.") + except ValueError as err: + print("You entered incorrect age input: %s" % err) + else: + print("I see that you are %d years old." % age) +``` + +==Logging== +===Console=== +===Stackdriver=== + +``` +import logging + +# log messages to a file, ignoring anything less severe than ERROR +logging.basicConfig(filename='myprogram.log', level=logging.ERROR) + +# these messages should appear in our file +logging.error("The washing machine is leaking!") +logging.critical("The house is on fire!") + +# but these ones won't +logging.warning("We're almost out of milk.") +logging.info("It's sunny today.") +logging.debug("I had eggs for breakfast.") +``` + +==Debug Tools== +* [[What is the best way to debug a Django app?|https://www.quora.com/What-is-the-best-way-to-debug-a-Django-app]] +* [[How to debug in Django, the good way?|https://stackoverflow.com/questions/1118183/how-to-debug-in-django-the-good-way]] + +===Offline=== +* [[Pdb & ipdb & pudb|https://www.bedjango.com/blog/how-debug-django-useful-tips/]] +* [[Pyflakes, pylint, PyChecker and pep8|https://python-textbok.readthedocs.io/en/1.0/Errors_and_Exceptions.html#pyflakes-pylint-pychecker-and-pep8]] + +====Pdb==== +* [[Python Debugger (pdb)|https://stackoverflow.com/a/1118271/4058484]] +* [[pdb: Using the Python debugger in Django|https://mike.tig.as/blog/2010/09/14/pdb/]] + +[[|https://www.bedjango.com/blog/how-debug-django-useful-tips/]] + +====Pep8==== +====Pylint==== +[[|https://www.pylint.org/]] + +====PyDev==== +* [[Install the PyDev plug-in for Eclipse|https://stackoverflow.com/a/49937770/4058484]] +* [[How To Debug Django Project With Eclipse And PyDev|https://www.dev2qa.com/how-to-debug-django-project-with-eclipse-and-pydev/]] + +[[PyDev|https://en.wikipedia.org/wiki/PyDev]] adalah plug-in pihak ketiga untuk [[Eclipse|https://id.wikipedia.org/wiki/Eclipse_(perangkat_lunak)]] yang digunakan untuk pemrograman dengan Python yang mendukung refactoring kode, debugging grafis, analisis kode di antara fitur-fitur. +

+[[|https://www.dev2qa.com/how-to-debug-django-project-with-eclipse-and-pydev/]] + +====Pyflakes==== +====PyCharm==== +[[|http://www.jetbrains.com/pycharm/documentation/]] + +====PyChecker==== + +===Online=== +* [[Test Result|https://github.com/mirumee/saleor/pull/2626]] +====Snyk==== +https://app.snyk.io +====Travis==== +https://travis-ci.org/mirumee/saleor +====Sentry==== +* [[Fitur - Error tracking|https://sentry.io/welcome/]] +* [[Create|https://sentry.io/organizations/marketleader/projects/]] dan [[Install|https://sentry.io/marketleader/saleor/getting-started/python/]] Project + +``` +$ pip install --upgrade sentry-sdk==0.7.14 + +import sentry_sdk +sentry_sdk.init("https://xxxxxx@sentry.io/XXXXXX") +``` +[[|https://sentry.io/features/]] + +====Codecov==== +https://codecov.io/gh/mirumee/saleor +====Codeclimate==== +https://codeclimate.com/github/mirumee/saleor/pull/2626 +====Sourcegraph==== +* [[Enable Sourcegraph|https://github.com/mirumee/saleor/issues/227]] +* [[saleor on @sourcegraph|https://sourcegraph.com/github.com/mirumee/saleor]] + +[[|https://sourcegraph.com/welcome#code-navigation]] + diff --git a/Compute-Engine.mediawiki b/Compute-Engine.mediawiki new file mode 100644 index 000000000000..0d95b614a4e5 --- /dev/null +++ b/Compute-Engine.mediawiki @@ -0,0 +1,395 @@ +__TOC__ +==Layanan== +Google Cloud Platform meluncurkan promo [[Free Tier|https://cloud.google.com/free/docs/gcp-free-tier]] untuk menarik banyak pelanggan mencoba layanan cloud secara cuma-cuma. Program ini memiliki dua bagian: + +* [[Uji coba gratis 12 bulan|https://cloud.google.com/free/docs/gcp-free-tier#free-trial]] dengan kredit $ 300 untuk digunakan dengan layanan GCP apa pun. +* [[Always Free|https://cloud.google.com/free/#always-free]], yang menyediakan akses terbatas ke banyak sumber daya GCP umum, gratis. + +‘Always Free’ tersedia tanpa ada trial dengan waktu yang terbatas. Pelanggan dapat [[mengakses layanan cloud|https://cloud.google.com/free/#always-free]] dari Google secara cuma-cuma tanpa batas waktu, tetapi Google membatasinya pada sumber dayanya + +===Free=== +‘Always Free’ untuk [[Compute Engine|https://cloud.google.com/compute/docs]] tersedia sebagai berikut: +* 1 instance VM ''[[f1-mikro|https://cloud.google.com/compute/pricing#sharedcore]]'' '''non-[[preemptible|https://translate.google.com/translate?sl=en&tl=id&u=https%3A%2F%2Fcloud.google.com%2Fcompute%2Fdocs%2Finstances%2Fpreemptible]]''' per bulan di salah satu wilayah AS berikut: +** Oregon: us-west1 +** Iowa: us-central1 +** Carolina Selatan: us-east1 +* 30 GB penyimpanan ''[[disk persisten standar|https://cloud.google.com/compute/docs/disks/?hl=in#performance]]'' per bulan. +* 5 GB penyimpanan ''[[snapshot|https://codelabs.developers.google.com/codelabs/cpo200-snapshots/#0]]'' per bulan. +* Batas Lalu Lintas Jaringan: +** Anda harus menggunakan ''[[Tingkat Premium|https://cloud.google.com/network-tiers/pricing?hl=in]]''. Anda tidak dapat menggunakan Tier Standar. +** Lalu lintas harus dikirim dari wilayah GCP di Amerika Utara. +** Anda dapat mengirim hingga 1GB lalu lintas keluar, secara agregat, ke wilayah kecuali untuk yang di Oceania dan Cina +===Billing=== +Anda dapat menemukan informasi harga dengan opsi berikut: + +* Lihat perkiraan biaya mesin virtual Anda di ''[[Google Cloud Platform Console|https://console.cloud.google.com/?hl=in]]'' dan Perkirakan total biaya proyek Anda dengan ''[[Google Cloud Pricing Calculator|https://cloud.google.com/products/calculator/?hl=in]]''. +* Contoh kalkulasi 1 (satu) Instance ''[[f1-micro + 30GB Disk Standar|https://cloud.google.com/products/calculator/#id=dde5844f-f3c1-4d31-99d0-32f0fcb42f4a]]'' tagihannya [[USD 3.88/bulan|https://cloud.google.com/products/calculator/#id=2284d7a5-f52c-4f1f-a4ef-779326a6dfaf]]. Edit dan centang kotak ''Always Free'' akan menjadi [[US$ 0.00/bulan|https://cloud.google.com/products/calculator/#id=c4588e8b-05b8-4918-abc4-af141217aa2f]]. +* Optimasi tentang billing GCE bersama komponen² lainnya akan kita ulas secara detil pada ''[[sesi akhir|https://github.com/MarketLeader/Toko-Chetabahana/wiki/Optimasi-Biaya]]'' dari dokumentasi ini. + +===Ketentuan=== +Batas instance f1-mikro Selalu Gratis Anda adalah berdasarkan waktu, bukan oleh instance. + +Penggunaan yang layak dari semua instans f1-mikro Anda setiap bulan adalah gratis hingga Anda telah menggunakan '''[[jumlah jam yang sama dengan total jam pada bulan ini|https://cloud.google.com/free/docs/gcp-free-tier]]'''. Perhitungan penggunaan '''digabungkan''' di seluruh wilayah yang didukung. + +Compute Engine menawarkan diskon untuk penggunaan mesin virtual yang berkelanjutan. Penggunaan [[Always Free|https://cloud.google.com/free/#always-free]] tidak menjadi faktor dalam penggunaan berkelanjutan. + +GPU (''[[Graphics Processing Unit|https://en.wikipedia.org/wiki/Graphics_processing_unit]]'') dan TPU ''[[(Tensor Processing Unit|https://en.wikipedia.org/wiki/Tensor_processing_unit]]'') tidak termasuk dalam penawaran Selalu Gratis. Anda akan dikenai biaya untuk GPU dan TPU yang Anda tambahkan ke instance. + +==Instance== +[[|https://cloud.google.com/vpc/docs/private-access-options]] + +===Pilihan=== +Ada banyak macam server di GCE, kita akan pilih seperti ini +* Buka situs https://stackoverflow.com/tags +* Masukkan semua brand server yang ditawarkan + +Saat dokumentasi ini dibuat, hasilnya adalah sbb: + +```txt +ubuntu ×44156 +centos ×10208 +debian ×7686 +redhat ×2821 +fedora ×2139 +windows-server ×739 +coreos ×574 +suse ×430 +mint ×426 +``` + +Rating paling tinggi adalah brand Ubuntu. +* Jenis Ubuntu yang ditawarkan juga ada beberapa macam. +* Kita masukkan lagi ke kotak search tag nya, +Saat dokumentasi ini dibuat, hasilnya adalah sbb: + +```txt +ubuntu-14.04 ×4826 +ubuntu-16.04 ×4453 +ubuntu-18.04 ×1002 +``` + +Rating tertinggi adalah ''[[Ubuntu 14.04|http://releases.ubuntu.com/14.04/]]''. Namun menurut [[dokumentasi saleor linux|https://docs.getsaleor.com/en/latest/gettingstarted/installation-linux.html#debian-ubuntu]] minimal Ubuntu 16.04. Jadi jenis terbaru yang akan kita pilih. + +===Console=== +* Reserving a ''[[Static External IP Address|https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address]]'' +* ''[[Creating and Configuring|https://cloud.google.com/container-optimized-os/docs/how-to/create-configure-instance#using_cloud-init]]'', cara ''[[Access|https://cloud.google.com/compute/docs/instances/managing-instance-access]]'' dan ''[[General Tips|https://cloud.google.com/compute/docs/troubleshooting/general-tips#ssherrors]]'' + +# Jika belum pesan buat terlebih dahulu [[Alamat IP Eksternal|https://console.cloud.google.com/networking/addresses/list]]. +# Di Cloud Platform Console, buka halaman VM Instances. +# Klik tombol Buat instance. +# Beri Nama untuk instance yang sedang dibuat. +# Di bagian Boot disk, klik Ubah untuk mulai mengonfigurasi disk boot Anda. +# Di tab gambar prakonfigurasi, pilih Ubuntu 14.04 LTS. +# Di bagian Tipe disk boot, pilih Disk persisten standar. +# Isi MetaData enable-oslogin nilai TRUE +# Di bagian Firewall, pilih Izinkan lalu lintas HTTP dan Izinkan lalu lintas HTTPS. +# Klik tombol Buat untuk membuat instance. + +=== Via Gcloud=== +* Buat ''[[Akun Layanan|https://cloud.google.com/compute/docs/access/service-accounts]]'' untuk ''[[Akses GCE|https://cloud.google.com/compute/docs/access/granting-access-to-resources]]''. Roles: [[project-owner|https://console.cloud.google.com/iam-admin/iam]] +* Setel ''[[Cakupan|https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes]]'' Akun Layanan ke Izinkan akses penuh ke semua API Cloud + +```txt + +$ gcloud init +$ gcloud iam service-accounts create --display-name "" +$ gcloud projects add-iam-policy-binding --role roles/project.owner \ +--member serviceAccount: +$ gcloud iam service-accounts keys create key.json \ +--iam-account + +$ INSTANCE= +$ gcloud compute disks list +$ gcloud compute disks delete $INSTANCE +$ gcloud compute instances delete compute $INSTANCE +$ cloud compute addresses create ip4-$INSTANCE --ip-version=IPV4 +$ gcloud compute --project= instances create $INSTANCE \ +--subnet=default --network-tier=PREMIUM --machine-type=f1-micro \ +--maintenance-policy=TERMINATE --metadata enable-oslogin=false \ +--scopes=https://www.googleapis.com/auth/cloud-platform \ +--image=ubuntu-1804-bionic-v20190307 --image-project=ubuntu-os-cloud \ +--tags=http-server,https-server,postgres-server,mysql-server,redis-server \ +--boot-disk-device-name=$INSTANCE --no-boot-disk-auto-delete \ +--boot-disk-type=pd-standard --boot-disk-size=30GB \ +--address= \ +--service-account= + +WARNING: You have selected a disk size of under [200GB]. This may result in poor I/O +For more information, see: https://developers.google.com/compute/docs/disks#performance. +WARNING: Some generated warnings: Disk size: '30 GB' is larger than image size: '10 GB'. +Resize root repartition manually if the operating system not support automatic resizing. +See https://cloud.google.com/compute/docs/disks/persistent-disks#repartitionrootpd + +NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS +[nama] us-east1-b f1-micro [IP ADDRESS] [IP ADDRESS] RUNNING +``` + +Bisa [[lepas dan pasang disk|https://cloud.google.com/compute/docs/disks/detach-reattach-boot-disk]] sbb: +``` +$ gcloud compute instances stop $INSTANCE +$ gcloud compute instances detach-disk $INSTANCE --disk=$INSTANCE +$ gcloud compute instances attach-disk $INSTANCE --disk=$INSTANCE --boot +``` + +==Koneksi== +* [[Connecting to instances|https://cloud.google.com/compute/docs/instances/connecting-to-instance]] +* Initial [[Server Setup|https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04]] with Ubuntu 18.04 + +===Timeout 255=== +```bash +ssh: connect to host 35.222.19.23 port 22: Connection timed out +ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255]. +``` + +Lihat cara ''[[cek Instant|https://stackoverflow.com/a/49012827/4058484]]'' +```bash +$ gcloud compute instances describe backend --zone us-east1-c --project chetabahana +$ gcloud compute instances get-serial-port-output backend --zone us-east1-c --project chetabahana +$ gcloud compute firewall-rules list --project chetabahana +$ gcloud compute firewall-rules list --project chetabahana \ +NAME NETWORK DIRECTION PRIORITY ALLOW default-allow-ssh default INGRESS 65534 tcp:22 +$ gcloud compute firewall-rules update --priority 1000 default-allow-ssh +ERROR: (gcloud.compute.firewall-rules.update) Could not fetch resource: + - The resource 'projects/chetabahana/global/firewalls/default-allow-ssh' was not found +``` + +===Setel Firewall=== +Lihat ''[[Using Firewall Rules|https://cloud.google.com/vpc/docs/using-firewalls]]'' dan ''[[troubleshooting-ssh|https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh]]'' +```bash +~$ gcloud compute firewall-rules create default-allow-ssh --allow tcp:22 +Creating firewall...⠧Created [https://www.googleapis.com/compute/v1/projects/chetabahana/global/firewalls/default-allow-ssh]. +Creating firewall...done. +NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED +default-allow-ssh default INGRESS 1000 tcp:22 False + +# gcloud compute instances add-tags [INSTANCE-NAME] --zone [ZONE] --tags [TAGS] +$ gcloud compute instances add-tags backend --tags postgres-server + + +``` + +===Firewall List=== +```bash +$ gcloud compute firewall-rules list +NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED +default-allow-http default INGRESS 1000 tcp:80 False +default-allow-https default INGRESS 1000 tcp:443 False +default-allow-icmp default INGRESS 65534 icmp False +default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False +default-allow-rdp default INGRESS 65534 tcp:3389 False +default-allow-ssh default INGRESS 1000 tcp:22 False +mysql-remote-access default INGRESS 1000 tcp:3306 False +postgres-remote-access default INGRESS 1000 tcp:5432 False +redis-ingress default INGRESS 1000 tcp:6379 False + +~$ gcloud compute firewall-rules describe default-allow-https --format="value(targetTags)" +https-server +``` + +===Scan Ports=== +Lihat ''[[Scan Tutorial|https://nmap.org/book/port-scanning-tutorial.html]]'' dan ''[[How to open PORT: 443|https://www.digitalocean.com/community/questions/how-to-open-port-443]]'' + + +``` +~$ sudo apt install nmap +~$ nmap scanme.nmap.org +Starting Nmap 7.60 ( https://nmap.org ) at 2019-03-08 07:23 UTC +Nmap scan report for scanme.nmap.org (45.33.32.156) +Host is up (0.042s latency). +Not shown: 995 closed ports +PORT STATE SERVICE +22/tcp open ssh +25/tcp filtered smtp +80/tcp open http +9929/tcp open nping-echo +31337/tcp open Elite + +Nmap done: 1 IP address (1 host up) scanned in 1.91 seconds +PORT STATE SERVICE +22/tcp open ssh +443/tcp closed https + +``` + +===Login Ssh=== +Jika sudah bisa login via ssh, akan tertulis Welcome seperti berikut ini: +```bash +Connected, host fingerprint: ssh-rsa 0 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX +Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1028-gcp x86_64) + + * Documentation: https://help.ubuntu.com + * Management: https://landscape.canonical.com + * Support: https://ubuntu.com/advantage + + System information as of Wed Mar 20 01:22:51 UTC 2019 + + System load: 0.0 Processes: 90 + Usage of /: 5.1% of 28.90GB Users logged in: 0 + Memory usage: 39% IP address for ens4: 10.142.0.10 + Swap usage: 0% + + * Ubuntu's Kubernetes 1.14 distributions can bypass Docker and use containerd + directly, see https://bit.ly/ubuntu-containerd or try it now with + + snap install microk8s --channel=1.14/beta --classic + + Get cloud support with Ubuntu Advantage Cloud Guest: + http://www.ubuntu.com/business/services/cloud + + * Canonical Livepatch is available for installation. + - Reduce system reboots and improve kernel security. Activate at: + https://ubuntu.com/livepatch + +22 packages can be updated. +3 updates are security updates. + + +Last login: Tue Mar 19 22:31:20 2019 from 35.186.150.205 +chetabahana@backend:~$ id +uid=1001(chetabahana) gid=1002(chetabahana) groups=1002(chetabahana),4(adm), +20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev), +108(lxd),114(netdev),1000(ubuntu),1001(google-sudoers) +``` +Dengan koneksi ssh seperti ini maka Anda dapat lakukan banyak hal antara lain: + +* instalasi, update, atau ubah setelan component +* ubah atau tambah ukuran booting dan external ''[[Google-Compute-Engine#Disk|disk]]'' + +===OS Login=== +Lihat ''[[Enable OS Login|https://cloud.google.com/compute/docs/instances/managing-instance-access#enable_oslogin]]'' +```bash +$ gcloud compute instances add-metadata backend --metadata enable-oslogin=TRUE +Updated [https://www.googleapis.com/compute/v1/projects/chetabahana/zones/us-east1-b/instances/backend]. +$ gcloud compute --project "chetabahana" ssh --zone "us-central1-c" "instance-sql" +WARNING: Using OS Login user [chetabahana_gmail_com] instead of default user [chetabahana] +groups: cannot find name for group ID 1107890316 +chetabahana_gmail_com@backend:~$ sudo cat /etc/passwd +root:x:0:0:root:/root:/bin/bash +... +... +ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/ +``` + +Lihat Tanpa OS Login - [[Set Up SSH Keys|https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-1804]] +``` +$ gcloud compute instances add-metadata backend --metadata enable-oslogin=FALSE +Updated [https://www.googleapis.com/compute/v1/projects/chetabahana/zones/us-east1-b/instances/backend]. +$ ssh-keygen +Enter file in which to save the key (/home/chetabahana/.ssh/id_rsa): +/home/chetabahana/.ssh/id_rsa already exists. +Overwrite (y/n)? y +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/chetabahana/.ssh/id_rsa. +Your public key has been saved in /home/chetabahana/.ssh/id_rsa.pub. +The key fingerprint is: +SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +The key's randomart image is: ++---[RSA 2048]----+ +| .B@+. .E. | +... +... +| oB*.oo. | ++----[SHA256]-----+ +$ gcloud compute --project "chetabahana" ssh --zone "us-east1-b" "backend" +Updating project ssh metadata...⠹Updated [https://www.googleapis.com/compute/v1/projects/chetabahana]. +Updating project ssh metadata...done. +Waiting for SSH key to propagate. +Enter passphrase for key '/home/chetabahana/.ssh/google_compute_engine': +Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1028-gcp x86_64) +chetabahana@backend:~$ sudo cat /etc/passwd +root:x:0:0:root:/root:/bin/bash +... +... +ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash +chetabahana:x:1001:1002::/home/chetabahana:/bin/bash +``` +Cek di + + +===Home=== +Lihat cara ''[[ganti nama user|https://cloud.google.com/compute/docs/ssh-in-browser#changing_the_default_username]]'' +```bash +~$ sudo cp -r /home/user_gmail_com/. /home/user +~$ sudo chown -R user:user /home/user +``` +==Setelan== +Jika Anda pakai jenis f1-micro dengan US region maka Anda bisa manfaatkan fasilitas [[Google-Compute-Engine#Free|Free Tier]] yaitu 30GB Persistent Disk dan 5GB Snapshot. + +===Snapshot=== +Lihat [[Creating persistent disk snapshots|https://cloud.google.com/compute/docs/disks/create-snapshots?hl=in]] +``` +$ gcloud compute snapshots list +$ gcloud beta compute disks snapshot backend --project=chetabahana \ +--snapshot-names=snapshot --zone=us-east1-b --storage-location=us + +$ gcloud beta compute resource-policies list +$ gcloud beta compute resource-policies create-snapshot-schedule snapshot-schedule \ +--project=chetabahana --region=us-east1 --max-retention-days=7 \ +--on-source-disk-delete=apply-retention-policy \ +--daily-schedule --start-time=00:00 \ +--guest-flush + +$ gcloud beta compute disks add-resource-policies backend \ + --resource-policies snapshot-schedule \ + --zone us-east1-b + +``` +[[|https://cloud.google.com/compute/docs/disks/create-snapshots?hl=in]] +===Cek Disk=== +Pastikan Anda sudah bisa ''[[Google-Compute-Engine#Login_Ssh|koneksi ssh]]'' ke instance jika Anda ingin merubah ''[[disk|https://console.cloud.google.com/compute/disks]]'' Anda. +Lihat partisi sbb: + +``` +$ df -h +Filesystem Size Used Avail Use% Mounted on +udev 277M 4.0K 277M 1% /dev +tmpfs 59M 256K 59M 1% /run +/dev/sda1 30G 1.3G 27G 5% / +none 4.0K 0 4.0K 0% /sys/fs/cgroup +none 5.0M 0 5.0M 0% /run/lock +none 295M 0 295M 0% /run/shm +none 100M 0 100M 0% /run/user + +$ sudo lsblk +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT +sda 8:0 0 30G 0 disk +└─sda1 8:1 0 30G 0 part / +``` + +===Resizing=== +Beberapa sistem akan otomatis resizing saat booting. + +JIka belum pernah booting lakukan langkah berikut +* Tambahkan [[Google-Compute-Engine#Snapshot|Snapshot (Cuplikan)]] sebelum restart +* Restart Server +``` +$ gcloud compute disks snapshot compute +$ gcloud compute instances stop compute +$ gcloud compute instances start compute +``` +Cek welcome +``` +System load: 0.24 Memory usage: 9% Processes: 61 +Usage of /: 4.1% of 29.50GB Swap usage: 0% Users logged in: 0 +``` + +===Opsi Lain=== +Selain ''[[tambah atau resize lokal HDD|https://cloud.google.com/compute/docs/disks/add-persistent-disk]]''.ada [[beberapa opsi|https://cloud.google.com/compute/docs/disks/]] yang bisa dilakukan sbb: + +* Lokal SSD +* Zonal HDD atau SSD +* Regional HDD atau SSD +* Koneksi dengan [[Cloud Storage|https://cloud.google.com/compute/docs/disks/gcs-buckets]] + +Catatan untuk Koneksi dengan Cloud Storage (GCR): +

+ +* Google Cloud Storage adalah opsi penyimpanan yang fleksibel. Bucket dapat diskalakan dan digunakan sebagai penyimpanan objek secara umum termasuk dengan [[App-Engine|Google App Engine]]. + +* Jika ingin agar bucket yang dipasang berperilaku mirip dengan disk yang persisten, Anda dapat menggunakan ''[[FUSE|https://cloud.google.com/storage/docs/gcs-fuse]]''. Tersedia gratis, tetapi penyimpanan, I/O, dll mengikuti [[App-Engine#Penyimpanan|Harga Storage]]. + +* Selain komunikasi antara layanan di cloud, kita juga bisa gunakan buket untuk pasang ''[[Kontainer Openshif|https://docs.openshift.com/container-platform/3.11/install_config/configuring_gce.html#configuring-gce-storage_configuring-for-GCE]]'' dari ''[[Ansible|https://www.ansible.com/]]'' yang juga tersedia secara ''[[open source|https://github.com/ansible/ansible]]''. + +==''Referensi''== +* [[GCP: assign/remove ephemeral IP to an existing instance|https://stackoverflow.com/a/47537412/4058484]] diff --git a/Continuous-Delivery.mediawiki b/Continuous-Delivery.mediawiki new file mode 100644 index 000000000000..ed828b6569e5 --- /dev/null +++ b/Continuous-Delivery.mediawiki @@ -0,0 +1,170 @@ +[[Continuous delivery|https://en.wikipedia.org/wiki/Continuous_delivery]] (CD atau CDE) adalah pendekatan rekayasa perangkat lunak untuk memastikan bahwa perangkat lunak dapat dirilis setiap saat. Proses penyebaran langsung dan berulang sangat penting untuk penerapan secara terus menerus. + +__TOC__ + +==Layanan== +===Compute=== +====Nirmata==== +[[Nirmata|https://www.nirmata.com/pricing/]] adalah layanan turnkey untuk mengelola kontainer aplikasi produksi di cloud publik dan private. Nirmata ''[[Suport GCE|https://nirmata-documentation.readthedocs.io/en/latest/Introduction.html?highlight=google+compute+engine#cloud-providers]]'' karenanya [[dapat dijalankan di Google Platform|https://nirmata-documentation.readthedocs.io/en/latest/CloudProviders.html?highlight=google+platform#gce-cloud-provider]] seperti berikut: + +[[|http://help.nirmata.com/en/latest/Environments.html#cloud-shell]] + +====Webhook Relay==== +* [[Setting up simple, self-hosted & fast CI/CD solution with Drone.io|https://webhookrelay.com/blog/2019/02/11/using-drone-for-simple-selfhosted-ci-cd/]] +Webhook Relay memungkinkan siapa saja untuk menerima webhook dan memaparkan layanan web ke internet tanpa memiliki IP publik atau mengkonfigurasi NAT / firewall. + +[[|https://webhookrelay.com/]] + + +===Kubernetes=== + +====CodeFresh==== +Bersasarkan [[Analisa CI/CD|https://github.com/MarketLeader/Tutorial-Buka-Toko/wiki/Setel-Otomatisasi-Deploy#step-4-codefresh]] dari begitu banyak penyedia maka [[Codefresh|https://g.codefresh.io/signup?ref=ByhLQyoQ4]] dapat dipilih sebagai acuan dalam project ini. Selain yang sudah [[Apa-Itu-Codefresh|dirangkum]] maka Anda bisa simak lebih detil di [[dokumentasi|https://codefresh.io/docs/]]. + +[[|https://codefresh.io/docs/]] + +Selain yang diulas dalam [[tabel penyedia CI/CD|https://github.com/MarketLeader/Tutorial-Buka-Toko/wiki/Setel-Otomatisasi-Deploy#step-4-codefresh]] maka untuk GKE hal ini dapat juga dilakukan dengan [[BitBucket|https://confluence.atlassian.com/bitbucket/use-docker-images-as-build-environments-792298897.html]], [[GitLab|https://about.gitlab.com/pricing/]], [[Travis|https://travis-ci.com/]], [[Codeship|http://codeship.com/]], [[VMWare|https://docs.vmware.com/en/VMware-Code-Stream/services/Using-and-Managing-CodeStream/GUID-FAB8901C-1682-4B80-BCF5-C999F0F877EC.html]], [[CloudBees|https://www.cloudbees.com/devops/continuous-delivery/jenkins-docker]], [[Knatife|https://knative.dev/docs/serving/samples/gitwebhook-go/]] dan [[masih banyak lagi|https://blog.codepipes.com/hosted-ci-comparison/hosted-ci-comparison.html]]. + +==Setup Server== +Selain menggunakan ''[[Continuous-Delivery#layanan|layanan]]'' maka Anda juga dapat memasang server untuk menjalankan CI/CD. Hal ini akan memberikan keleluasaan yang lebih tinggi dalam menentukan arah project yang Anda bangun baik di [[Continuous-Delivery#Compute_Engine|Compute Engine]] maupun [[Continuous-Delivery#Kubernetes_Cluster|Kubernetes Cluster]]. + +===Compute Engine=== +====Gcloud==== +* [[A quick overview on what is possible with Google Cloud Build|https://ordina-jworks.github.io/cloud/2019/03/28/Building-With-Google-Cloud-Build.html]] +``` +$ gcloud components install cloud-build-local +$ cloud-build-local --config=[CONFIG FILE] \ + --dryrun=false \ + --push \ + [SOURCE_CODE] +``` +====GoCD==== +[[GoCD|https://en.wikipedia.org/wiki/Go_continuous_delivery]] adalah alat open-source yang digunakan dalam pengembangan perangkat lunak untuk membantu tim dan organisasi mengotomatiskan pengiriman perangkat lunak yang berkelanjutan. Ini mendukung otomatisasi seluruh proses build-test-release dari kode check-in hingga penyebaran. +[[|https://docs.gocd.org/current/]] + +====Strider CD==== +[[Strider|https://github.com/Strider-CD/strider]] adalah platform Open Source Continuous Deployment / Continuous Integration. Ditulis dalam Node.JS/JavaScript dan menggunakan MongoDB. Diterbitkan di bawah lisensi BSD. + +[[|http://strider-cd.github.io/]] + +====Giant Swarm==== +* [[Continuous Deployments with Docker Hub|https://blog.giantswarm.io/continuous-deployments-with-swarm-inception-and-docker-hub/]] +[[Swarm Inception|https://github.com/giantswarm/swarm-inception/]] adalah aplikasi yang dijalankan via DockerHub webhook. Build dilakukan via [[Github webhooks|https://developer.github.com/webhooks/]]. Ketika selesai DockerHub akan memanggil handler untuk memicu pembaruan. + +``` +$ git clone https://github.com/giantswarm/swarm-inception.git +$ cd swarm-inception/ +$ make deploy +Configuration file written to swarmconfig.py... +docker build -t registry.giantswarm.io/bant/inception . +... +Creating 'inception' in the 'bant/dev' environment… +Service created successfully! +Starting service 'inception'… +Waiting for 'inception' to get started… +Service 'inception' is up. +You can see all components using this command: + + swarm status inception + +Use http://inception-bant.gigantic.io/bant/dev/hook on Docker Hub's to deploy a service. +``` + +===Kubernetes Cluster=== + +====Keel==== +* [[Kubernetes workflow with Github and Keel|https://itnext.io/setting-up-push-to-deploy-kubernetes-workflow-with-github-and-keel-43173d996587]] + +[[Keel|https://github.com/keel-hq/keel]] adalah alat untuk mengotomatisasi pembaruan penyebaran Kubernetes yang mendukung penyedia Helm Charts dan dapat dijalankan di Google Platform seperti berikut: + +[[|https://keel.sh/]] + +====Rancher==== +[[Rancher|https://rancher.com]] adalah platform perangkat lunak sumber terbuka yang memungkinkan organisasi menjalankan dan mengelola Docker dan Kubernetes dalam produksi. Rancher memasok seluruh tumpukan perangkat lunak yang diperlukan untuk mengelola kontainer dalam produksi. + +[[|https://rancher.com/docs/rancher/v1.6/en/]] + +====OpenFaas==== +Jika Anda membangun project di GitLab maka ada baiknya untuk meninjau [[OpenFaaS Cloud|https://docs.openfaas.com/]]. Layanan ini di Kubernetes terhubung ke instance GitLab sehingga Anda dapat [[menjalankan fungsi Server|https://www.openfaas.com/blog/openfaas-cloud-gitlab/]] yang di-hosting-sendiri di cloud pribadi atau publik. + +[[|https://www.openfaas.com/blog/openfaas-cloud-gitlab/]] + +====OpenShift==== + +* [[Build Triggers Overview|https://docs.okd.io/latest/dev_guide/builds/triggering_builds.html]] +* [[Installing Gogs Git Server on OpenShift|http://www.opensourcerers.org/installing-gogs-git-server-openshift-make-using-webhooks-trigger-builds/]] + +[[OpenShift®|https://www.openshift.com/learn/what-is-openshift]] adalah platform aplikasi cloud Kubernetes hybrid cloud mendukung Red Hat® Enterprise Linux dan standar Docker.

+ +[[|https://www.openshift.com/learn/what-is-openshift]] + +====GitHub Action==== +* [[An example workflow, using the GitHub Action for gcloud|https://github.com/actions/example-gcloud]] +Proses alur kerja, menggunakan [[GitHub Action|https://github.com/actions]] untuk gcloud untuk menyebarkan situs web statis ke Google Kubernetes Engine Cluster yang ada. +[[|https://github.com/actions/example-gcloud/blob/master/.github/main.workflow]] + +Untuk detil lebih lanjut silahkan simak [[Akun GitHub Actions|https://github.com/chetabahana/chetabahana.github.io/wiki/Akun-GitHub-Actions]]. + + +==Project Delivery== +Dengan menggunakan sumber di atas maka kita akan terapkan untuk mendapatkan penerapan yang berkesinambungan. Hal ini penting untuk membangun, menguji, dan merilis perangkat lunak dengan kecepatan dan frekuensi yang lebih besar. +[[|https://thenewstack.io/migrate-from-travisci-to-codefresh/]] + +===Alur=== +[[|https://pbs.twimg.com/profile_banners/2691127848/1539363412/1500x500]] +====Git Commit==== +====Image Push==== + +===Tujuan=== +Karena project yang kita bahas adalah tentang e-Commerce maka tujuan dari CI/CD kita tetapkan untuk menunjang operasi dalam produksi. + +====Produk Unggulan==== +* Menampilkan produk unggulan secara dinamis sesuai Trend. +* Jalankan SEO untuk produk unggulan dari Situs Toko via Google Site untuk berkompetisi di Google Search +* Tampilan data terkini untuk Update Setelan AdWords Secara Otomatis guna peroleh sales return yang paling optimal. + +====Operasi Minimalis==== +* Tidak memerlukan database karena bisa akses dan pakai data di Google Merchant. +* Tidak perlukan hosting berbayar karena Google Site adalah Free dan AppEngine bisa dijalankan secara gratis. + +====Target Terintegrasi==== + +===Optimasi=== +Pendekatan ini membantu mengurangi biaya, waktu, dan risiko pengiriman perubahan dengan memungkinkan pembaruan lebih lanjut untuk aplikasi dalam produksi. Alur dari pilosopi diatur sbb: + +====Optimasi Internal==== +Pengelolaan hasil Optimasi Internal Toko sesuai dengan Publikasi Sesi yg Pertama via Google Sites API. +====Optimasi Eksternal==== +Pendataan hasil Optimasi Eksternal sesuai dengan Publikasi Sesi yg Kedua via Google Content API. +====Optimasi Promosi==== +Pendataan hasil Optimasi Promosi dari kinerja proses ke-1 dan -2 via Google AdWords API. +====Optimasi Penjualan==== +Pengelolaan atas hasil Optimasi Penjualan dari kinerja proses ke-3 via Google AppEngine. + +===Detail Proses=== +Penerapan sumber² CI/CD baik berupa ''[[Continuous-Delivery#layanan|layanan]]'' maupun ''[[Continuous-Delivery#Setup_Server|setup server]]'' dalam rangka mencapai tujuan di atas tentu akan memerlukan pembahasan yang sangat detil seperti sesi ''[[Home|Tutorial-Buka-Toko]]'' ini. + +Oleh karenanya kita akan bagi ke dalam proses demi proses. Pilosopi sederhananya bisa dijabarkan sesuai urutan berikut ini: +====Iklan Shopping==== +Jalankan Iklan Shopping di AdWords untuk dapat data produk yang di rekomendasikan via Google Merchant. +====Pilah Daftar Produk==== +Kemudian dari peta situs toko kita saring daftar semua produk yang memenuhi kriteria via Google AppEngine. +====Simpan Daftar Produk==== +Hasilnya kita masukkan ke Google Merchant sehingga tersimpan menjadi database via Google Content API. +====Saring Peluang Terbaik==== +Dari database ini kita pilah lagi produk yang mempunyai hasil dan peluang terbaik via Google AdWords API. +====Tampilkan Produk Unggulan==== +Selanjutnya kita tampilkan sebagai produk unggulan di Situs Toko dari Google Sites via Google Sites API. + +[[|https://marketleader.github.io/Toko-Chetabahana/]] + +Proses diatas detilnya kita akan bahas satu persatu di sesi² berikutnya. Kemudian semuanya akan dirangkum di ''[[sesi terakhir|https://marketleader.github.io/Toko-Chetabahana/]]'' yang merupakan sesi penutup dari pubikasi ini:
+ + +==''Referensi''== +* [[GitOps-style CI/CD with Cloud Build|https://cloud.google.com/kubernetes-engine/docs/tutorials/gitops-cloud-build]] +* [[Google Cloud Build, CI/CD for static websites|https://liatas.com/posts/hugo-gc-ci-cd/]] +* CI/CD from GitHub to Kubernetes with [[CircleCI|https://medium.com/@dmaas/continuous-deployment-from-github-to-kubernetes-with-circleci-84c2bfdd38f6#becf]] +* Continuous Delivery with Containers on GCP with [[Spinnaker|https://www.spinnaker.io/guides/tutorials/codelabs/gcp-kubernetes-source-to-prod/]] +* Examine [[Spinnaker Vs. Codefresh|https://medium.com/containers-101/spinnaker-vs-codefresh-a843087008c3]] for CI/CD platform on Kubernetes + diff --git a/Continuous-Integration.mediawiki b/Continuous-Integration.mediawiki new file mode 100644 index 000000000000..4e3cdf868389 --- /dev/null +++ b/Continuous-Integration.mediawiki @@ -0,0 +1,3 @@ +[[|https://medium.com/@acep.abdurohman90/continous-integration-dengan-jenkins-dan-deployment-ke-cloud-server-pcf-cc54de120256]] + +[[Substituting variable values|https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values#using_user-defined_substitutions]] \ No newline at end of file diff --git a/Cron.mediawiki b/Cron.mediawiki new file mode 100644 index 000000000000..15a724373048 --- /dev/null +++ b/Cron.mediawiki @@ -0,0 +1,9 @@ +__TOC__ + +https://cloud.google.com/appengine/docs/standard/python/config/cronref#syntax +https://console.cloud.google.com/appengine/cronjobs + +==Referensi== +* [[Reference for cron.yaml|https://cloud.google.com/appengine/docs/standard/python/config/cronref]] +* [[Scheduling Jobs with cron.yaml|https://cloud.google.com/appengine/docs/standard/python3/scheduling-jobs-with-cron-yaml]] +* [[Google App engine needs periodic restarting|https://stackoverflow.com/a/35290296/4058484]] diff --git a/Custom-Branchs.mediawiki b/Custom-Branchs.mediawiki new file mode 100644 index 000000000000..4a0208cd8753 --- /dev/null +++ b/Custom-Branchs.mediawiki @@ -0,0 +1,2 @@ +==''Referensi''== +* [[Code Quality on Saleor|https://codeclimate.com/github/mirumee/saleor/builds]] by [[Codeclimate|https://codeclimate.com/quality/]] \ No newline at end of file diff --git a/Custom-Image.mediawiki b/Custom-Image.mediawiki new file mode 100644 index 000000000000..d5697b8698b8 --- /dev/null +++ b/Custom-Image.mediawiki @@ -0,0 +1,3 @@ +__TOC__ +==Referensi== +* [[Creating, deleting, and deprecating custom images|https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#creating_a_custom_image]] \ No newline at end of file diff --git a/Cygwin.mediawiki b/Cygwin.mediawiki new file mode 100644 index 000000000000..48dd23bde68a --- /dev/null +++ b/Cygwin.mediawiki @@ -0,0 +1,444 @@ +__TOC__ +==Install== +* [[Cygwin Installation|https://cygwin.com/install.html]] +* [[Installing CYGWIN + SSHD on windows|https://gist.github.com/roxlu/5038729]] + +Pada dasarnya ada perbedaan signifikan antara sistem operasi dari pengguna internet dan penyedia internet. Sebagian besar client menggunakan [[Windows|https://id.wikipedia.org/wiki/Microsoft_Windows]] yang berawal mula dari sistem operasi [[DOS|https://id.wikipedia.org/wiki/MS-DOS]] sedangkan sisi server menggunakan [[Linux|https://id.wikipedia.org/wiki/Linux]] yang bekerja dengan sistem operasi [[Unix|https://id.wikipedia.org/wiki/Unix]]. +

+Jika Anda mengembangkan projek dengan sistem Windows maka Anda akan banyak menemukan konflik konfigurasi dengan Linux. Untuk mengatasi hal ini maka kita perlu sistem dengan pola Unix yang bekerja dengan Sistem Windows. Salah satu projek yang dikenal adalah ''[[Cygwin|https://id.wikipedia.org/wiki/Cygwin]]''. +

+[[|https://cygwin.com/install.html]] + +===Users=== +``` +$ id +uid=197608(Chetabahana) +gid=197121(None) +groups=197121(None),544(Administrators),545(Users),4(INTERACTIVE),66049(CONSOLE LOGON), +11(Authenticated Users),15(This Organization),4095(CurrentSession),66048(LOCAL), +262154(NTLM Authentication),405504(High Mandatory Level) +``` +===Groups=== +``` +$ groups +None +Administrators +Users +INTERACTIVE +CONSOLE LOGON +Authenticated Users +This Organization +CurrentSession +LOCAL +NTLM Authentication +High Mandatory Level +``` + +==Struktur== +* [[Symbolic link|https://en.wikipedia.org/wiki/Symbolic_link]]: [[Windows - mklink|https://en.wikipedia.org/wiki/NTFS_symbolic_link]] vs [[Unix - ln|https://en.wikipedia.org/wiki/Ln_(Unix)]] +* [[Cygwin Repositori Summary|https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=summary]] + +``` +C:\Users\Chetabahana> MKLINK +Creates a symbolic link. + +MKLINK [[/D] | [/H] | [/J]] Link Target + + /D Creates a directory symbolic link. Default is a file + symbolic link. + /H Creates a hard link instead of a symbolic link. + /J Creates a Directory Junction. + Link specifies the new symbolic link name. + Target specifies the path (relative or absolute) that the new link + refers to. +``` +Cara membuat symbolic link untuk directory: +* [[MKLINK “directory junction” vs “directory symbolic link”?|https://superuser.com/questions/343074/directory-junction-vs-directory-symbolic-link]] + +``` +C:\Users\Chetabahana>CD C:\ +C:\> MKDIR D:\Cygwin +C:\> MKLINK /J cygwin D:\Cygwin +Junction created for cwgwin <<===>> D:\Cygwin +``` + +[[|https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/mklink]] + +Cara membuat symbolic link untuk file: +* [[How to create a symbolic/soft link to a file not a folder|https://superuser.com/a/661197/505363]] +``` +C:\> cd "C:\Program Files\Google\Cloud SDK" + +C:\Program Files\Google\Cloud SDK>MOVE cloud_env.bat +"C:\Users\Chetabahana\Documents\Project\Google\GCE\Shell\backend\windows\gcloud" + +C:\Program Files\Google\Cloud SDK>MKLINK cloud_env.bat +"C:\Users\Chetabahana\Documents\Project\Google\GCE\Shell\backend\windows\gcloud\cloud_env.bat" +symbolic link created for cloud_env.bat <<===>> +C:\Users\Chetabahana\Documents\Project\GitHub\Chetabahana\backend\windows\gcloud\cloud_env.bat +``` +Catatan: Bila timbul error karena masalah "permission", silahkan ulangi membuka jendela CMD dengan cara "[[Run As Administrator|https://winpoin.com/apa-itu-run-as-administrator-apa-fungsinya-dan-bagaimana-mengaktifkannya/]]". + +===System=== + +Untuk menampilkan isi direktori, Anda dapat menggunakan perintah ls atau dir. ls -la akan memberikan rincian lebih lanjut, termasuk izin akses file, ukuran dan tanggal modifikasi. + +``` +$ uname -a | head -n 1 +CYGWIN_NT-6.1 Dekstop 3.0.7(0.338/5/3) 2019-04-30 18:08 x86_64 Cygwin + +$ pwd +/home/Chetabahana + +$ ls / +bin Cygwin.bat Cygwin.ico Cygwin-Terminal.ico dev etc home lib sbin tmp usr var + +$ export CYGWIN="winsymlinks:native" + +$ ls -la / +lrwxrwxrwx 1 Chetabahana None 18 Apr 14 14:41 / -> /cygdrive/d/Cygwin + +$ ls -la /cygdrive/d/Cygwin +total 421 +drwxrwx---+ 1 Chetabahana None 0 Apr 16 11:55 . +drwxrwx---+ 1 SYSTEM SYSTEM 0 Apr 16 10:43 .. +drwxr-xr-x+ 1 Chetabahana None 0 Apr 14 23:48 bin +-rwxr-xr-x 1 Chetabahana Administrators 57 Apr 14 14:54 Cygwin.bat +-rw-r--r-- 1 Chetabahana Administrators 157097 Apr 14 14:54 Cygwin.ico +-rw-r--r-- 1 Chetabahana Administrators 53342 Apr 14 14:54 Cygwin-Terminal.ico +drwxr-xr-x+ 1 Chetabahana None 0 Apr 14 14:49 dev +drwxrwx---+ 1 Chetabahana None 0 Apr 14 23:49 etc +drwxrwxrwt+ 1 Chetabahana None 0 Apr 14 14:57 home +drwxr-xr-x+ 1 Chetabahana None 0 Apr 14 23:48 lib +drwxr-xr-x+ 1 Chetabahana None 0 Apr 14 14:48 sbin +drwxrwxrwt+ 1 Chetabahana None 0 Apr 16 10:36 tmp +drwxr-xr-x+ 1 Chetabahana None 0 Apr 14 21:30 usr +drwxrwx---+ 1 Chetabahana None 0 Apr 14 14:48 var + +``` + +[[|https://cygwin.com/cygwin-ug-net/cygwin-ug-net.html]] + +Perhatikan bahwa drive di Cygwin diperlakukan sebagai direktori, dan penggunaan garis miring di tempat backslash DOS (d:/Cygwin bukannya d:\Cygwin). + +===Cygdrive=== +* [[Enable native NTFS symbolic links for Cygwin|https://stackoverflow.com/questions/18654162/enable-native-ntfs-symbolic-links-for-cygwin/]] + +Anda dapat menggunakan spesifikasi direktori canonic Cygwin, yang memetakan semua drive ke subdirektori di direktori /cygdrive/. Contoh: DOS C: dapat diakses di Cygwin dengan /cygdrive/c, atau D: /cygdrive/d, dll. + +``` +$ ls /cygdrive +c d + +$ ls /cygdrive/c +'$Recycle.Bin' 'Documents and Settings' Recovery autoexec.bat +grldr 'System Volume Information' Boot hiberfil.sys +bootmgr Users BOOTSECT.BAK pagefile.sys +Windows config.sys 'Program Files' winx.ld +cygwin ProgramData + +$ ls -la /cygdrive/c | grep "\->" +lrwxrwxrwx 1 Chetabahana None cygwin -> /cygdrive/d/Cygwin +lrwxrwxrwx 1 SYSTEM SYSTEM Documents and Settings -> /cygdrive/c/Users + +$ ls -la /cygdrive/c/Users +drwxr-xr-x+ 1 Administrators . +d---r-x---+ 1 NT SERVICE+TrustedInstaller .. +lrwxrwxrwx 1 SYSTEM 'All Users' -> /cygdrive/c/ProgramData +drwxrwx---+ 1 Chetabahana Chetabahana +drwxr-xr-x+ 1 Administrators Default +lrwxrwxrwx 1 SYSTEM 'Default User' -> /cygdrive/c/Users/Default +-rwxr-xr-x+ 1 SYSTEM desktop.ini +drwxrwxrwx+ 1 Administrators Public +drwxrwx---+ 1 SYSTEM temp +drwxrwx---+ 1 SYSTEM UpdatusUser + +$ ls /cygdrive/d +'$RECYCLE.BIN' Cygwin Docker GitHub Google 'System Volume Information' + +$ ls -la /cygdrive/c/Users/Chetabahana | grep "\->" +lrwxrwxrwx 1 Chetabahana None .docker -> /cygdrive/d/Docker + +$ mkdir /cygdrive/c/Users/Chetabahana/Documents/Project +$ ln -s -v /cygdrive/d/GitHub /cygdrive/c/Users/Chetabahana/Documents/GitHub +$ ln -s -v /cygdrive/d/Google /cygdrive/c/Users/Chetabahana/Documents/Google + +$ ls -l /cygdrive/c/Users/Chetabahana/Documents/Project +lrwxrwxrwx 1 Chetabahana None 18 Apr 14 14:23 GitHub -> /cygdrive/d/GitHub +lrwxrwxrwx 1 Chetabahana None 18 Apr 14 14:23 Google -> /cygdrive/d/Google +``` + +==Settings== +===Default=== +* [[Mapping Windows accounts to POSIX|http://www.cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping]] +``` +$ mkpasswd +SYSTEM:*:18:18:U-NT AUTHORITY\SYSTEM,S-1-5-18:/home/SYSTEM:/bin/bash +LOCAL SERVICE:*:19:19:U-NT AUTHORITY\LOCAL SERVICE,S-1-5-19:/:/sbin/nologin +NETWORK SERVICE:*:20:20:U-NT AUTHORITY\NETWORK SERVICE,S-1-5-20:/:/sbin/nologin +Administrators:*:544:544:U-BUILTIN\Administrators,S-1-5-32-544:/:/sbin/nologin +NT SERVICE+TrustedInstaller:*:328384:328384:U-NT SERVICE\TrustedInstaller,S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464:/:/sbin/nologin +Administrator:*:197108:197121:U-Dekstop\Administrator,S-1-5-21-3900395517-206185552-2429368915-500:/home/Administrator:/bin/bash +Chetabahana:*:197608:197121:U-Dekstop\Chetabahana,S-1-5-21-3900395517-206185552-2429368915-1000:/home/Chetabahana:/bin/bash +cyg_server:*:197610:197121:U-Dekstop\cyg_server,S-1-5-21-3900395517-206185552-2429368915-1002:/home/cyg_server:/bin/bash +Guest:*:197109:197121:U-Dekstop\Guest,S-1-5-21-3900395517-206185552-2429368915-501:/home/Guest:/bin/bash +UpdatusUser:*:197609:197121:U-Dekstop\UpdatusUser,S-1-5-21-3900395517-206185552-2429368915-1001:/home/UpdatusUser:/bin/bash +``` +===Permission=== +* [[Cygwin, access control, default groups|http://www.devgrok.com/2015/07/cygwin-access-control-default-groups.html]] +``` +$ mkpasswd -l -u Chetabahana >> /etc/passwd + +$ cat /etc/passwd +Chetabahana:*:197608:197121:U-Dekstop\Chetabahana,... + +$ sed -i "/197121/544/g" /etc/passwd && cat /etc/passwd +Chetabahana:*:197608:544:U-Dekstop\Chetabahana,... + +$ id +uid=197608(Chetabahana) +gid=544(Administrators) +groups=544(Administrators),197121(None),.. + +$ chown -R Chetabahana:Administrators /* && cd ~ && ls -al +drwxrwxr-x+ 1 Chetabahana Administrators 0 Jun 9 03:40 . +drwxrwxrwt+ 1 Chetabahana Administrators 0 May 29 18:44 .. +-rw------- 1 Chetabahana Administrators 265 Jun 9 02:44 .bash_history +-rwxr-xr-x 1 Chetabahana Administrators 1494 May 29 18:42 .bash_profile +-rwxr-xr-x 1 Chetabahana Administrators 5645 May 29 18:42 .bashrc +drwxrwxr-x+ 1 Chetabahana Administrators 0 Jun 9 03:46 .config +-rwxr-xr-x 1 Chetabahana Administrators 1919 May 29 18:42 .inputrc +-rwxr-xr-x 1 Chetabahana Administrators 1236 Jun 9 04:18 .profile + + +$ cd ~ +$ mkdir .config +$ cat <<'EOF' >> .config/dacl +user::rwx +group::rwx +other:r-x +default:user::rwx +default:group::rwx +default:other:r-x +EOF +$ cd /bin && find $1 -type d -exec setfacl -f ~/.config/dacl {} \; +$ getfacl . +# file: . +# owner: Chetabahana +# group: Administrators +user::rwx +group::rwx +other::r-x +default:user::rwx +default:group::rwx +default:other::r-x + +$ ls -al /* +-rwxr-xr-x+ 1 Chetabahana Administrators 88 May 29 18:42 /Cygwin.bat +-rw-r--r-- 1 Chetabahana Administrators 157097 May 29 18:44 /Cygwin.ico +-rw-r--r-- 1 Chetabahana Administrators 53342 May 29 18:44 /Cygwin-Terminal.ico + +/bin: +total 36287 +drwxrwxr-x+ 1 Chetabahana Administrators 0 Jun 9 03:38 . +lrwxrwxrwx 1 Administrators None 18 May 29 14:55 .. -> /cygdrive/d/Cygwin +-rwxr-xr-x 1 Chetabahana Administrators 64019 Feb 4 2017 '[.exe' +-rwxr-xr-x 1 Chetabahana Administrators 51219 Mar 31 18:26 addftinfo.exe +lrwxrwxrwx 1 Chetabahana Administrators 10 May 29 18:41 apropos -> whatis.exe +-rwxr-xr-x 1 Chetabahana Administrators 29715 Feb 4 2017 arch.exe +-rwxr-xr-x 2 Chetabahana Administrators 100883 Feb 17 2017 ash.exe +lrwxrwxrwx 1 Chetabahana Administrators 8 May 29 18:41 awk -> gawk.exe +... +... +``` + +==Arsitektur== +* [[About your profile|https://help.github.com/en/articles/about-your-profile]] +* [[About your organization's profile|https://help.github.com/en/articles/about-your-organizations-profile]] + +===Public=== +* [[Chetabahana - User profile|https://github.com/chetabahana]] +* [[MarketLeader - Organization profile|https://github.com/MarketLeader]] + +``` +$ ls /cygdrive/d/GitHub +Chetabahana MarketLeader + +$ ls /cygdrive/d/GitHub/Chetabahana +backend default drupal joomla market portfolio wordpress + +$ ls /cygdrive/c/Users/Chetabahana/Documents/GitHub/Chetabahana +backend default drupal joomla market portfolio wordpress + +$ ls /cygdrive/d/GitHub/MarketLeader +Google-AdWords-API Google-Sites-API Google-Trends-API Google-Content-API +Toko-Chetabahana Tutorial-Buka-Toko + +$ ls /cygdrive/c/Users/Chetabahana/Documents/GitHub/MarketLeader +Google-AdWords-API Google-Sites-API Google-Trends-API Google-Content-API +Toko-Chetabahana Tutorial-Buka-Toko +``` + +===Private=== +* [[Google Cloud Platform - Products|https://cloud.google.com/products/]] +* [[Google Cloud Platform - Documentation|https://cloud.google.com/docs/]] + +Google Cloud Platform +``` +$ ls /cygdrive/d/Google +GAE GCE GCR GCS + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google +GAE GCE GCR GCS + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GAE +Java Node Php Python + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Php +drupal joomla wordpress + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Python +default market portfolio + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GCE +Shell + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GCE/Shell +backend +``` +home +``` +C:\ cd C:\Users\Chetabahana\Documents\Google\GCE\Shell\backend +C:\ mkdir -p windows/cygwin/home && cd windows/cygwin/home +C:\ mklink /j Chetabahana D:\Cygwin\home\Chetabahana +``` + +==Konfigurasi== +===Virtual-Env=== +* [[Python 'Virtual-Env' works to run Saleor on Cygwin|https://github.com/MarketLeader/Toko-Chetabahana/releases]] + +``` +$ ls /cygdrive/c/Users/Chetabahana/Documents/GitHub/MarketLeader/Toko-Chetabahana +_config.yml docs LICENSE README.md virtual-env + +$ cd /cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Python/market +$ ln -s -v /cygdrive/c/Users/Chetabahana/Documents/GitHub/MarketLeader/Toko-Chetabahana/virtual-env virtual-en +'virtual-en' -> '/cygdrive/c/Users/Chetabahana/Documents/GitHub/MarketLeader/Toko-Chetabahana/virtual-env' + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Python/market/virtual-env +bin get-pip.py include lib pyvenv.cfg requirements.txt share + +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Python/market/virtual-env/bin +__pycache__ easy_install-3.7 pybabel rst2man.py +activate faker pycodestyle rst2odt.py +activate.csh gprof2dot pygmentize rst2odt_prepstyles.py +activate.fish gunicorn pyjwt rst2pseudoxml.py +autopep8 gunicorn_paster python rst2s5.py +cairosvg isympy python3 rst2xetex.py +celery jp.py raven rst2xml.py +chardetect markdown_py rst2html.py rstpep2html.py +django-admin pip rst2html4.py sqlformat +django-admin.py pip3 rst2html5.py uwsgi.exe +easy_install pip3.7 rst2latex.py weasyprint + +``` + +===Runtime Server=== + +``` +$ ls /cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Python/market +_common.env LICENSE scripts +apollo.config.js locale setup.cfg +app.json manage.py static +app.yaml media templates +CHANGELOG.md package.json tests +cloudbuild.yaml package-lock.json tox.ini +common.env Procfile tsconfig.json +deployment README.md tslint.json +docker-compose.override.yml requirements.txt virtual-env +docker-compose.yml requirements_dev.txt webpack.config.js +Dockerfile runtime.txt webpack.d.ts +docs saleor webpack-bundle.json + +$ ln -s -v /cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Python/market /srv +'/srv' -> '/cygdrive/c/Users/Chetabahana/Documents/Google/GAE/Python/market' + +$ ls / +bin dev home sbin tmp var etc lib srv usr + +$ ls -la / | grep "\->" +lrwxrwxrwx 1 Chetabahana None 18 Apr 14 14:41 / -> /cygdrive/d/Cygwin + +$ ls /srv +_common.env LICENSE scripts +apollo.config.js locale setup.cfg +app.json manage.py static +app.yaml media templates +CHANGELOG.md package.json tests +cloudbuild.yaml package-lock.json tox.ini +common.env Procfile tsconfig.json +deployment README.md tslint.json +docker-compose.override.yml requirements.txt virtual-env +docker-compose.yml requirements_dev.txt webpack.config.js +Dockerfile runtime.txt webpack.d.ts +docs saleor webpack-bundle.json + +$ cd /srv/virtual-env/bin +$ ln -s /usr/bin/python python +$ ln -s python python3 + +$ ls -l /srv/virtual-env/bin/python* +lrwxrwxrwx 1 /srv/virtual-env/bin/python -> /usr/bin/python +lrwxrwxrwx 1 /srv/virtual-env/bin/python3 -> python + +$ chown -R Chetabahana:Administrators /bin + +$ ls -l /usr/bin/python* +lrwxrwxrwx 1 Chetabahana Administrators /usr/bin/python3.7 -> python3.7m.exe +-rwxr-xr-x 1 Chetabahana Administrators /usr/bin/python3.7m.exe + +$ ls -l /usr/bin/pip* +-rwxr-xr-x 1 Chetabahana Administrators /usr/bin/pip3.7 + +cd /usr/bin +ln -s python3.7 python3 +ln -s python3 python +ln -s pip3.7 pip + +$ which python +/usr/bin/python + +$ which pip +/usr/bin/pip + +pip install --user pipenv +``` + +==Pengembangan== +* [[Bagan Projek|https://marketleader.github.io/#bagan-projek]] +Struktur seperti yang diuraikan di atas dibuat sedemikian rupa untuk nantinya dikembangkan sebagai dasar dari ''[[Bagan Project|https://github.com/chetabahana/chetabahana.github.io/wiki/Bagan-Project]]'' yang sudah dibahas pada sesi sebelumnya. + + +===Management=== +* [[How to manage a development project using Notepad++|http://docs.notepad-plus-plus.org/index.php/Project_Management]] + +Untuk menyusun repository ke bagan-projek maka nama folder dan file akan menjadi point penting. +

+Dengan menggunakan module [[Workspace Management|http://docs.notepad-plus-plus.org/index.php/Project_Management#Workspace_management]] dari Notepad++ maka dari penyusunan file dan folder dapat dihasilkan ''[[Workspace files|https://raw.githubusercontent.com/MarketLeader/Google-Sites-API/master/kelola_atribut/data_terkini/Workspace]]'' sampai ke ukuran 10MB dengan cepat dan mudah. +

+[[|https://chetabahana.github.io/images/cygwin/Workspace.png]] +

+Dengan [[plugin git|https://webdeveloperankitakulkarni.wordpress.com/2013/10/19/git-with-notepad/]] yang tersedia untuk dipasang di Notepad++ maka kita bisa update sekaligus build tanpa harus keluar dari editor untuk mencari repository yang terkait. +

+Dengan demikian penyusunan projek kedalam Workspace seperti ini akan memudahkan kita fokus untuk menyempurnakan setiap bagian yang diperlukan untuk sampai ke tujuan dari projek ini. + +===Bagan Esekusi=== +Selanjutnya dengan penyusunan files dan folder ini bisa kembangkan untuk dijadikan ke Bagan Esekusi ''[[secara otomatis|https://github.com/chetabahana/chetabahana.github.io/wiki/Bagan-Project]]''. Hal ini dimungkinkan untuk dilakukan karena dalam Workspace kita bisa susun tanpa harus terikat susunan alphabet. + +Secara lengkap skema projek akan mengikuti bagan berikut: + +[[|https://chetabahana.github.io/#chetabahana-skema]] + +Untuk menuju ke pola ini maka kita perlu siapkan sarana dari tiap bagian bagan. + +Pada sesi ini selanjutnya kita bahas secara detil untuk tema ''[[Home|Buka Toko]]'' sedangkan tema lain akan kita bahas pada sesi² berikutnya. \ No newline at end of file diff --git a/Django.mediawiki b/Django.mediawiki new file mode 100644 index 000000000000..3c2dae4fe55e --- /dev/null +++ b/Django.mediawiki @@ -0,0 +1,249 @@ +Dalam sesi ini, kita akan bahas tentang penyetelan untuk kerangka kerja [[Apa-Itu-Saleor#django|Django]]. + +==Arsitektur== +* [[Tutorial Django|https://docs.djangoproject.com/en/2.2/intro/tutorial01/]]
+* [[DJANGO_SETTINGS_MODULE|https://stackoverflow.com/a/47700674/4058484]]
+[[|https://www.webforefront.com/django/setupdjangocontent.html]] + +===Memulai=== +* [[Django admin and manage.py|https://docs.djangoproject.com/en/2.2/ref/django-admin]]
+* [[Python 'Virtual-Env' works to run Saleor on Cygwin|https://github.com/MarketLeader/Toko-Chetabahana/releases]]
+``` +$ source virtual-env/bin/activate +(virtual-env)$ pip install Django +(virtual-env)$ python -m django --version +2.2 +(virtual-env)$ export DJANGO_SETTINGS_MODULE=mysite.settings +(virtual-env)$ django-admin help +Type 'django-admin help ' for help on a specific subcommand. +Available subcommands: +[django] + check + compilemessages + createcachetable + dbshell + diffsettings + dumpdata + flush + inspectdb + loaddata + makemessages + makemigrations + migrate + runserver + sendtestemail + shell + showmigrations + sqlflush + sqlmigrate + sqlsequencereset + squashmigrations + startapp + startproject + test + testserver +``` + +====Project==== +* [[Start project|https://docs.djangoproject.com/en/2.2/ref/django-admin/#django-admin-startproject]]
+ +``` +(virtual-env)$ django-admin startproject saleor +saleor/ + manage.py + saleor/ + __init__.py + settings.py + urls.py + wsgi.py + static/ + templates/ +``` + + + + + + + + + + + + +
filemappingdokumentasi
[[saleor/|https://github.com/mirumee/saleor]][[fork directory|https://github.com/MarketLeader/Tutorial-Buka-Toko]] / [[branch directory|https://github.com/MarketLeader/Tutorial-Buka-Toko/tree/Chetabahana/saleor]] / [[virtual-env|https://github.com/MarketLeader/Toko-Chetabahana/tree/master/virtual-env]][[Apa-Itu-Saleor|saleor]]
[[manage.py|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/manage.py]]set("DJANGO_SETTINGS_MODULE", "saleor.settings")
from [[django.core.management|https://github.com/MarketLeader/Toko-Chetabahana/tree/master/virtual-env/lib/python3.7/site-packages/django/core/management]] import [[execute_from_command_line|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/core/management/__init__.py#L378]]
[[Django#arsitektur|Arsitektur]]
[[saleor/__init__.py|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/__init__.py]]from [[.celeryconf|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/celeryconf.py#L7]] import [[app|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/celery/app/base.py#L1279]] as [[celery_app|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/celery/contrib/pytest.py#L148]][[Celery|Celery]]
[[saleor/settings.py|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/settings.py]]ROOT_URLCONF = 'saleor.urls'
WSGI_APPLICATION = 'saleor.wsgi.application'
[[Django#setting|Setting]]
[[saleor/urls.py|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/urls.py]]from [[django.conf|https://github.com/MarketLeader/Toko-Chetabahana/tree/master/virtual-env/lib/python3.7/site-packages/django/conf]] import [[settings|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/conf/global_settings.py]][[Django#url-router|URL-Router]]
[[saleor/wsgi.py|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/wsgi/__init__.py]]from [[django.core.wsgi|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/core/wsgi.py]] import [[get_wsgi_application|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/core/wsgi.py#L5]][[Django#Web_Gateway|Web-Gateway]]
[[static/|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/conf/global_settings.py#L599]]
[[media/|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/conf/global_settings.py#L266]]
[[STATICFILES_STORAGE|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/settings.py#L407]] / [[DEFAULT_FILE_STORAGE|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/settings.py#L410]]
[[django.contrib.staticfiles.storage.StaticFilesStorage|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/contrib/staticfiles/storage.py#L22]]
+[[django.core.files.storage.FileSystemStorage|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/core/files/storage.py#L170]]
[[Django#static-url|Static URL]]
[[templates/|https://github.com/MarketLeader/Tutorial-Buka-Toko/tree/Chetabahana/templates]]templates directory[[Django#templates|Templates]]
+ +====Aplikasi==== +* [[Database setup|https://docs.djangoproject.com/en/2.2/intro/tutorial02/]]
+``` +(virtual-env)$ cd saleor +(virtual-env)$ python manage.py runserver +(virtual-env)$ python manage.py startapp products +saleor/ + manage.py + saleor/ + products/ + migrations/ + __init__.py + models.py + tests.py + views.py + __init__.py + settings.py + urls.py + wsgi.py + static/ + templates/ + products/ +``` +[[|https://www.pythonstudio.us/system-administration/creating-web-pages-with-the-jinja-templating-system.html]] + +===Cara Kerja=== +* [[Settings|https://docs.djangoproject.com/en/2.2/ref/settings/]]
+ +====Setting==== +* [[Django settings|https://docs.djangoproject.com/en/2.2/topics/settings/]] +* [[Django ALLOWED_HOSTS IPs range|https://stackoverflow.com/a/37033587/4058484]] + +[[|https://medium.com/wemake-services/managing-djangos-settings-e2b7f496120d]] + + +====URL Router==== +* [[URL dispatcher|https://docs.djangoproject.com/en/2.2/topics/http/urls/]]
+Untuk pemetaan URL aplikasi, Django membuat modul Python yang disebut URLconf (konfigurasi URL). Modul ini merupakan mapping antara ekspresi jalur URL ke fungsi Python (views). + +[[|https://www.datacamp.com/community/tutorials/web-development-django]] + + +
implementasi
+ + + + + + +
filemappingdokumentasi
[[saleor/urls.py|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/saleor/urls.py]]from [[django.conf|https://github.com/MarketLeader/Toko-Chetabahana/tree/master/virtual-env/lib/python3.7/site-packages/django/conf]] import [[settings|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/django/conf/global_settings.py]][[Configuration|https://docs.getsaleor.com/en/latest/gettingstarted/configuration.html]]
+ +====Web Gateway==== +[[|https://community.mcafee.com/t5/Documents/Web-Gateway-Understanding-the-Rule-Engine-and-Optimizing-your/ta-p/553870]] + + +===Static URL=== +* [[Serving static files in Django|https://www.agiliq.com/blog/2013/03/serving-static-files-in-django/]] +====Gambar==== +``` +SCRIPT_NAME=/market +MEDIA_URL=/market/media/ +STATIC_URL=/market/static/ +``` + +====File js/css==== +[[Webpack|https://webpack.js.org/guides/getting-started/]] digunakan untuk mengkompilasi modul JavaScript. Setelah diinstal, Anda dapat berinteraksi dengan baik dari CLI atau API-nya. + +[[|https://blog.angularindepth.com/this-is-how-angular-cli-webpack-delivers-your-css-styles-to-the-client-d4adf15c4975]] + + +===Templates=== +[[|https://www.tangowithdjango.com/book17/chapters/templates.html]] + +Secara detil setiap page di atas diproduksi seperti berikut + +[[|https://www.w3school.in/django-template-system/]] + +==Konfigurasi== +[[|https://clarklabs.lib.umich.edu/2016/02/24/migrating-from-php-to-django/]] + +===Core=== +====init.py==== +====manage.py==== +``` +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dummy.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() + +``` +===Setelan=== +====urls.py==== +* [[Django url debugger|https://stackoverflow.com/a/3616586/4058484]] +``` +urlpatterns = non_translatable_urlpatterns + i18n_patterns( + *translatable_urlpatterns) + +if settings.DEBUG: + import debug_toolbar + urlpatterns += [ + url(r'^__debug__/', include(debug_toolbar.urls)), + # static files (images, css, javascript, etc.) + url(r'^static/(?P.*)$', serve)] + static( + '/media/', document_root=settings.MEDIA_ROOT) +``` +Anda dapat mengasumsikan, bahwa request melewati urlpatterns dari atas ke bawah dengan pola yang pertama yang cocok (Y) akan dieksekusi seperti analogi berikut: +

+* jika Y sebelum X: maka pola Y akan dieksekusi (tetapi tidak selalu seharusnya) +* jika X adalah sebelum Y: pola X tidak cocok dengan url (tetapi harus didahulukan) + +====wsgi.py==== +* [[How to deploy with WSGI|https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/]]
+* [[How to use Django with Gunicorn|https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/gunicorn/]]
+ +[[Web Server Gateway Interface (WSGI)|https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface]] adalah konvensi untuk meneruskan URL ke aplikasi web atau kerangka kerja yang ditulis dalam bahasa pemrograman Python. + +[[|https://learnbatta.com/blog/understanding-request-response-lifecycle-in-django-29/]] + +Untuk project saleor pengembang menggunakan uwsgi yang disetel fia ''[[Dockerfile|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/Dockerfile#L72]]'': +``` +CMD ["uwsgi", "--ini", "/app/saleor/wsgi/uwsgi.ini"] +``` +Untuk pemasangan di GCP maka [[sesuai arahan|https://cloud.google.com/appengine/docs/flexible/python/runtime#application_startup]] kita pakai gunicorn via entry di app.yaml: +``` +entrypoint: gunicorn -b :$PORT saleor.wsgi --timeout 120 +``` +Pembahasan lebih lanjut silahkan simak di sesi [[Gunicorn]]. + + +====settings.py==== +* [[saleor.core.storages.S3MediaStorage|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/core/storages.py#L5]] +* [[storages.backends.s3boto3.S3Boto3Storage|https://github.com/MarketLeader/Toko-Chetabahana/blob/master/virtual-env/lib/python3.7/site-packages/storages/backends/s3boto3.py#L171]] + +[[|http://django-easy-tutorial.blogspot.com/2017/03/django-templates-and-static-files.html]] + +Untuk file static/media sesuai [[requirements.txt|https://github.com/mirumee/saleor/blob/master/requirements.txt#L45]] Aplikasi Saleor menggunakan [[django-storages|https://django-storages.readthedocs.io/en/latest/index.html]]: versi [[1.7.1|https://github.com/jschneier/django-storages/releases/tag/1.7.1]] disetel di [[settings.py|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/Chetabahana/saleor/settings.py#L406]] ke [[AWS Storage|https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html]] via migrasi [[boto3 library|https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#migrating-boto-to-boto3]] sebagai berikut: +``` +if AWS_STORAGE_BUCKET_NAME: + STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' + +if AWS_MEDIA_BUCKET_NAME: + DEFAULT_FILE_STORAGE = 'saleor.core.storages.S3MediaStorage' + THUMBNAIL_DEFAULT_STORAGE = DEFAULT_FILE_STORAGE +``` + +Pembahasan lebih lanjut silahkan simak di sesi setelan [[Storage#Setelan|GCP Storage]]. + +===Penerapan=== +====views.py==== +====models.py==== +====migrate.py==== + + + +==''Referensi''== +* [[WSGI master|https://www.slideshare.net/GrahamDumpleton/secrets-of-a-wsgi-master]]
diff --git a/Drupal.mediawiki b/Drupal.mediawiki new file mode 100644 index 000000000000..5a0cb2e76a80 --- /dev/null +++ b/Drupal.mediawiki @@ -0,0 +1 @@ +https://cloud.google.com/solutions/drupal/setup-drupal \ No newline at end of file diff --git a/Firewall.mediawiki b/Firewall.mediawiki new file mode 100644 index 000000000000..a971aeccd4ce --- /dev/null +++ b/Firewall.mediawiki @@ -0,0 +1,9 @@ + +===Connection Reset by Peer ...=== +http://www.candra.web.id/mengatasi-network-errror-tcp_error-connection-reset-by-peer/ + +https://stackoverflow.com/questions/1434451/what-does-connection-reset-by-peer-mean + +https://www.washington.edu/computing/unix/permissions.html + +https://superuser.com/a/126075/505363 \ No newline at end of file diff --git a/Git-for-Windows.mediawiki b/Git-for-Windows.mediawiki new file mode 100644 index 000000000000..83bd6789f5e5 --- /dev/null +++ b/Git-for-Windows.mediawiki @@ -0,0 +1,19 @@ +https://gitforwindows.org/ + + +[[|https://gitforwindows.org/]] + +https://dotnet.microsoft.com/download/thank-you/net48 + +https://desktop.github.com/ + +[[|https://chetabahana.github.io/images/github/skema/private.png]] + +https://github.com/desktop/desktop/issues/4054#issuecomment-367567297 + +https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/tag/1.18.5 + +==''Referensi''== +https://stackoverflow.com/questions/29542856/gitignore-blank-in-windows-explorer + +https://chrisjean.com/git-submodules-adding-using-removing-and-updating/ \ No newline at end of file diff --git a/Google Cloud SDK.mediawiki b/Google Cloud SDK.mediawiki new file mode 100644 index 000000000000..f30abe5ea015 --- /dev/null +++ b/Google Cloud SDK.mediawiki @@ -0,0 +1,110 @@ +Setelah Anda mendapat gambaran tentang ''[[Konsep Dasar|https://github.com/MarketLeader/marketleader.github.io/wiki]]'' dari projek ini maka kita akan mulai masuk ke tahapan untuk mewujudkannya kedalam bentuk ril. Sesuai ''[[Skema Kerja|https://marketleader.github.io/]]'' maka sebagai tahap awal kita perlu membuat website eCommerce untuk dapat menjalankan bisnis secara online. + +__TOC__ +==Metoda Pemilihan== +[[|https://github.com/chetabahana/chetabahana.github.io/wiki/Mapping#Package]] + +Di sesi ini kita akan bahas secara detil bagaimana caranya agar kita mempersiapkan apa saja yang dibutuhkan untuk menjalankan bisnis eCommerce. + +Sebelum kita melangkah lebih jauh kita perlu pertimbangkan segala hal segi baik biaya, waktu dan tenaga. Hal yang paling penting selayaknya orang yang akan terjun ke dunia bisnis adalah memilih jenis dan metoda apa yang akan kita jalankan. + +===Kenapa Saleor=== + +Untuk memilih jenis eCommerce maka sebaiknya kita mulai dari bahasa pemrograman di web. Dari penjelasan di sesi sebelumnya kita sudah mendapatkan data [[bahasa pemrogranan web|https://github.com/chetabahana/chetabahana.github.io/wiki/Situs-Online#bahasa-web]] yang perkembangannya paling menjanjikan yaitu ''[[Phyton|https://stackoverflow.blog/2017/09/06/incredible-growth-python/]]''. + +Jadi untuk tutorial eCommerce kita bisa cari projek apa di GitHub yang paling trend dapat bintang (''[[Most Starts|https://help.github.com/articles/about-stars/]]'') dengan cara penelusuran seperti berikut ini: + +'''''https://github.com/search?type=Repositories&s=stars&q=python+ecommerce''''' + +Dengan hasil pencaharian di atas maka kita dapatkan projek bernama ''[[Apa Itu Saleor|Saleor|]]'' dari [[Mirumee Software|http://mirumee.com/]]. Projek ini kita akan pakai sebagai tutorial dengan cara ''[[fork|https://help.github.com/articles/fork-a-repo/]]'' dahulu [[reponya|https://github.com/mirumee/saleor]] kedalam [[organisasi|https://github.com/MarketLeader/Tutorial-Buka-Toko]]. + +[[Apa Itu Saleor|]] + +===Kenapa Docker=== +Cara terbaik untuk menjalankan aplikasi di web adalah menempatkannya di server. + +Umumnya pada server orang akan membuat Virtual Machines (VM) yang menjadi pijakan aplikasi. Beberapa tahun terakhir muncul pendekatan baru yaitu ''[[Teknologi Containerization|http://blog.nostratech.com/2017/03/mengenal-teknologi-containerization.html?m=1]]''. + +Dengan teknologi ini maka kita dapat mengelola dan membagi suatu aplikasi di berbagai sistem operasi komputer namun semuanya bisa berjalan dengan konfigurasi yang sepenuhnya sama. + +Sebenarnya teknologi ini sudah lama ada, namun baru menjadi hype ketika ''[[Apa Itu Docker|Docker]]'' memperkenalkan produk mereka kepada dunia. + +[[Apa Itu Docker|]] + +===Kenapa Kubernetes=== + +Di layanan publik umumnya terdapat 4 jenis komputasi yaitu App Engine, Compute Engine, Kubernetes Engine dan Cloud Function. Dari keempat jenis layanan ini didapat bahwa tempat terbaik untuk ''[[Teknologi Container|https://cloud.google.com/compute/docs/containers/deploying-containers#limitations]]'' adalah di cluster dari ''[[Kubernetes-Engine|Kubernetes]]''. + +Sebelum kita melangkah lebih jauh kita perlu simak bagaimana kondisi Aplikasi Saleor jika ''[[Image Docker|https://cloud.google.com/cloud-build/docs/quickstart-docker]]'' ditempatkan di Kubernetes. + +Dari sumber yang didapat ternyata Saleor belum dikonfigurasi sepenuhnya untuk Lingkungan. Dengan hal tersebut maka kita perlu metoda yang untuk menyempurnakan kinerja yang dinamakan ''[[Apa Itu HELM Charts|HELM Charts]]''. + + +===Kenapa Google Cloud=== + +Dari semua [[jenis server|https://en.wikipedia.org/wiki/Server_(computing)]] yang disewakan ke publik maka jenis yang bisa kita tempatkan aplikasi yang sudah dikonfigurasi dalam kontainer adalah ''Cloud Computing''. Istilah populernya ''[[CLOUD|https://en.wikipedia.org/wiki/Cloud_computing]]''. + +Dari berbagai tempat penginangan server yang menyediakan ''[[sumber daya cloud|https://en.wikipedia.org/wiki/Category:Cloud_computing_providers]]'' kita akan pilih provider yang paling banyak diminati publik. Cara simpel adalah dengan melihat ke ''[[tag populer stackoferflow|https://stackoverflow.com/tags?tab=popular]]'', tempat dimana orang² yang bergelut di dunia pemrograman berinteraksi. + +Di tag populer tersebut kita masukan kata ''[[cloud|https://stackoverflow.com/tags]]'' maka akan terlihat bahwa ''[[GCP: google-cloud-platform|https://stackoverflow.com/questions/tagged/google-cloud-platform]]'' mempunyai rating tertinggi dibanding provider lain spt amazon, azure, cloudflare, ibm, alibaba dll. + +[[|https://stackoverflow.com/tags]] + +Dari segi keamanan [[Forrester Wave ™ Research|https://forrester.com]] menyebut Google Cloud sebagai yang terbaik dalam [[Platform Cloud Publik Native Security Wave Q2 2018|https://go.google-mkto.com/Eb20T36UPFT0A0VC1s0BC0v]]. + +Laporan tersebut mengevaluasi kemampuan dan fitur keamanan asli penyedia cloud publik, seperti enkripsi, identitas dan manajemen akses (IAM) dan keamanan beban kerja. + +Dari tujuh vendor: Alibaba, Amazon Web Services (AWS), CenturyLink, Google, IBM, Microsoft, and Rackspace, [[Google Cloud|https://id.wikipedia.org/wiki/Google_Cloud_Platform]] mendapat nilai tertinggi dalam kategori Strategi. + +Berikut ini [[analisa dan tabel perbandingan|https://raw.githubusercontent.com/MarketLeader/Toko-Chetabahana/master/docs/cloud/analysis/cloud-computing.pdf]] sebagai ilustrasi. + +[[|https://raw.githubusercontent.com/MarketLeader/Toko-Chetabahana/master/docs/cloud/analysis/cloud-computing-7.jpg]] + +Berita baiknya dari ratusan negara di dunia ini, ''[[GCP memilih Jakarta sebagai cabang ke-8|https://m.detik.com/inet/business/d-4242136/google-buka-cloud-region-di-indonesia-apa-itu]]'' setelah Mumbai, Singapura, Taiwan, Sydney, Tokyo, Osaka dan Hong Kong. + +[[|https://amp.kompas.com/tekno/read/2020/03/04/18054197/server-cloud-google-di-indonesia-bakal-ditempatkan-di-3-zona]] + +Jadi kita akan diuntungkan, berupa tingkat latency rendah dan kinerja tinggi dalam penggunaan dan data berbasis cloud + +[[|https://cloud.google.com/about/locations/?region=asia-pacific#meet-our-network]] + +GCP enggan menyebutkan jumlah pelanggan mereka di Indonesia, namun mereka menyebutkan nama Blue Bird Group, CT Corp, Sale Stock, Go-Jek, Emtek, Tokopedia, dan Traveloka. + +Anda bisa pelajari cara mendesain, mengembangkan, dan men-deploy aplikasi menggunakan layanan di [[GCP On Air|https://cloudonair.withgoogle.com/]] untuk membuat aplikasi berbasis cloud yang aman, scalable, dan cerdas. + +[[|https://raw.githubusercontent.com/chetabahana/chetabahana.github.io/master/images/google/gcp_cheat_sheet.png]] + +==Cara Instalasi== + +Ada begitu banyak cara yang diuraikan untuk memasang Saleor ke dalam kontainer ke Kebernetes. +Berikut ini adalah cara instalasi yang diuraikan secara garis besar saja. Detilnya bisa Anda ikuti di halaman² selanjutnya + +===Metoda FrontEnd=== + +[[|https://github.com/mirumee/saleor/issues/3613]] + +If a specific issue is keeping you back, Some details about it might be helpful. + +I used a kubernetes cluster to succesfully run the base saleor project in the cloud with public IP address and postgres running in Google Cloud as well. + +* Build your ''[[docker|https://docs.docker.com/docker-for-windows/install/]]'' image ''[[locally|https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#option_b_use_command-line_tools_locally]]'', and ''[[publish|https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#step_2_upload_the_container_image]]'' to ''[[Google Cloud Container Registry|https://cloud.google.com/container-registry/]]''. +* Follow a guide to setup "generic" ''[[Kubernetes cluster|https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#step_4_create_a_container_cluster]]'' and remember to '''''[[set environment variables|https://docs.getsaleor.com/en/latest/gettingstarted/configuration.html]]''''' when creating your ''[[workload|https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/]]'' based on the uploaded image. +* Go to your workload and pick ''[[Expose|https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#step_6_expose_your_application_to_the_internet]]'' in the top to create a public IP pointing to your application. +* Setup ''[[Postgres|https://docs.getsaleor.com/en/latest/gettingstarted/installation-linux.html#installation]]'' in ''[[cloud|https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine]]''. Many options, I went with their ''[[Cloud SQL|https://codelabs.developers.google.com/codelabs/cloud-postgresql-gke-memegen/#5]]'' solution, which was quite straightforward. + +===Metoda Codefresh=== +Untuk mengembangkan aplikasi maka kita dapat melakukan sistem otomatisasi dengan mengintegrasikan semua akun yang digunakan via Codefresh. + +Dengan menggunakan layanan ini kita bisa otomatisasi pembuatan aplikasi supaya menyederhanakan rutinitas pemasangan setiap ada perubahan yang dilakukan. +===Metoda HELM Charts=== +Setelah kita berhasil menampilkan ''[[Apa-Itu-Saleor|Aplikasi Saleor]]'' maka kita perlu menyetel komponen² yang penting dari sistem antara lain Arsitektur, Konfigurasi, Upgrade dan Maintenance. + +Untuk itu kita sempurnakan dengan ''[[Apa Itu HELM Charts|HELM Charts]]'' termasuk implementasi ''[[Metoda IT|https://github.com/ansible/ansible]]'' kedalam otomatisasi pembuatan baik itu di ''[[Cloud Builder|https://cloud.google.com/cloud-build]]'' maupun di layanan lainnya seperti ''[[Apa-Itu-Codefresh|Codefresh]]''. + +===Metoda BackEnd Domain=== +Berikutnya kita akan ulas tentang bagaimana mengoptimalkan database, penampilan tema, cara pembayaran, konfigurasi web, dan memanfaatkan ''[[Backend API|https://codelabs.developers.google.com/codelabs/cloud-endpoints-appengine/index.html]]'' untuk menunjang kinerja sistem. + +Philosophy dari projek akan mengutamakan halaman statis. Halaman dinamis akan di clone menjadi halaman statis di belakang layar dengan ''[[Cloud Scheduler|https://cloud.google.com/scheduler/docs/quickstart?hl=in]]'' dan ''[[Cloud Functions|https://cloud.google.com/functions/]]'' sedemikian rupa dengan tujuan untuk mendapatkan kinerja tinggi sekaligus mengoptimalkan ''[[biaya tagihan|https://cloud.google.com/pricing/]]''. + +[[Menjalankan-Backend-API|Metoda Backend]] adalah tahap terakhir dari cara Instalasi. Detilnya akan meliputi cara yang ditempuh untuk menjalankan jalannya aplikasi sesuai ''[[bagan rencana|https://github.com/chetabahana/chetabahana.github.io/wiki/Bagan-Project]]'' secara otomatis dan terkendali. + diff --git a/Google-App-Engine.mediawiki b/Google-App-Engine.mediawiki new file mode 100644 index 000000000000..7c9107061a7e --- /dev/null +++ b/Google-App-Engine.mediawiki @@ -0,0 +1,173 @@ +Pada sesi ini kita akan bahas tentang cara tampilkan Frontend di GAE. +__TOC__ + +==Layanan== + +===Konfigurasi=== +[[|https://cloud.google.com/appengine/docs/standard/python/an-overview-of-app-engine#components_of_an_application]] +URL dari aplikasi (''[[Rute|https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed?hl=in]]''): +* URL dari aplikasi (default): http://..appspot.com +* URL (service): http://.-dot-.appspot.com + +===GAE Region=== +Layanan tersedia untuk ''[[Region|https://cloud.google.com/appengine/docs/locations]]'' berikut: +``` +[1] asia-east2 (supports standard and flexible) +[2] asia-northeast1 (supports standard and flexible) +[3] asia-south1 (supports standard and flexible) +[4] australia-southeast1 (supports standard and flexible) +[5] europe-west (supports standard and flexible) +[6] europe-west2 (supports standard and flexible) +[7] europe-west3 (supports standard and flexible) +[8] northamerica-northeast1 (supports standard and flexible) +[9] southamerica-east1 (supports standard and flexible) +[10] us-central (supports standard and flexible) +[11] us-east1 (supports standard and flexible) +[12] us-east4 (supports standard and flexible) +[13] us-west2 (supports standard and flexible) +``` + +==Setelan== + +===Limit Aplikasi=== +Jumlah [[limit services and versi|https://cloud.google.com/appengine/docs/standard/python/an-overview-of-app-engine#limits]] +* Maksimum service per aplikasi: 5 (Gratis), 105 (Berbayar) +* Maksimum versi per aplikasi: 15 (Gratis), 210 (Berbayar) +* Maksimum Instance per manual/basic: 20 (Gratis), 25 (Berbayar), 200 (Berbayar kusus us-central) + +===Dispatch URL=== +Dispatch rute URL kita bisa arahkan sampai ''[[20 service|https://cloud.google.com/appengine/docs/standard/python3/reference/dispatch-yaml#limits]]'' +```bash +#gcloud app deploy dispatch.yaml +dispatch: + # Default service serves the typical web resources and all static resources. + - url: "*/img/favicon.ico" + service: default + + # Send to portfolio + - url: "*/konsep/portfolio/*" + service: portfolio + + # Send to Frontstore + - url: "*/product/*" + service: product + + # Send to wordpress + - url: "*/blog/*" + service: wordpress + + # Send to reverse-proxy + - url: "*/ansible/*" + service: proxy + + # Default service serves simple hostname request. + - url: "www.chetabahana.com/*" + service: default +``` + +==Service== +===Default=== +File app.yaml +```bash +runtime: python37 +instance_class: F1 +default_expiration: "365d" + +handlers: +# site root +- url: / + static_files: index.html + upload: index.html + +- url: /(.*) + static_files: \1 + upload: .* + +- url: /.* + secure: always + redirect_http_response_code: 301 + script: auto +``` + +===Portfolio=== +File [[app.yaml|https://github.com/chetabahana/portfolio/blob/master/app.yaml]] +```bash +runtime: python27 +api_version: '1' +env: standard +threadsafe: true +service: portfolio +handlers: +- url: /konsep/portfolio/ + static_files: _build/html/index.html + upload: _build/html/index.html + secure: always + # login: admin + +- url: /konsep/portfolio/ + static_dir: _build/html + secure: always + # login: admin + +- url: /konsep/portfolio/(.*\.(gif|png|jpg|ico|js|css|html)) + static_files: / + upload: _build/html/(.*\.(gif|png|jpg|ico|js|css|html)) + secure: always + # login: admin + +skip_files: +- ^parts +- ^bootstrap.py +- ^env$ +- ^buildout.cfg +- ^downloads$ +- ^eggs$ +- ^bin$ +- .installed.cfg +- develop-eggs +- ^venv + +``` +Instalasi via Cloud Shell +```bash +cd .. +rm -rf portfolio +git clone https://github.com/chetabahana/portfolio.git +cd portfolio +sh install.sh +``` +Output ''[[shell logs|https://github.com/chetabahana/portfolio/blob/master/shell.logs]]'' + +===Frontstore=== +Untuk Frontend dari Fronstore kita pakai ''Build Image''. + +Kita sudah bahas di ''[[Instalasi-di-GAE#deploy-image|Instalasi di GAE]]'' jika pemasangan tidak dapat dilakukan di GAE Standard. Jadi kita pasang di GAE Flexible supaya transaksi bisa dilakukan dalam satu host. + +Seperti halnya [[Google-App-Engine#service-portfolio|Portfolio]] kita akan tampilkan ''[[Google-App-Engine#dispatch-url|via disptach di GAE]]'' dengan menyetel template halaman sesuai halaman utama. + +===Wordpress=== +Salah satu kelebihan dari GAE Standar adalah kita bisa setel ''[[Batas Biaya Harian|https://cloud.google.com/appengine/docs/standard/python/console/#setting_a_spending_limit]]''. Karenanya untuk optimalkan biaya tagihan, kita bisa memperkaya Site maka diluar Frontend dari [[Google-App-Engine#service-portfolio|Portfolio]] dan [[Google-App-Engine#Service_Frontstore|Frontstore]] kita perlu pasang juga untuk menampilkan layanan lain seperti Blog, Panduan dll. + +Namun jika dia memerlukan instance MySQL di Cloud SQL sementara kita sudah pasang Postgres maka ongkosnya tidak akan efektif karena secara keseluruhan hanya sebagai penunjang. + +Solusi yang dapat dilakukan agar tidak perlu pasang instance MySQL adalah: +* ''[[Pasang di GAE|https://cloud.google.com/community/tutorials/run-wordpress-on-appengine-standard]]'' dengan ''[[PostgreSQL for WordPress (PG4WP)|https://wordpress.org/plugins/postgresql-for-wordpress/]]''. +* ''[[Google-Compute-Engine|Pasang di GCE]]'' berikut dengan ''[[Google-Compute-Engine#Instal_MySQL|MySQL]]'' dalam satu localhost. +* ''[[Pasang di GAE|https://cloud.google.com/community/tutorials/run-wordpress-on-appengine-standard]]'' dengan ''[[Google-Compute-Engine#Instal_MySQL|MySQL di GCE]]'' konek via ''[[VPC Peering|https://cloud.google.com/sdk/gcloud/reference/beta/services/vpc-peerings/]]''. + +Catatan: +* Untuk update plugins-and-themes lakukan via ''[[wp-cli|https://cloud.google.com/community/tutorials/run-wordpress-on-appengine-standard#install-and-update-wordpress-plugins-and-themes]]'' +* Simak untuk pasang ''[[Joomla|https://forum.joomla.org/viewtopic.php?t=828565]]'', ''[[drupal|https://www.appnovation.com/blog/drupal-setup-google-app-engine]]'' + +===Reverse Proxy=== +Sepanjang bisa dilakukan maka sebaiknya aplikasi dipasang di GAE Standard. + +Apabila tidak bisa maka jika tidak harus pasang di GAE Fleksibel (misal tidak perlu transaksi di domain utama), akan lebih hemat jika dilakukan pakai type ''[[GCE yang Always Free|https://cloud.google.com/free/docs/gcp-free-tier#always-free-usage-limits]]'' dan disetel sbb: + +* Pakai 1 non-preemptible f1-micro VM US regions dengan manual instance +* Pasang dan operasikan HDD dibawah 30 GB-months + +Namun supaya Frontend nya berada dalam domain maka tampilan bisa tetap dimunculkan ''[[Google-App-Engine#dispatch-url|via disptach]]'' dengan memasang ''[[Reverse Proxy|https://github.com/bechurch/reverse-proxy-demo]]'' atau ''[[https proxy|https://medium.com/@mlowicki/http-s-proxy-in-golang-in-less-than-100-lines-of-code-6a51c2f2c38c]]'' di GAE. + +==''Referensi''== +* [[Laravel 5.7 Lands on Google App Engine Standard Environment|http://www.skychin.me/posts/2018-10-27/laravel-5.7-lands-on-google-app-engine-standard-environment/]] \ No newline at end of file diff --git a/Google-Cloud-Builders.mediawiki b/Google-Cloud-Builders.mediawiki new file mode 100644 index 000000000000..4d72e0763fe1 --- /dev/null +++ b/Google-Cloud-Builders.mediawiki @@ -0,0 +1,571 @@ +Seperti halnya dengan [[GitHub Actions|https://github.com/chetabahana/chetabahana.github.io/wiki/Akun-GitHub-Actions]] dan [[Apa-Itu-Codefresh|Codefresh]] maka Proyek ini juga meggunakam layanan CI/CD dari [[Google Cloud Builders|https://cloud.google.com/cloud-build/]]. + +__TOC__ + +==Fiture== +Google Cloud Build memungkinkan Anda membuat bangunan cepat, konsisten, dan andal di semua bahasa pemrograman secara otomatis dalam membuat kontainer atau artefak non-kontainer. + +===Keistimewaan=== +* Support Build dengan ''Docker'' dari ''Docker Hub'' atau ''Registry'' +* Gratis ''120 build-menit'' per hari dan hingga ''10 build'' bersamaan +* Hasil build dilengkapi build ''errors'' dab ''warnings'' mudah ''debugging'' +* Scan kerentanan hasil build untuk Mesin ''Ubuntu'', ''Debian'', and ''Alpine''. +* Dapat dijalankan secara lokal untuk ''debug'' sebelum mengirimkan ke cloud. + +===Ragam Cara/Opsi=== +* Selesai dalam hitungan menit dengan trigger di ''[[GitHub|https://github.com/marketplace/google-cloud-build]]'', ''Cloud Source'', atau ''Bitbucket'' +* Build Kontainer ''Docker'' atau non-kontainer via ''Maven'', ''Gradle'', ''webpack'', ''Go'', atau ''Bazel'' +* Deploy ke ''Kubernetes'', ''App Engine'', ''Cloud Fuctions'', dan ''Firebase'' via ''Spinnaker'' pipelines +* ''[[Kontrol via API|https://cloud.google.com/cloud-build/docs/api/reference/rest/]]'' atas langkah-langkah kustom membangun, menguji, dan menggunakan. +* Hak cipta dari create, view, source code diamankan oleh ''Google Cloud security'' + +==Konfigurasi== +* ''[[Konfigurasi build|https://cloud.google.com/cloud-build/docs/build-config]]'' yg dapat ditrigger via ''[[manual|https://cloud.google.com/cloud-build/docs/running-builds/start-build-manually]]'' dan ''[[otomatis|https://cloud.google.com/cloud-build/docs/running-builds/automate-builds]]''. + +* [[Building, testing, and deploying|https://cloud.google.com/cloud-build/docs/configuring-builds/build-test-deploy-artifacts]] +Berikan izin ke akun layanan Cloud Build Anda: +``` +$ gcloud services enable compute.googleapis.com +$ export PROJECT=$(gcloud info --format='value(config.project)') +$ export MEMBER=$(gcloud projects describe $PROJECT --format \ +'value(projectNumber)')@cloudbuild.gserviceaccount.com +$ gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER \ +--role='roles/compute.admin' +$ gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER \ +--role='roles/iam.serviceAccountUser' +``` + +===YAML Syntax=== +``` +steps: +- name: string + args: [string, string, ...] + env: [string, string, ...] + dir: string + id: string + waitFor: string + entrypoint: string + secretEnv: string + volumes: object(Volume) + timeout: string (Duration format) +- name: string + ... +- name: string + ... +timeout: string (Duration format) +logsBucket: string +options: + sourceProvenanceHash: enum(HashType) + machineType: enum(MachineType) + diskSizeGb: string (int64 format) + substitutionOption: enum(SubstitutionOption) + logStreamingOption: enum(LogStreamingOption) + logging: enum(LoggingMode) +substitutions: map (key: string, value: string) +tags: [string, string, ...] +secrets: object(Secret) +images: +- [string, string, ...] +artifacts: object (Artifacts) +``` + +===Global Pattern=== +* Setelan dengan [[Ekspresi global|https://en.wikipedia.org/wiki/Glob_(programming]] memiliki lebih banyak opsi. +* Dapat dilakukan juga di [[Apa-Itu-Codefresh|Codefresh]] lihat [[di dokumentasi|https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/git-triggers/#using-the-modified-files-field-to-constrain-triggers-to-specific-folderfiles]]. + +Misal untuk trigger terhadap semua perubahan kecuali di folder .git, .github, .google tapi jangan masukan folder system . dan .. bisa pakai syntax berikut: + +``` +{[!.g]*,[!.g]*/**} +``` +==Builders== + +===Official Builders=== +[[Official builders|https://github.com/GoogleCloudPlatform/cloud-builders]] tersedia di [[gcr.io/cloud-builders/|https://console.cloud.google.com/gcr/images/cloud-builders/GLOBAL]] meliputi: + +* bazel: https://bazel.io/ +* curl: https://curl.haxx.se/ +* docker: https://docker.com/ +* dotnet: https://docs.microsoft.com/dotnet/core/tools/ +* gcloud: https://cloud.google.com/sdk/gcloud/ +* git: https://git-scm.com/ +* go: https://golang.org/cmd/go +* gradle: https://gradle.org/ +* gsutil: https://cloud.google.com/storage/docs/gsutil +* java: https://www.oracle.com/java/ +* javac: https://docs.oracle.com/javase/ +* kubectl: https://kubernetes.io/docs/user-guide/kubectl-overview/ +* metadata: +* mvn: https://maven.apache.org/ +* npm: https://docs.npmjs.com/ +* nodejs: https://nodejs.org/en/ +* wget: https://www.gnu.org/software/wget/ +* yarn: https://yarnpkg.com/ + +``` +$ docker images --all +REPOSITORY TAG IMAGE ID CREATED SIZE +us.gcr.io/fn-img/converter-go112 next__cloudbuild_cache_1460320609597786623 641cc0cfbe56 3 days ago 2.6GB +us.gcr.io/fn-img/converter-go112 next_cloudbuild_cache 641cc0cfbe56 3 days ago 2.6GB +us.gcr.io/fn-img/builder-nodejs8-canary next__cloudbuild_cache_2933568871211445515 6f0cbf09e4ee 3 days ago 1.81GB +us.gcr.io/fn-img/builder-nodejs8-canary next_cloudbuild_cache 6f0cbf09e4ee 3 days ago 1.81GB +us.gcr.io/fn-img/builder-nodejs8 next__cloudbuild_cache_7504504064263669287 f33bfa0219b4 3 days ago 1.81GB +us.gcr.io/fn-img/builder-nodejs8 next_cloudbuild_cache f33bfa0219b4 3 days ago 1.81GB +us.gcr.io/fn-img/converter-java11 next__cloudbuild_cache_3902890183311134652 34191f10130f 3 days ago 791MB +us.gcr.io/fn-img/converter-java11 next_cloudbuild_cache 34191f10130f 3 days ago 791MB +us.gcr.io/fn-img/builder-python37 next__cloudbuild_cache_7955079406183515637 94b941a548dd 3 days ago 1.91GB +us.gcr.io/fn-img/builder-python37 next_cloudbuild_cache 94b941a548dd 3 days ago 1.91GB +us.gcr.io/fn-img/builder-nodejs6-canary next__cloudbuild_cache_894385949183117216 eb5c7497eb03 3 days ago 507MB +us.gcr.io/fn-img/builder-nodejs6-canary next_cloudbuild_cache eb5c7497eb03 3 days ago 507MB +us.gcr.io/fn-img/converter-php72 next__cloudbuild_cache_2601737961087659062 981de4990a63 3 days ago 443MB +us.gcr.io/fn-img/converter-php72 next_cloudbuild_cache 981de4990a63 3 days ago 443MB +us.gcr.io/fn-img/converter-java8 next__cloudbuild_cache_6382800227808658932 85f16c147fda 3 days ago 791MB +us.gcr.io/fn-img/converter-java8 next_cloudbuild_cache 85f16c147fda 3 days ago 791MB +us.gcr.io/fn-img/builder-go next__cloudbuild_cache_6941261091797652072 5111206cc537 3 days ago 3GB +us.gcr.io/fn-img/builder-go next_cloudbuild_cache 5111206cc537 3 days ago 3GB +us.gcr.io/fn-img/builder-nodejs next__cloudbuild_cache_6334824724549167320 6fb3db4cc413 3 days ago 507MB +us.gcr.io/fn-img/builder-nodejs next_cloudbuild_cache 6fb3db4cc413 3 days ago 507MB +golang alpine_cloudbuild_cache 4e4b7a8b9495 3 days ago 350MB +microsoft/dotnet 1.1-sdk_cloudbuild_cache c07e02565815 4 days ago 979MB +microsoft/dotnet 2.2-sdk_cloudbuild_cache 155911c343f3 4 days ago 1.74GB +microsoft/dotnet 2.1-sdk_cloudbuild_cache c4944162fecb 4 days ago 1.74GB +alpine cloudbuild_cache 4d90542f0623 4 days ago 5.58MB +gcr.io/kaniko-project/executor latest__cloudbuild_cache_6129484611666145821 900080124131 4 days ago 49MB +gcr.io/kaniko-project/executor latest_cloudbuild_cache 900080124131 4 days ago 49MB +gradle cloudbuild_cache fe8f7d0df9f5 5 days ago 538MB +ubuntu cloudbuild_cache 4c108a37151f 5 days ago 64.2MB +php alpine_cloudbuild_cache 97f75b027653 6 days ago 79.6MB +php apache_cloudbuild_cache 731c760de792 6 days ago 378MB +php cloudbuild_cache f0357c41bff5 6 days ago 367MB +us.gcr.io/gcp-runtimes/php/gen-dockerfile cloudbuild_cache 78d6bdf08a65 6 days ago 787MB +us.gcr.io/google-appengine/php cloudbuild_cache feb11d7fd261 6 days ago 779MB +us.gcr.io/google-appengine/php72 cloudbuild_cache a2cfa073f116 6 days ago 779MB +us.gcr.io/google-appengine/php71 cloudbuild_cache fe5268480716 6 days ago 779MB +us.gcr.io/gcp-runtimes/python/gen-dockerfile cloudbuild_cache 8182054ed315 6 days ago 1.06GB +us.gcr.io/google-appengine/python cloudbuild_cache 5ee27cbaba01 6 days ago 1.04GB +us.gcr.io/google-appengine/nodejs cloudbuild_cache 5446f4e68684 7 days ago 684MB +gcr.io/cloud-builders/gcs-uploader latest 3690ef5b20f4 7 days ago 31.3MB +gcr.io/cloud-builders/gcs-fetcher latest ac80df89efdc 7 days ago 31.6MB +gcr.io/cloud-builders/kubectl latest 1153202a8bc5 7 days ago 1.7GB +gcr.io/cloud-builders/git latest 7eaf386ca190 7 days ago 2.72GB +gcr.io/cloud-builders/gsutil latest 6292f63a7ced 7 days ago 1.01GB +gcr.io/cloud-builders/gradle 3.5-jdk-8 cb7e83519023 7 days ago 1.13GB +gcr.io/cloud-builders/gradle latest 80bb0c5f83ff 7 days ago 1.13GB +gcr.io/cloud-builders/gradle 4.0-jdk-8 96bf802286dc 7 days ago 1.12GB +gcr.io/cloud-builders/mvn latest ced735413c03 7 days ago 614MB +us.gcr.io/fn-img/builder-java11 next__cloudbuild_cache_4990765271833742716 ced735413c03 7 days ago 614MB +us.gcr.io/fn-img/builder-java11 next_cloudbuild_cache ced735413c03 7 days ago 614MB +gcr.io/cloud-builders/mvn 3.5.0-jdk-8 030232badc4d 7 days ago 750MB +us.gcr.io/fn-img/builder-java8 next__cloudbuild_cache_732830328053361739 030232badc4d 7 days ago 750MB +us.gcr.io/fn-img/builder-java8 next_cloudbuild_cache 030232badc4d 7 days ago 750MB +gcr.io/cloud-builders/mvn 3.3.9-jdk-8 163b7c061fe0 7 days ago 653MB +gcr.io/cloud-builders/gcloud latest 020f2b102881 7 days ago 2.72GB +gcr.io/cloud-builders/bazel latest 7723656489af 7 days ago 2.38GB +gcr.io/cloud-builders/javac 8 b929ca27a0d1 7 days ago 1.04GB +gcr.io/cloud-builders/javac latest b929ca27a0d1 7 days ago 1.04GB +gcr.io/cloud-builders/gcloud-slim latest 73dd55c64436 7 days ago 1.01GB +gcr.io/cloud-builders/go debian 6fd0e134fb1d 7 days ago 794MB +gcr.io/cloud-builders/go alpine b4ee0925e76b 7 days ago 591MB +gcr.io/cloud-builders/go latest b4ee0925e76b 7 days ago 591MB +gcr.io/cloud-builders/npm latest 35d310f20dad 7 days ago 670MB +gcr.io/cloud-builders/yarn latest 930db469ed27 7 days ago 670MB +gcr.io/cloud-builders/wget latest 04378ed6f918 7 days ago 308MB +gcr.io/cloud-builders/curl latest eb1dfcc036ce 7 days ago 309MB +gcr.io/cloud-builders/dotnet latest 14e87b9cb9ab 7 days ago 1.74GB +gcr.io/cloud-builders/docker 18.09.6 f343724ca812 7 days ago 808MB +gcr.io/cloud-builders/docker latest f343724ca812 7 days ago 808MB +gcr.io/cloud-builders/metadata latest 691928eafecb 7 days ago 13.4MB +busybox cloudbuild_cache e4db68de4ff2 9 days ago 1.22MB +busybox latest e4db68de4ff2 9 days ago 1.22MB +golang cloudbuild_cache 9fe4cdc1f173 12 days ago 774MB +maven cloudbuild_cache 067b65acf67a 12 days ago 614MB +node cloudbuild_cache b074182f4154 13 days ago 906MB +python 2_cloudbuild_cache 37093962fbf5 13 days ago 914MB +python 3_cloudbuild_cache 34a518642c76 13 days ago 929MB +python cloudbuild_cache 34a518642c76 13 days ago 929MB +ruby cloudbuild_cache 877a53569182 13 days ago 870MB +debian cloudbuild_cache e1de74e67cc7 13 days ago 101MB +us.gcr.io/fn-img/converter-go112 current__cloudbuild_cache_261049867304784443 b934f450e892 2 weeks ago 2.55GB +us.gcr.io/fn-img/converter-go112 current_cloudbuild_cache b934f450e892 2 weeks ago 2.55GB +us.gcr.io/fn-img/builder-nodejs8-canary current__cloudbuild_cache_3510942875414458836 52ef9b4956f9 2 weeks ago 1.81GB +us.gcr.io/fn-img/builder-nodejs8-canary current_cloudbuild_cache 52ef9b4956f9 2 weeks ago 1.81GB +us.gcr.io/fn-img/builder-python37 current__cloudbuild_cache_5263531936693774911 778784d6f1f4 2 weeks ago 1.91GB +us.gcr.io/fn-img/builder-python37 current_cloudbuild_cache 778784d6f1f4 2 weeks ago 1.91GB +us.gcr.io/fn-img/builder-nodejs8 current__cloudbuild_cache_4751997750760398084 779e2258b907 2 weeks ago 1.81GB +us.gcr.io/fn-img/builder-nodejs8 current_cloudbuild_cache 779e2258b907 2 weeks ago 1.81GB +us.gcr.io/fn-img/converter-java11 current__cloudbuild_cache_2568779411109623071 fc9251dd831f 2 weeks ago 791MB +us.gcr.io/fn-img/converter-java11 current_cloudbuild_cache fc9251dd831f 2 weeks ago 791MB +us.gcr.io/fn-img/builder-nodejs6-canary current__cloudbuild_cache_1443635317331776148 be479ecef867 2 weeks ago 506MB +us.gcr.io/fn-img/builder-nodejs6-canary current_cloudbuild_cache be479ecef867 2 weeks ago 506MB +us.gcr.io/fn-img/builder-go current__cloudbuild_cache_2740103009342231109 966203a0b3cd 2 weeks ago 3.04GB +us.gcr.io/fn-img/builder-go current_cloudbuild_cache 966203a0b3cd 2 weeks ago 3.04GB +us.gcr.io/fn-img/converter-php72 current__cloudbuild_cache_2338498362660772719 3dcd780a6ceb 2 weeks ago 438MB +us.gcr.io/fn-img/converter-php72 current_cloudbuild_cache 3dcd780a6ceb 2 weeks ago 438MB +us.gcr.io/fn-img/converter-java8 current__cloudbuild_cache_545291762129038907 a743216863d4 2 weeks ago 791MB +us.gcr.io/fn-img/converter-java8 current_cloudbuild_cache a743216863d4 2 weeks ago 791MB +us.gcr.io/fn-img/builder-nodejs current__cloudbuild_cache_3916589616287113937 6ddc6198e3d7 2 weeks ago 506MB +us.gcr.io/fn-img/builder-nodejs current_cloudbuild_cache 6ddc6198e3d7 2 weeks ago 506MB +us.gcr.io/fn-img/builder-java11 current__cloudbuild_cache_1598098976185383115 fd3425ba87ff 2 weeks ago 614MB +us.gcr.io/fn-img/builder-java11 current_cloudbuild_cache fd3425ba87ff 2 weeks ago 614MB +us.gcr.io/fn-img/builder-java8 current__cloudbuild_cache_8995016276575641803 dac7f5c2535b 2 weeks ago 750MB +us.gcr.io/fn-img/builder-java8 current_cloudbuild_cache dac7f5c2535b 2 weeks ago 750MB +node alpine_cloudbuild_cache d4edda39fb81 2 weeks ago 77.8MB +gcr.io/gae-runtimes/php72_app_builder argo_next_cloudbuild_cache 6f512a13e5bd 3 weeks ago 2.34GB +gcr.io/gae-runtimes/nodejs10_app_builder argo_next_cloudbuild_cache 19f577da815e 3 weeks ago 1.82GB +gcr.io/gae-runtimes/php73_app_builder argo_next_cloudbuild_cache b1a7777cf3ab 3 weeks ago 2.34GB +gcr.io/gae-runtimes/nodejs12_app_builder argo_next_cloudbuild_cache 6bb1b31503df 3 weeks ago 1.82GB +gcr.io/gae-runtimes/go111_app_builder argo_next_cloudbuild_cache 8bc1d1898d05 3 weeks ago 2.06GB +gcr.io/gae-runtimes/nodejs8_app_builder argo_next_cloudbuild_cache 65ab51d909fe 3 weeks ago 1.81GB +gcr.io/gae-runtimes/go112_app_builder argo_next_cloudbuild_cache cc3e6d5e3dcd 3 weeks ago 2.08GB +us.gcr.io/fn-img/converter-nodejs10 next__cloudbuild_cache_2703387474910584091 7173867bce79 3 weeks ago 285MB +us.gcr.io/fn-img/converter-nodejs10 next_cloudbuild_cache 7173867bce79 3 weeks ago 285MB +gcr.io/gae-runtimes/ruby25_app_builder argo_next_cloudbuild_cache 9d76b7d7ddcc 3 weeks ago 1.98GB +us.gcr.io/fn-img/converter-go112 previous__cloudbuild_cache_4831389563158288344 f08b43a3f175 3 weeks ago 2.43GB +us.gcr.io/fn-img/converter-go112 previous_cloudbuild_cache f08b43a3f175 3 weeks ago 2.43GB +us.gcr.io/fn-img/builder-nodejs8-canary previous__cloudbuild_cache_1976235410884491574 9857d5b1519d 3 weeks ago 1.8GB +us.gcr.io/fn-img/builder-nodejs8-canary previous_cloudbuild_cache 9857d5b1519d 3 weeks ago 1.8GB +us.gcr.io/fn-img/builder-nodejs8 previous__cloudbuild_cache_2775422040480279449 94a7f5bb11da 3 weeks ago 1.8GB +us.gcr.io/fn-img/builder-nodejs8 previous_cloudbuild_cache 94a7f5bb11da 3 weeks ago 1.8GB +us.gcr.io/fn-img/builder-python37 previous__cloudbuild_cache_3328451335138149956 af89d39ef444 3 weeks ago 1.91GB +us.gcr.io/fn-img/builder-python37 previous_cloudbuild_cache af89d39ef444 3 weeks ago 1.91GB +us.gcr.io/fn-img/converter-php72 previous__cloudbuild_cache_4893789450120281907 22a753fdd87a 3 weeks ago 453MB +us.gcr.io/fn-img/converter-php72 previous_cloudbuild_cache 22a753fdd87a 3 weeks ago 453MB +us.gcr.io/fn-img/converter-java11 previous__cloudbuild_cache_5018949295715050020 d0b831147f07 3 weeks ago 791MB +us.gcr.io/fn-img/converter-java11 previous_cloudbuild_cache d0b831147f07 3 weeks ago 791MB +us.gcr.io/fn-img/builder-nodejs6-canary previous__cloudbuild_cache_605394647632969758 b45b3f92ae0d 3 weeks ago 506MB +us.gcr.io/fn-img/builder-nodejs6-canary previous_cloudbuild_cache b45b3f92ae0d 3 weeks ago 506MB +us.gcr.io/fn-img/converter-nodejs10 current__cloudbuild_cache_2610529275472644968 0f9d026a543b 3 weeks ago 285MB +us.gcr.io/fn-img/converter-nodejs10 current_cloudbuild_cache 0f9d026a543b 3 weeks ago 285MB +us.gcr.io/fn-img/converter-java8 previous__cloudbuild_cache_5486140987150761883 15cf0b195a1c 3 weeks ago 791MB +us.gcr.io/fn-img/converter-java8 previous_cloudbuild_cache 15cf0b195a1c 3 weeks ago 791MB +us.gcr.io/fn-img/builder-go previous__cloudbuild_cache_2703501726821866378 9bf1d2d1dc1c 3 weeks ago 3GB +us.gcr.io/fn-img/builder-go previous_cloudbuild_cache 9bf1d2d1dc1c 3 weeks ago 3GB +us.gcr.io/fn-img/builder-nodejs previous__cloudbuild_cache_4037200794235010051 52e99fb7708e 3 weeks ago 506MB +us.gcr.io/fn-img/builder-nodejs previous_cloudbuild_cache 52e99fb7708e 3 weeks ago 506MB +us.gcr.io/gcp-runtimes/java/runtime-builder cloudbuild_cache 96ea7a38c0b5 3 weeks ago 1.33GB +us.gcr.io/google-appengine/openjdk _cloudbuild_cache_685213522303989579 3bb262d5cb3b 3 weeks ago 315MB +us.gcr.io/google-appengine/openjdk cloudbuild_cache 3bb262d5cb3b 3 weeks ago 315MB +us.gcr.io/fn-img/builder-java11 previous__cloudbuild_cache_2781055864473387780 7b49d6a1d7d3 3 weeks ago 613MB +us.gcr.io/fn-img/builder-java11 previous_cloudbuild_cache 7b49d6a1d7d3 3 weeks ago 613MB +us.gcr.io/fn-img/builder-java8 previous__cloudbuild_cache_5600924393587988459 96f7552efb25 3 weeks ago 750MB +us.gcr.io/fn-img/builder-java8 previous_cloudbuild_cache 96f7552efb25 3 weeks ago 750MB +gcr.io/gae-runtimes/python37_app_builder argo_next_cloudbuild_cache ea3376963e5d 3 weeks ago 1.96GB +us.gcr.io/fn-img/converter-nodejs10 previous__cloudbuild_cache_4324745483838182873 937236f2f08e 4 weeks ago 285MB +us.gcr.io/fn-img/converter-nodejs10 previous_cloudbuild_cache 937236f2f08e 4 weeks ago 285MB +gcr.io/gae-runtimes/nodejs12_app_builder argo_current_cloudbuild_cache 2c736d14bc34 4 weeks ago 1.82GB +gcr.io/gae-runtimes/nodejs12_app_builder argo_previous2_cloudbuild_cache 2c736d14bc34 4 weeks ago 1.82GB +gcr.io/gae-runtimes/nodejs12_app_builder argo_previous_cloudbuild_cache 2c736d14bc34 4 weeks ago 1.82GB +gcr.io/gae-runtimes/nodejs10_app_builder argo_current_cloudbuild_cache 580280f46c1b 5 weeks ago 1.81GB +gcr.io/gae-runtimes/php73_app_builder argo_current_cloudbuild_cache a4ec20278ad0 5 weeks ago 2.34GB +gcr.io/gae-runtimes/php72_app_builder argo_current_cloudbuild_cache 1eac9ed5649d 5 weeks ago 2.33GB +gcr.io/gae-runtimes/go111_app_builder argo_current_cloudbuild_cache bcf67c38e7dd 5 weeks ago 2.05GB +gcr.io/gae-runtimes/python37_app_builder argo_current_cloudbuild_cache d8b7ae3fd847 5 weeks ago 1.96GB +gcr.io/gae-runtimes/ruby25_app_builder argo_current_cloudbuild_cache 2ee5dd3ef982 5 weeks ago 1.97GB +gcr.io/gae-runtimes/nodejs8_app_builder argo_current_cloudbuild_cache ab820514f33c 5 weeks ago 1.8GB +gcr.io/gae-runtimes/go112_app_builder argo_current_cloudbuild_cache 9d9e933eac7a 5 weeks ago 2.07GB +maven alpine_cloudbuild_cache 7445f83cd169 6 weeks ago 122MB +gradle alpine_cloudbuild_cache 8017d8c2ba74 6 weeks ago 204MB +ruby alpine_cloudbuild_cache 17e954cb9555 6 weeks ago 50.9MB +python alpine_cloudbuild_cache fe3ef29c73f3 6 weeks ago 87MB +us.gcr.io/google-appengine/jetty _cloudbuild_cache_2050257992909156333 dac4353b3a0c 6 weeks ago 375MB +us.gcr.io/google-appengine/jetty cloudbuild_cache dac4353b3a0c 6 weeks ago 375MB +gcr.io/gae-runtimes/php72_app_builder argo_previous_cloudbuild_cache 65d901c17170 7 weeks ago 2.32GB +gcr.io/gae-runtimes/php73_app_builder argo_previous_cloudbuild_cache c5f6aea5b961 7 weeks ago 2.33GB +gcr.io/gae-runtimes/go111_app_builder argo_previous_cloudbuild_cache 3d45006860fd 7 weeks ago 2.05GB +gcr.io/gae-runtimes/nodejs8_app_builder argo_previous_cloudbuild_cache 03a6f4b0ecc4 7 weeks ago 1.8GB +gcr.io/gae-runtimes/nodejs10_app_builder argo_previous_cloudbuild_cache 96295fc8e2fd 8 weeks ago 1.8GB +gcr.io/gae-runtimes/java11_app_builder argo_current_cloudbuild_cache 23e30557a725 8 weeks ago 1.72GB +gcr.io/gae-runtimes/java11_app_builder argo_next_cloudbuild_cache 23e30557a725 8 weeks ago 1.72GB +gcr.io/gae-runtimes/go112_app_builder argo_previous_cloudbuild_cache ba93d5b38fd0 8 weeks ago 2.06GB +gcr.io/gae-runtimes/ruby25_app_builder argo_previous_cloudbuild_cache 725a5235c2be 8 weeks ago 1.96GB +us.gcr.io/google-appengine/php56 cloudbuild_cache ce5287279d4d 2 months ago 945MB +us.gcr.io/google-appengine/php70 cloudbuild_cache fe936f83494d 2 months ago 945MB +gcr.io/gae-runtimes/php72_app_builder argo_previous2_cloudbuild_cache 4e60fe609c21 2 months ago 2.33GB +gcr.io/gae-runtimes/php73_app_builder argo_previous2_cloudbuild_cache 5a8f369e0c70 2 months ago 2.33GB +gcr.io/gae-runtimes/nodejs10_app_builder argo_previous2_cloudbuild_cache 3d3c79f6888f 2 months ago 1.78GB +gcr.io/gae-runtimes/nodejs8_app_builder argo_previous2_cloudbuild_cache 1ae48dcfc44b 2 months ago 1.78GB +gcr.io/gae-runtimes/go111_app_builder argo_previous2_cloudbuild_cache fea8283983b3 2 months ago 2.03GB +gcr.io/gae-runtimes/go112_app_builder argo_previous2_cloudbuild_cache da9bc2235079 2 months ago 2.05GB +gcr.io/gae-runtimes/ruby25_app_builder argo_previous2_cloudbuild_cache 9e983fb57620 2 months ago 1.96GB +gcr.io/gae-runtimes/python37_app_builder argo_previous_cloudbuild_cache 2e2bb0ab6d3d 2 months ago 1.93GB +gcr.io/gae-runtimes/python37_app_builder argo_previous2_cloudbuild_cache eec20ab246a7 3 months ago 1.95GB +us.gcr.io/fn-img/builder-go112 current__cloudbuild_cache_7981306761429961588 50f66d5b5bfe 3 months ago 2.04GB +us.gcr.io/fn-img/builder-go112 current_cloudbuild_cache 50f66d5b5bfe 3 months ago 2.04GB +us.gcr.io/fn-img/builder-go112 next__cloudbuild_cache_6426100070888298971 50f66d5b5bfe 3 months ago 2.04GB +us.gcr.io/fn-img/builder-go112 next_cloudbuild_cache 50f66d5b5bfe 3 months ago 2.04GB +us.gcr.io/fn-img/builder-go112 previous__cloudbuild_cache_1905388747193831650 50f66d5b5bfe 3 months ago 2.04GB +us.gcr.io/fn-img/builder-go112 previous_cloudbuild_cache 50f66d5b5bfe 3 months ago 2.04GB +us.gcr.io/gcp-runtimes/nodejs/gen-dockerfile cloudbuild_cache 1e42f4fb7625 3 months ago 768MB +centos cloudbuild_cache 9f38484d220f 3 months ago 202MB +us.gcr.io/fn-img/builder-nodejs10 current__cloudbuild_cache_2015796113853353331 79e8e1e182ca 3 months ago 1.77GB +us.gcr.io/fn-img/builder-nodejs10 current_cloudbuild_cache 79e8e1e182ca 3 months ago 1.77GB +us.gcr.io/fn-img/builder-nodejs10 next__cloudbuild_cache_1874068156324778273 79e8e1e182ca 3 months ago 1.77GB +us.gcr.io/fn-img/builder-nodejs10 next_cloudbuild_cache 79e8e1e182ca 3 months ago 1.77GB +us.gcr.io/fn-img/builder-nodejs10 previous__cloudbuild_cache_6263450610539110790 79e8e1e182ca 3 months ago 1.77GB +us.gcr.io/fn-img/builder-nodejs10 previous_cloudbuild_cache 79e8e1e182ca 3 months ago 1.77GB +gcr.io/gae-runtimes/java11_app_builder argo_previous_cloudbuild_cache ad0025656bda 3 months ago 1.7GB +us.gcr.io/gcp-runtimes/go1-builder 1.9_cloudbuild_cache 02ca9616cd4c 3 months ago 536MB +us.gcr.io/gcp-runtimes/go1-builder 1.10_cloudbuild_cache 7c94be651eb8 3 months ago 530MB +gcr.io/gae-runtimes/java11_app_builder argo_previous2_cloudbuild_cache 60fee5ba6cce 4 months ago 1.78GB +hello-world latest fce289e99eb9 5 months ago 1.84kB +gcr.io/kaniko-project/executor v0.6.0__cloudbuild_cache_8674665223082153551 0d8eef3519f8 7 months ago 46MB +gcr.io/kaniko-project/executor v0.6.0_cloudbuild_cache 0d8eef3519f8 7 months ago 46MB +us.gcr.io/fn-img/builder-php72 current__cloudbuild_cache_3337066551442961397 dd74c231b8a6 9 months ago 1.75GB +us.gcr.io/fn-img/builder-php72 current_cloudbuild_cache dd74c231b8a6 9 months ago 1.75GB +us.gcr.io/fn-img/builder-php72 next__cloudbuild_cache_8121576815539813105 dd74c231b8a6 9 months ago 1.75GB +us.gcr.io/fn-img/builder-php72 next_cloudbuild_cache dd74c231b8a6 9 months ago 1.75GB +us.gcr.io/fn-img/builder-php72 previous__cloudbuild_cache_7273596521315663110 dd74c231b8a6 9 months ago 1.75GB +us.gcr.io/fn-img/builder-php72 previous_cloudbuild_cache dd74c231b8a6 9 months ago 1.75GB +us.gcr.io/google-appengine/ubuntu-php56 cloudbuild_cache edebd39e6323 12 months ago 420MB +us.gcr.io/google-appengine/ubuntu-php cloudbuild_cache 9f04949b8199 12 months ago 430MB +us.gcr.io/google-appengine/ubuntu-php70 cloudbuild_cache af9a489d9b03 12 months ago 433MB +us.gcr.io/google-appengine/ubuntu-php72 cloudbuild_cache 3456a3b1c31a 12 months ago 438MB +us.gcr.io/google-appengine/ubuntu-php71 cloudbuild_cache 8998706fd9a6 12 months ago 430MB +us.gcr.io/gcp-runtimes/ruby/generate-dockerfile cloudbuild_cache b7884ec904ab 13 months ago 734MB +us.gcr.io/gcp-runtimes/ruby/build-tools cloudbuild_cache e05dc37d438f 13 months ago 176MB +us.gcr.io/google-appengine/ruby cloudbuild_cache ffdb84c9dd34 13 months ago 734MB +us.gcr.io/google-appengine/golang _cloudbuild_cache_898860202204764712 56521497699d 14 months ago 418MB +us.gcr.io/google-appengine/golang cloudbuild_cache 56521497699d 14 months ago 418MB +us.gcr.io/google-appengine/base _cloudbuild_cache_8249030965139585917 018b76ff63bc 15 months ago 132MB +us.gcr.io/google-appengine/base cloudbuild_cache 018b76ff63bc 15 months ago 132MB +us.gcr.io/gcp-runtimes/go1-builder 1.8_cloudbuild_cache 332341929bbf 15 months ago 486MB +us.gcr.io/google-appengine/java-compat _cloudbuild_cache_9010467728050264449 008b788b3014 23 months ago 312MB +us.gcr.io/google-appengine/java-compat cloudbuild_cache 008b788b3014 23 months ago 312MB +gcr.io/distroless/base _cloudbuild_cache_2740376916591569721 a0cfcd4cc98a 49 years ago 16.9MB +gcr.io/distroless/base cloudbuild_cache a0cfcd4cc98a 49 years ago 16.9MB + +``` + +===Community Builders=== +Builders yang dikontribusikan oleh publik tersedia di [[Cloud Community repo|https://github.com/GoogleCloudPlatform/cloud-builders-community]] antara lain: + +* android: https://developer.android.com/studio/ +* ansible: https://docs.ansible.com/ +* composer: https://getcomposer.org/ +* docker-compose: https://docs.docker.com/compose/ +* firebase: https://firebase.google.com/docs/cli/ +* glide: https://glide.sh/ +* helm: https://helm.sh/docs/ +* hub: https://hub.github.com/ +* kaniko: https://github.com/GoogleContainerTools/kaniko +* pylint: https://www.pylint.org/ +* tar: https://linux.die.net/man/1/tar +* traceroute: https://packages.debian.org/jessie/traceroute + +===SSH Remote-Builder=== +[[Remote-Builder|https://github.com/GoogleCloudPlatform/cloud-builders-community/blob/master/remote-builder]] ini adalah salah satu kontribusi ke [[Google-Cloud-Builders#Community-Builders|Community Builders]] sebagai alternatif solusi menangani beberapa beban kerja integrasi berkelanjutan yang membutuhkan jenis pembangun khusus bagi Anda yang mungkin memerlukan hal-hal seperti: + +* Mesin CPU / Memori tinggi +* Gambar khusus +* GPU terpasang +* Disk cepat atau besar +* Mesin dalam jaringan tertentu +* Pre-emptibility + +Dalam kasus ini, Anda dapat memanfaatkan Pembuat Kontainer untuk memicu bangunan Anda dan mengelola alur kerjanya tetapi menjalankan langkah-langkah pembangunan yang sebenarnya pada sebuah instance dengan konfigurasi persis yang Anda butuhkan. +[[|https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/remote-builder]]
+Bagaimana caranya?
+Saat menggunakan builder, [[Kunci SSH sementara|https://github.com/MarketLeader/Tutorial-Buka-Toko/wiki/SSH-Key#buat-baru]] akan [[dibuat di Workspace|https://github.com/GoogleCloudPlatform/cloud-builders-community/blob/master/remote-builder/run-builder.sh#L19]] Builder Anda: +``` +KEYNAME=builder-key +# TODO Need to be able to detect whether a ssh key was already created +ssh-keygen -t rsa -N "" -f ${KEYNAME} -C ${USERNAME} || true +chmod 400 ${KEYNAME}* + +cat > ssh-keys < /workspace/myfile.txt +``` +result.bash +``` +#!/bin/bash +_BUILD_TAG=`cat /workspace/myfile.txt` +echo "the transferred value is: $_BUILD_TAG" +``` +Output +``` +BUILD +Starting Step #0 +Step #0: Pulling image: ubuntu +Step #0: Using default tag: latest +Step #0: latest: Pulling from library/ubuntu +Step #0: Digest: sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395 +Step #0: Status: Downloaded newer image for ubuntu:latest +Finished Step #0 +Starting Step #1 +Step #1: Already have image (with digest): gcr.io/cloud-builders/docker +Step #1: the transferred value is: 20190708T1706_myvar +Finished Step #1 +PUSH +DONE +``` +===Deploy GCE/GKE=== +Lihat continuous-deployment ke GCE ''[[via scp|https://documentation.codeship.com/pro/continuous-deployment/google-compute-engine/]]'' dan ''[[cloud build|https://medium.com/google-cloud/continuous-delivery-in-google-cloud-platform-cloud-build-with-compute-engine-a95bf4fd1821]]'' + +[[|https://medium.com/google-cloud/continuous-delivery-in-google-cloud-platform-cloud-build-with-compute-engine-a95bf4fd1821]] + +==Syncing Upstream== +Secara umum GitHub tidak sediakan fasilitas untuk update otomatis ke upstream. Kita hanya dapat melakukannya manual. + +Sejauh ini cara yang paling mungkin sesuai diskusi di ''[[stackoverflow|https://stackoverflow.com/a/38802129/4058484]]'' adalah via ''[[backstroke|https://github.com/1egoman/backstroke]]'' di input sebagai url payload untuk Webhook. + +[[|https://stackoverflow.com/a/38171158/4058484]] + +===Subscribe=== +Subscibe dengan GMail. +```txt +Subject: [mirumee/saleor] 2.3.1 + +Fix access to private variant fields in API - #3773 by maarcingebala + +— +You are receiving this because you are subscribed to this thread. +View it on GitHub or unsubscribe from all notifications for this repository. +``` +Email ini kemudian kita filter pakai ''[[Penerusan dan POP/IMAP|https://mail.google.com/mail/u/0/#settings/fwdandpop]]'' untuk dikirim ke alamat email dari ''[[IAM Akun Admin|https://console.cloud.google.com/iam-admin/iam]]'' di Google Cloud. + +===Filter Email=== +Kemudian kita gunakan cara kirim email ke script sbb: +* pakai ''[[CLI SAPI|http://php.net/manual/en/features.commandline.io-streams.php]]'' untuk kirim ke ''[[php script|http://harrybailey.com/2009/02/send-or-pipe-an-email-to-a-php-script/]]'' atau +* pakai ''[[FeedParser API|http://docs.python.org/2/library/email.parser.html#feedparser-api]]'' untuk kirim ke ''[[python script|https://stackoverflow.com/a/14389780/4058484]]''. + +===Update Master=== +Pada script yang dituju kita buat perintah yang dijalankan di shell script untuk ''[[Penyetelan-Aplikasi#Force_Update_Master|update master]]''. +```bash +$ REPO_URL=https://source.developers.google.com/p/chetabahana/r/github_chetabahana_saleor +$ cloudshell_open --repo_url "REPO_URL" \ + --page "editor" --open_in_editor "./" \ + --git_branch "master" +``` + +Setelah repo di update maka [[Google-Cloud-Builders#implementasi|Cloud Builder]] otomatis akan ditrigger untuk deploy versi terbaru. +==Hasil Build== +===Lihat Hasil=== +Lihat ''[[Viewing build results|https://cloud.google.com/cloud-build/docs/view-build-results]]'' dan ''[[cara kirim notifikasi|https://cloud.google.com/cloud-build/docs/send-build-notifications]]'' + +===Debug Hasil=== +Lihat ''[[lokal debug|https://cloud.google.com/cloud-build/docs/build-debug-locally]]'' + +===Percepat Hasil=== +Lihat ''[[Speeding up your Builds|https://cloud.google.com/cloud-build/docs/speeding-up-builds]]'' + +==''Referensi''== +* [[Cloud Build pricing|https://cloud.google.com/cloud-build/#cloud-build-pricing]] +* [[Cloud Build documentation|https://cloud.google.com/cloud-build/docs/]] \ No newline at end of file diff --git a/Google-Cloud-Firestore.mediawiki b/Google-Cloud-Firestore.mediawiki new file mode 100644 index 000000000000..3a17bfb341f5 --- /dev/null +++ b/Google-Cloud-Firestore.mediawiki @@ -0,0 +1 @@ +https://console.cloud.google.com/firestore/data/buka-toko/profile-id?project=chetabahana&organizationId=0 \ No newline at end of file diff --git a/Google-Cloud-Functions.mediawiki b/Google-Cloud-Functions.mediawiki new file mode 100644 index 000000000000..308a428a9fe3 --- /dev/null +++ b/Google-Cloud-Functions.mediawiki @@ -0,0 +1,262 @@ +==Benefit== +[[Fungsi cloud|https://cloud.google.com/functions/]] memungkinkan Anda untuk [[membuat respon online|https://console.cloud.google.com/functions/list]] dengan intruksi program baik secara langsung ataupun via feedback dari suatu layanan tanpa harus menyediakan server. + +Respon dapat dikirim ke sumber daya lain di [[Home#kenapa-google-cloud|Google Platform]] maupun tempat lain seperti [[GitHub Actions|https://github.com/chetabahana/chetabahana.github.io/wiki/Akun-GitHub-Actions]] atau [[Apa-Itu-Codefresh|Codefresh]] untuk [[triggering|https://github.com/MarketLeader/Tutorial-Buka-Toko/wiki/Apa-Itu-Codefresh#triggering]] atau akses database seperti [[vitess|https://github.com/github/vitess-gh]]. +

+[[|https://cloud.google.com/images/products/functions/how-it-works.svg]] + +===Harga=== +Fungsi Cloud diberi [[harga|https://cloud.google.com/functions/pricing]] sesuai dengan berapa lama fungsi Anda berjalan, berapa kali itu dipanggil dan berapa banyak sumber daya yang Anda berikan untuk fungsi tersebut. + +[[|https://user-images.githubusercontent.com/36441664/63488344-dd856e00-c4d8-11e9-9a34-180ede276d5b.png]] + +===SSL/TLS=== +Fungsi yang digunakan dengan pemicu HTTP diberikan domain yang sepenuhnya memenuhi syarat bersama dengan sertifikat SSL / TLS yang dihasilkan secara dinamis untuk komunikasi yang aman. + +Menggunakan Repositori Sumber Cloud Anda dapat menggunakan Fungsi Cloud langsung dari repositori GitHub atau Bitbucket Anda tanpa perlu mengunggah kode atau mengelola versi sendiri. + +==Implementasi== +* [[Requests: HTTP for Humans™|https://requests.readthedocs.io/en/latest/#requests-http-for-humans]] + +Cloud Function disediakan dalam [[Node.js, Python, and Go|https://cloud.google.com/functions/docs/writing/]]. Untuk Java +sampai tulisan ini dibuat masih status [[Alpha|https://docs.google.com/forms/d/e/1FAIpQLScC98jGi7CfG0n3UYlj7Xad8XScvZC8-BBOg7Pk3uSZx_2cdQ/viewform]]. Namun untuk custom function bisa gunakan [[Java Library|https://developers.google.com/api-client-library/java/apis/cloudfunctions/v1]]. + +===Listener=== +Salah satu implementasi [[Cloud Function|https://cloud.google.com/functions/docs/calling/http]] di projeck ini adalah untuk merespon [[Docker Webhook|https://docs.docker.com/docker-hub/webhooks/]]. + +Lihat [[HTTP Tutorial|https://cloud.google.com/functions/docs/tutorials/http]] dan [[HTTP Functions|https://cloud.google.com/functions/docs/writing/http]]: +``` +$ gcloud functions deploy FUNCTION_NAME --runtime nodejs8 --trigger-http +$ gcloud functions call FUNCTION_NAME --data '{"name":"Keyboard Cat"}' +``` +====Trigger==== +Cara ackifkan via Http Post: +``` +curl -X POST "https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME" -H "Content-Type:application/json" --data '{"name":"Keyboard Cat"}' +``` +Anda dapat melakukan test di [[Console Cloud Function|https://console.cloud.google.com/functions/list]] +[[|https://github.com/MarketLeader/Toko-Chetabahana/releases]] + +====Source==== +[[Contoh dalam python|https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/functions/helloworld/main.py]]: +``` +from flask import escape + +def hello_http(request): + """HTTP Cloud Function. + Args: + request (flask.Request): The request object. + + Returns: + The response text, or any set of values that can be turned into a + Response object using `make_response` + . + """ + request_json = request.get_json(silent=True) + request_args = request.args + + if request_json and 'name' in request_json: + name = request_json['name'] + elif request_args and 'name' in request_args: + name = request_args['name'] + else: + name = 'World' + return 'Hello {}!'.format(escape(name)) +``` + +====Event==== +Contoh [[Docker Webhook|https://docs.docker.com/docker-hub/webhooks/#example-webhook-payload]] Post format: +``` +{ + "callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/", + "push_data": { + "images": [ + "27d47432a69bca5f2700e4dff7de0388ed65f9d3fb1ec645e2bc24c223dc1cc3", + "51a9c7c1f8bb2fa19bcd09789a34e63f35abb80044bc10196e304f6634cc582c", + "..." + ], + "pushed_at": 1.417566161e+09, + "pusher": "trustedbuilder", + "tag": "latest" + }, + "repository": { + "comment_count": 0, + "date_created": 1.417494799e+09, + "description": "", + "dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\n\n\nVOLUME\u0009\u0009[/var/cache/apt-cacher-ng]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n", + "full_description": "Docker Hub based automated build from a GitHub repo", + "is_official": false, + "is_private": true, + "is_trusted": true, + "name": "testhook", + "namespace": "svendowideit", + "owner": "svendowideit", + "repo_name": "svendowideit/testhook", + "repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/", + "star_count": 0, + "status": "Active" + } +} +``` +Jika kita kirim request ini maka responnya: +``` +Hello World! +``` +Kita ubah 'name' di [[Google-Cloud-Functions#source|Source]] dengan 'callback_url' maka respon dari request ini: +``` +Hello https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/! +``` +Ubah lagi ['callback_url'] dengan ['repository']['name'] maka respon dari request ini: +``` +Hello testhook! +``` + +===Callback=== +* [[Execute curl command within a Python script|https://stackoverflow.com/a/31764155/4058484]] +====Validate==== +Untuk [[memvalidasi panggilan balik|https://docs.docker.com/docker-hub/webhooks/#validating-a-webhook-callback]] dalam Docker webhook, Anda harus melakukan hal berikut: + +* Ambil nilai callback_url di payload JSON permintaan. +* Kirim permintaan POST ke URL ini yang berisi badan JSON yang valid. +``` +{ + "state": "success", + "description": "387 tests PASSED", + "context": "Continuous integration by Acme CI", + "target_url": "http://ci.acme.com/results/afd339c1c3d27" +} +``` +====Respon==== +Dengan menggunakan [[python: requests|https://stackoverflow.com/a/31764155/4058484]] ubah [[Google-Cloud-Functions#source|Source]] untuk respon seperti [[Google-Cloud-Functions#Trigger|trigger curl]] sbb: +``` +from flask import escape +import requests + +def hello_http(request): + """HTTP Cloud Function. + Args: + request (flask.Request): The request object. + + Returns: + The response text, or any set of values that can be turned into a + Response object using `make_response` + . + """ + headers = {} + payload = { + "state": "success", + "description": "387 tests PASSED", + "context": "Continuous integration by Acme CI", + "target_url": "http://ci.acme.com/results/afd339c1c3d27" + } + request_args = request.args + request_json = request.get_json(silent=True) + + if request_json and 'callback_url' in request_json: + callback_url = request_json['callback_url'] + elif request_args and 'callback_url' in request_args: + callback_url = request_args['callback_url'] + else: + callback_url = 'World' + res = requests.post(url=callback_url, data=payload, headers=headers) + return 'Send the payload data to: {}!'.format(escape(callback_url)) +``` +====Deploy==== +Untuk jalankan dengan [[Requests|https://2.python-requests.org/en/master/]] dapat diakukan salah satu dari cara berikut: + +* clone [[sumber|https://github.com/psf/requests]] dan masukkan [[Google-Cloud-Functions#Respon|respon]] dengan nama file main.yml disitu atau +* cukup masukkan [[versinya|https://pypi.org/project/requests/]] saja di file lain dengan nama requirements.txt atau +* masukkan [[Google-Cloud-Functions#Respon|respon]] ke file main.yml di [[console|https://console.cloud.google.com/functions/list]] dan edit file requirements.txt sbb: +``` +# Function dependencies, for example: +# package>=version +-i https://pypi.python.org/simple +requests>=2.22.0 +``` +[[|https://github.com/MarketLeader/Toko-Chetabahana/releases]] + +===Integrasi=== +Selanjutnya kita akan integrasikan dengan [[Apa-Itu-Codefresh#triggering|triggering]] ke pipeline di Codefresh. + +====API/CLI==== +``` +curl 'https://g.codefresh.io/api/builds/5b1a78d1bdbf074c8a9b3458' \ +--compressed -H 'content-type:application/json; charset=utf-8' \ +-H 'Authorization: ' \ +--data-binary '{"serviceId":"5b1a78d1bdbf074c8a9b3458",\ +"type":"build","repoOwner":"kostis-codefresh",\ +"branch":"master","repoName":"nestjs-example",\ +"variables":{"sample-var1":"sample1","SAMPLE_VAR2":"SAMPLE2"}}' +``` +====Function==== +``` +from flask import escape +import requests +import json +import os + + +def http_callback(event): + """HTTP Cloud Function. + Args: + request (flask.Request): The request object. + + Returns: + The response text, or any set of values that can be turned into a + Response object using `make_response` + . + """ + headers = {} + payload = { + "state": "success", + "description": "image PASSED", + "context": "Continuous integration by Codefresh", + "target_url": "https://g.codefresh.io/api/builds/5b1a78d1bdbf074c8a9b3458" + } + + event_json = event.get_json(silent=True) + if event_json and 'callback_url' in event_json: + callback_url = event_json['callback_url'] + r = requests.post(url=callback_url, data=payload, headers=headers) + return http_trigger(event_json) + + +def http_trigger(event_json): + """HTTP Cloud Function. + Args: + Requests is an elegant and simple HTTP library for Python, built for human beings.. + + Returns: + Example - Triggering pipelines + You can also pass extra environment variables using an array + . + """ + headers = { + "content-type": "application/json; charset=utf-8", + "Authorization": "{}".format(escape(os.environ.get("CF_API_KEY"))) + } + payload = { + "serviceId": os.environ.get("CF_SERVICE_ID"), + "variables": {"JSON_DATA": json.dumps(event_json)} + } + url = "https://g.codefresh.io/api/builds/" + os.environ.get("CF_SERVICE_ID") + r = requests.post(url, data=json.dumps(payload), headers=headers) + return str(r.status_code) +``` + +====Webhook==== + +[[|https://docs.docker.com/docker-hub/webhooks/#example-webhook-payload]] + + +==Pengembangan== +===Aplikasi=== +Contoh di atas bisa dilakukan untuk banyak kepentingan lain. Pustaka program bantu seperti ''[[Google-Cloud-Functions#respon|Request]]'' secara default sudah termasuk dalam file ''[[Pipfile|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/Pipfile#L51]]'' sehingga akan selalu tersedia dalam pengoperasian secara keseluruhan via [[requirements.txt|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/requirements.txt]] dan [[requirements_dev.txt|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/requirements_dev.txt]]. + +===Clustering=== +Untuk skala yang lebih tinggi dimana diperlukan lingkungan yang menunjang kluster tanpa perlu menyediakan server maka Anda bisa pakai [[Cloud Run|https://cloud.google.com/run/]]. Memungkinkan Anda untuk menjalankan kontainer stateless di lingkungan yang dikelola sepenuhnya atau di cluster GKE Anda sendiri. + +==''Referensi''== +* [[Cloud Functions for Firebase|https://firebase.google.com/docs/functions]] +* [[How to write cloud functions in java|https://stackoverflow.com/a/55822614/4058484]] +* [[Google Cloud - API Client Libraries Java|https://developers.google.com/api-client-library/java/google-api-java-client/dev-guide]] \ No newline at end of file diff --git a/Google-Cloud-Run.mediawiki b/Google-Cloud-Run.mediawiki new file mode 100644 index 000000000000..a1b86adbe1dc --- /dev/null +++ b/Google-Cloud-Run.mediawiki @@ -0,0 +1,10 @@ +Deskripsi +__TOC__ +==Arsitektur== +[[|https://medium.com/weareservian/3-best-features-of-google-cloud-run-546e367242ea]] +==Konfigurasi== +[[|https://cloud.google.com/run/pricing]] + +==Pengembangan== +==''Referensi''== +* [[Mediawiki - Cara format|https://m.mediawiki.org/wiki/Help:Formatting]] \ No newline at end of file diff --git a/Google-Cloud-Storage.mediawiki b/Google-Cloud-Storage.mediawiki new file mode 100644 index 000000000000..405fbcff56f3 --- /dev/null +++ b/Google-Cloud-Storage.mediawiki @@ -0,0 +1,22 @@ +https://codelabs.developers.google.com/codelabs/cloud-shell/index.html?index=..%2F..index + +https://codelabs.developers.google.com/codelabs/es003l-storage/index.html?index=..%2F..index + +https://codelabs.developers.google.com/codelabs/cloud-spring-datastore/index.html?index=..%2F..index#0 + +https://codelabs.developers.google.com/codelabs/cloud-upload-objects-to-cloud-storage/index.html?index=..%2F..index#0 + +https://codelabs.developers.google.com/codelabs/gcp-aws-gsutil/index.html?index=..%2F..index#0 + +https://codelabs.developers.google.com/codelabs/cloud-function2sheet/index.html?index=..%2F..index#0 + +https://cloud.google.com/storage/docs/gsutil/commands/web + +https://stackoverflow.com/a/38866924 + +https://cloud.google.com/storage/docs/gsutil/addlhelp/WorkingWithObjectMetadata + +https://support.google.com/domains/answer/7630973?hl=en&ref_topic=9018335 + +https://geekflare.com/gcs-site-over-https/ + diff --git a/Google-Compute-Engine.mediawiki b/Google-Compute-Engine.mediawiki new file mode 100644 index 000000000000..075f0c696741 --- /dev/null +++ b/Google-Compute-Engine.mediawiki @@ -0,0 +1,306 @@ +__TOC__ + +==Install== +Lihat: +* Setel [[variabel lingkungan|https://stackoverflow.com/a/55072517/4058484]] + +===Instal Apache2=== +Lihat [[Setting Up LAMP|https://cloud.google.com/community/tutorials/setting-up-lamp]] +```bash +$ sudo apt-get install apache2 php libapache2-mod-php +$ sudo /usr/sbin/apachectl start +$ sudo chkconfig apache2ctl on +$ sudo sh -c 'echo "" > /var/www/html/phpinfo.php' +``` + +Cek [[http://[IP_ADDRESS]|http://apache2.chetabahana.com]] dan [[http://[IP_ADDRESS]/phpinfo.php|http://php.chetabahana.com/phpinfo.php]] +```bash +/etc/apache2/ +|-- apache2.conf +| `-- ports.conf +|-- mods-enabled +| |-- *.load +| `-- *.conf +|-- conf-enabled +| `-- *.conf +|-- sites-enabled +| `-- *.conf +``` + +Konfigurasi Apache2 Ubuntu + +* File konfigurasi utama adalah apache2.conf. Ini menempatkan potongan-potongan bersama dengan memasukkan semua file konfigurasi yang tersisa ketika memulai server web, * ports.conf selalu disertakan dari file konfigurasi utama. Ini digunakan untuk menentukan port mendengarkan untuk koneksi masuk, dan file ini dapat disesuaikan kapan saja. +* File-file konfigurasi di direktori-direktori mod-enabled /, conf-enabled / dan enabled-enabled / berisi cuplikan-cuplikan konfigurasi tertentu yang masing-masing mengelola modul, fragmen konfigurasi global, atau konfigurasi host virtual. Mereka diaktifkan dengan menghubungkan file-file konfigurasi yang tersedia dari masing-masing * -tersedia / rekan. Ini harus dikelola dengan menggunakan a2enmod pembantu kami, a2dismod, a2ensite, a2dissite, dan a2enconf, a2disconf. Lihat halaman manual masing-masing untuk informasi terperinci. +* Biner disebut apache2. Karena penggunaan variabel lingkungan, dalam konfigurasi default, apache2 perlu dimulai / dihentikan dengan /etc/init.d/apache2 atau apache2ctl. Memanggil / usr / bin / apache2 secara langsung tidak akan berfungsi dengan konfigurasi default. +* Root Dokumen Secara default, Ubuntu tidak mengizinkan akses melalui browser web ke file apa pun selain dari yang terletak di / var / www, direktori public_html (bila diaktifkan) dan / usr / share (untuk aplikasi web). Jika situs Anda menggunakan root dokumen web yang terletak di tempat lain (seperti di / srv), Anda mungkin perlu memasukkan daftar putih direktori root dokumen Anda di /etc/apache2/apache2.conf. +* Root dokumen default Ubuntu adalah / var / www / html. Anda dapat membuat host virtual sendiri di bawah / var / www. Ini berbeda dengan rilis sebelumnya yang memberikan keamanan yang lebih baik. + +Dokumen Lengkap apache2-doc tersedia di: /usr/share/doc/apache2/README.Debian.gz + +===Instal Postgres=== +Lihat ''[[Setting up PostgreSQL|https://cloud.google.com/community/tutorials/setting-up-postgres#setting-up-postgresql]]'' +```bash +$ sudo apt-get -y install postgresql postgresql-client postgresql-contrib +$ sudo -s +root@instance-sql:~# sudo -u postgres psql postgres +postgres=# SELECT version(); + version +-------------------------------------------------------------------------------------------------------------- +PostgreSQL 9.3.24 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4, 64-bit +(1 row) +``` + +Untuk ubah versi lihat ''[[Cek Port|https://serverfault.com/a/325947/366042]]'', ''[[Ubah Port|https://askubuntu.com/a/33231/486942]]'' atau ''[[Disable Versi|https://serverfault.com/a/582718/366042]]'' +```bash +$ pg_lsclusters +Ver Cluster Port Status Owner Data directory Log file +9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log +9.5 main 5433 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log +10 main 5434 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log + +$ sudo nano /etc/postgresql/9.3/main/start.conf +#ubah 'auto' ke 'disabled' + +$ sudo nano /etc/postgresql/10/main/start.conf +#ubah 'auto' ke 'disabled' +``` + +Edit File [[pg_hba.conf dan postgresql.conf|https://cloud.google.com/community/tutorials/setting-up-postgres#configure-postgresql-remote-access]] +```bash +$ sudo nano /etc/postgresql/9.5/main/postgresql.conf +#hapus tagar dan ubah 'localhost' ke '*' dan +#ubah '5433' ke '5432' + +$ sudo nano /etc/postgresql/9.5/main/pg_hba.conf +#tambahkan di baris paling bawah +#host all all 0.0.0.0/0 trust +``` + +Restart postgres dan cek database +```bash +$ sudo service postgresql restart +$ sudo -s +root@instance-sql:~# sudo -u postgres psql postgres +postgres=# SELECT version(); + version +------------------------------------------------------------------------------------------------------------------- + PostgreSQL 9.5.14 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609, 64-bit +(1 row) +postgres=# \password postgres +postgres=# CREATE EXTENSION adminpack; +CREATE EXTENSION +postgres=# \q +root@instance:~# exit +exit +$ +``` + +Buat Superuser dan database saleor +```bash +$ psql "host=127.0.0.1 sslmode=disable dbname=saleor user=saleor" +saleor=# CREATE EXTENSION adminpack; +saleor=# \q +``` + +Koneksi +```bash +$ gcloud compute instances add-tags instance-sql --tags postgres-server +$ gcloud compute firewall-rules create "postgres-remote-access" \ + --allow tcp:5432 --source-tags "postgres-client" \ + --target-tags "postgres-server" +$ psql "host=[IPV4_ADDRESS] port=5432 Modesto=disable dbname=saleor user=saleor" +$ psql -h [IPV4_ADDRESS] -p 5432 -U saleor + +$ psql postgresql://saleor:saleor@[IPV4_ADDRESS]:5432/saleor +$ psql postgres://saleor:saleor@[IPV4_ADDRESS]/saleor +``` + +===Instal MySQL=== +Lihat [[Set Up MySQL|https://cloud.google.com/solutions/setup-mysql]] dan [[connect to MySQL|https://stackoverflow.com/a/1559992/4058484]] + +```bash +$ sudo apt-get -y install mysql-server +$ sudo mysql_secure_installation +$ sudo mysql --user=root -p[ROOT_PASSWORD] -e "show databases" +$ sudo mysql -u root -p admin +mysql> CREATE DATABASE dbname; +mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; +mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' WITH GRANT OPTION; +mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; +mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION; +mysql> SELECT User FROM mysql.user; +mysql > exit +$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf +cat bind-address = 0.0.0.0 +$ sudo service mysql restart +``` + +Firewall +```bash +$ gcloud compute instances add-tags instance-sql --tags mysql-server +$ gcloud compute firewall-rules create "mysql-remote-access" \ + --allow tcp:3306 --source-tags "mysql-client" \ + --target-tags "mysql-server" +$ mysql --host=[IPV4_ADDRESS] -u wordpress -p +MySQL > exit +``` + +===Instal Redis=== +Lihat [[Set Up Redis|https://cloud.google.com/community/tutorials/setting-up-redis]] +```bash +$ sudo apt-get -y install redis-server +$ ps -f -u redis + +``` +Edit [[redis.conf|https://cloud.google.com/community/tutorials/setting-up-redis#configure-redis-remote-access]] dan restart server +```bash +sudo service redis-server restart +$ ps -f -u redis +``` +Buat [[Firewall|https://cloud.google.com/community/tutorials/setting-up-redis#open-the-network-port-optional]] dan cek redis +```bash +$ sudo apt install redis-tools +$ redis-cli -h [REDIS_IPV4_ADDRESS] ping +PONG +$ (printf "PING\r\n";) | nc [REDIS_IPV4_ADDRESS] 6379 ++PONG +$ curl -w '\n' http://[REDIS_IPV4_ADDRESS]:6379/ping +{"ping":"PONG"} +$ exec 3<>/dev/tcp/[REDIS_IPV4_ADDRESS]/6379 && echo -e "PING\r\n" >&3 && head -c 7 <&3 ++PONG +``` + +Firewall +```bash +$ gcloud compute instances add-tags instance-sql --tags redis-server +$ gcloud compute firewall-rules create "redis-remote-access" \ + --allow tcp:6379 --source-tags "redis-client" \ + --target-tags "redis-server" +``` + +Cara Koneksi lihat ''[[Cek Redis|https://redis.io/topics/quickstart#check-if-redis-is-working]]'' +```bash +$ redis-cli -h [IPV4_ADDRESS] +redis> ping +PONG +redis> set mykey somevalue +OK +redis> get mykey +"somevalue" +redis> exit +``` + +===Instal Git=== +Lihat ''[[Install Git Server Linux|https://www.linux.com/learn/how-run-your-own-git-server]]'' dan ''[[Setel Git Server|https://git-scm.com/book/it/v2/Git-on-the-Server-Setting-Up-the-Server]]'' + +===Upgrade=== +```bash +$ do-release-upgrade +$ sudo apt-get update +``` + +===Service=== +```bash +$ sudo netstat -plnt +Active Internet connections (only servers) +Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name +tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 874/redis-server 0. +tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 636/systemd-resolve +tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1065/sshd +tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 902/postgres +tcp6 0 0 :::3306 :::* LISTEN 905/mysqld +tcp6 0 0 :::80 :::* LISTEN 891/apache2 +tcp6 0 0 :::22 :::* LISTEN 1065/sshd +tcp6 0 0 :::5432 :::* LISTEN 902/postgres +``` + +==Issue== +Setiap Anda update server atau component sebaiknya Anda cek startup atau booting nya + +===Error NXDOMAIN=== +Stop Instance, tunggu sampai berhenti, lalu start dan konek ke serial-port +``` +$ gcloud compute connect-to-serial-port --zone= +``` +Cek error berikut +``` +instance systemd-resolved[882]: Server returned error NXDOMAIN, \ +mitigating potential DNS violation DVE-2018-0001, \ +retrying transaction with reduced feature level UDP. +``` + +Ini dikarenakan ada konfigurasi lama yang masih aktif. + +Cara cari solusi: [[Googling: [SOLVED] Server returned error NXDOMAIN|https://www.google.com/search?newwindow=1&safe=active&q=%5BSOLVED%5D+Server+returned+error+NXDOMAIN&nirf=%5BRESOLVED%5D+Server+returned+error+NXDOMAIN]] + +Arternatif solusinya antara lain sbb +* [[Server returned error NXDOMAIN|https://askubuntu.com/questions/1058750/new-alert-keeps-showing-up-server-returned-error-nxdomain-mitigating-potential]] +* [[[SOLVED]Problems with DNS name resolution|https://ubuntuforums.org/showthread.php?t=2371249]] +* [[Domain resolving with NXDOMAIN or incorrect IP address|https://support.opendns.com/hc/en-us/articles/227986767-Domain-resolving-with-NXDOMAIN-or-incorrect-IP-address]] +* [[[SOLVED]Ubuntu 18.04 systemd-resolved error NXDOMAIN|https://askubuntu.com/questions/1115882/ubuntu-18-04-systemd-resolved-error-nxdomain]] + +Dari alrenatif di atas salah satu langkah yang bisa dilakukan adalah sbb +``` +$ ls -l /etc/resolv.conf +lrwxrwxrwx 1 root root 29 Feb 9 /etc/resolv.conf -> ../run/resolvconf/resolv.conf + +$ sudo nano /run/resolvconf/resolv.conf +# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) +# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN +# 127.0.0.53 is the systemd-resolved stub resolver. +# run "systemd-resolve --status" to see details about the actual nameservers. +nameserver 127.0.0.53 +search .c..internal c..internal google.internal sql +options edns0 + +$ test -e /run/systemd/resolve/resolv.conf && echo file exists || echo file not found +file exists + +$ sudo nano /run/systemd/resolve/resolv.conf +# This file is managed by man:systemd-resolved(8). Do not edit. +# +# This is a dynamic resolv.conf file for connecting local clients directly to +# all known uplink DNS servers. This file lists all configured search domains. +# +# Third party programs must not access this file directly, but only through the +# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way, +# replace this symlink by a static file or a different symlink. +# +# See man:systemd-resolved.service(8) for details about the supported modes of +# operation for /etc/resolv.conf. + +nameserver XXX.XXX.XXX.XXX +search .c..internal c..internal google.internal sql +options edns0 + +$ sudo ln -fs /run/systemd/resolve/resolv.conf /etc/resolv.conf +$ ls -l /etc/resolv.conf +lrwxrwxrwx 1 root root 32 Mar 11 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf +``` +Stop instance dan cek kembali seperti langkah semula.
+Jika ternyata masih ada Warning seperti ini +``` +Mar 11 04:02:57 instance resolvconf[341]: /etc/resolvconf/update.d/libc: +Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf +``` +Maka lalukan peintah berikut.. +``` +$ sudo dpkg-reconfigure resolvconf +ls -l /etc/resolv.conf +``` + +==ToDo== +* https://serverfault.com/questions/895580/open-443-on-google-compute-instance +* Ubuntu's Kubernetes 1.14 distributions can bypass Docker and use containerd + directly, see https://bit.ly/ubuntu-containerd or try it now with + + snap install microk8s --channel=1.14/beta --classic + +* Get cloud support with Ubuntu Advantage Cloud Guest: + http://www.ubuntu.com/business/services/cloud + + +==''Referensi''== +* [[GCP Free Tier|https://cloud.google.com/free/docs/gcp-free-tier?hl=in]] +* [[Always Free Products|https://cloud.google.com/free/?hl=in]] +* [[Google Compute Engine Pricing|https://cloud.google.com/compute/pricing?hl=in]] diff --git a/Google-Merchant-Center.mediawiki b/Google-Merchant-Center.mediawiki new file mode 100644 index 000000000000..865623e673e8 --- /dev/null +++ b/Google-Merchant-Center.mediawiki @@ -0,0 +1 @@ +[[Google Product Category|https://www.google.com/basepages/producttype/taxonomy.en-US.txt]] diff --git a/Google-MyBusines.mediawiki b/Google-MyBusines.mediawiki new file mode 100644 index 000000000000..de08e8f3aab5 --- /dev/null +++ b/Google-MyBusines.mediawiki @@ -0,0 +1 @@ +https://www.en.advertisercommunity.com/t5/Google-My-Business/ct-p/GMB \ No newline at end of file diff --git a/Google-MyWebSite.mediawiki b/Google-MyWebSite.mediawiki new file mode 100644 index 000000000000..2308aa6c0018 --- /dev/null +++ b/Google-MyWebSite.mediawiki @@ -0,0 +1,5 @@ +https://www.canva.com/ + +https://www.bensound.com/ + +https://chrome.google.com/webstore/detail/vidiq-vision-for-youtube/pachckjkecffpdphbpmfolblodfkgbhl \ No newline at end of file diff --git a/GraphQL.mediawiki b/GraphQL.mediawiki new file mode 100644 index 000000000000..3e5d94f0cbbf --- /dev/null +++ b/GraphQL.mediawiki @@ -0,0 +1 @@ +https://docs.saleor.io/docs/next/api/intro-to-graphql/ \ No newline at end of file diff --git a/Gunicorn.mediawiki b/Gunicorn.mediawiki new file mode 100644 index 000000000000..13ee174ad100 --- /dev/null +++ b/Gunicorn.mediawiki @@ -0,0 +1,56 @@ +==Arsitektur== +[[|https://medium.com/building-the-system/gunicorn-3-means-of-concurrency-efbb547674b7]] + +===App Engine=== +====Penskalaan==== +* [[How Instances are Managed|https://cloud.google.com/appengine/docs/standard/python3/how-instances-are-managed]] + +[[|https://cloud.google.com/appengine/docs/standard/python3/how-instances-are-managed]] +==Kelola Instance== + +===Via app.yaml=== +``` +instance_class: F2 +entrypoint: gunicorn -b :$PORT saleor.wsgi --timeout 120 + +automatic_scaling: + max_instances: 1 +``` + +====Kasus Memory==== +* [[App Engine Standard - Instance classes|https://cloud.google.com/appengine/docs/standard/#instance_classes]] +* [[App Engine Pricing - Standard environment instances|https://cloud.google.com/appengine/pricing#standard_instance_pricing]] +``` +2019-04-10 05:14:39.799 ICT +While handling this request, the process that handled this request was found to be using +too much memory and was terminated. This is likely to cause a new process to be used for +the next request to your application. If you see this message frequently, you may have a +memory leak in your application or may be using an instance with insufficient memory. +Consider setting a larger instance class in app.yaml. + +2019-04-10 05:14:39.798 ICT +Exceeded soft memory limit of 256 MB with 312 MB after servicing 88 requests total. +Consider setting a larger instance class in app.yaml. +``` + +opsi +``` +entrypoint: gunicorn -b :$PORT saleor.wsgi --timeout 120 --threads 2 --log-level debug +--worker-class gthread --workers $((2 * $(getconf _NPROCESSORS_ONLN) + 1)) +``` + +====Kasus Performance==== +* [[Django, fast: part 2|https://blog.mirumee.com/django-fast-part-2-d73a4ecd61f3]] +* [[Add support for Gunicorn|https://github.com/mirumee/saleor/pull/4167]] + +[[|https://cdn-images-1.medium.com/max/2400/1*yAL7NXrpC_NhXRQMfpU66g.png]] + +==''Referensi''== + +* https://gunicorn.org/ +* https://pypi.org/project/gunicorn/ +* https://github.com/benoitc/gunicorn +* http://docs.gunicorn.org/en/stable/run.html +* https://blog.gevent.org/2010/02/27/why-gevent/ +* http://rahmonov.me/posts/run-a-django-app-with-gunicorn-in-ubuntu-16-04/ +* [[Benchmark uWSGI vs gunicorn for async workers|https://ivan-site.com/2012/09/benchmark-uwsgi-vs-gunicorn-for-async-workers/]] diff --git a/Instalasi-di-GAE.mediawiki b/Instalasi-di-GAE.mediawiki new file mode 100644 index 000000000000..44cd0156a43a --- /dev/null +++ b/Instalasi-di-GAE.mediawiki @@ -0,0 +1,361 @@ +Sesi ini kita akan kupas tentang cara mempersiapkan Instalasi [[Saleor|https://github.com/MarketLeader/Tutorial-Buka-Toko/wiki/Apa-Itu-Saleor]] di [[GAE|https://en.wikipedia.org/wiki/Google_App_Engine]] +__TOC__ +==Deploy== +Setelah kita selesai membuat [[Instalasi-di-PC|Aplikasi di PC]] maka kita bisa pasang [[Instalasi-di-GAE#via-source-code|via Source Code]] dan [[Instalasi-di-GAE#via-build-image|juga via Build Image]] baik secara ''[[Manual via Gcloud|https://cloud.google.com/appengine/docs/standard/python/getting-started/deploying-the-application]]'' maupun secara ''[[Otomatis via Cloud Build|https://cloud.google.com/source-repositories/docs/quickstart-triggering-builds-with-source-repositories]]''. + +===Via Source Code=== +Pemasangan [[Instalasi-di-PC#sumber-code|via Source Code]] di GAE akan mengikuti kaidah [[Apa-Itu-Saleor#Django|Django]] dimana berdasarkan tutorial ''[[app.yaml|https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/appengine/standard_python37/django/app.yaml]]'' bisa pakai gunicorn + +* Masukkan code entrypoint: gunicorn -b :$PORT saleor.wsgi kedalam file app.yaml +* Tambahkan baris dengan code gunicorn==19.7.1 kedalam file requirements.txt +* Saleor butuh memory lebih dari 128MB. Minimum ''[[instance_class: F2/B2|https://cloud.google.com/appengine/docs/standard/python3/config/appref#scaling_elements]]'' + +app.yaml +``` +env: standard +service: product +runtime: python37 +entrypoint: gunicorn -b :$PORT saleor.wsgi + +instance_class: F2 +automatic_scaling: + max_instances: 1 + +env_variables: + SECRET_KEY: [DJANGO_SECRET_KEY] + ALLOWED_HOSTS: product-dot-chetabahana.appspot.com,www.chetabahana.com + DATABASE_URL: postgresql://saleor:saleor@23.251.156.175/saleor + DEFAULT_CURRENCY: Rp + DEFAULT_COUNTRY: INDONESIA + CREATE_IMAGES_ON_DEMAND: False + +handlers: +- url: /static + static_dir: static/ + +- url: /.* + script: auto +$ gcloud app deploy --version=v1-4 +``` + +===Via Build Image=== +Setelan app.yaml lihat: +* ''[[Gen - Config|https://cloud.google.com/sdk/gcloud/reference/beta/app/gen-config]]'' +* ''[[Runtimes - Custom|https://cloud.google.com/appengine/docs/flexible/custom-runtimes/]]'' +* ''[[Environment - Flexible|https://cloud.google.com/python/django/flexible-environment]]' +* ''[[Resources - Three Simple Steps|https://medium.com/google-cloud/three-simple-steps-to-save-costs-when-prototyping-with-app-engine-flexible-environment-104fc6736495#5e8c]]'' +* ''[[Resources - f1-micro Bursting|https://cloud.google.com/compute/docs/machine-types#sharedcore]]'' +* ''[[Env Variables - Django’s Secret key setting|https://docs.djangoproject.com/en/2.1/ref/settings/#s-secret-key]]'' +* ''[[Env Variables - PostgreSQL Users|https://cloud.google.com/sql/docs/mysql/create-manage-users]]'': ubah default saleor: ''[[user/password|https://console.cloud.google.com/sql/instances/instance-postgres/users]]'', dan ''[[database|https://console.cloud.google.com/sql/instances/instance-postgres/databases]]'' +```bash +docker run -d gcr.io/chetabahana/saleor +CONTAINER_ID=$(docker ps -alq) +docker cp $CONTAINER_ID:/app . +docker stop $CONTAINER_ID +cd app +rm -rf Pipfile +rm -rf Pipfile.lock +cat 'gunicorn==19.7.1' > requirements.txt +gcloud app deploy --version=v1-4 +``` +==Database== + +===Cloud SQL=== +* [[Cloud Deployment Options|https://github.com/mirumee/saleor/issues/2533#issuecomment-480592821]] +Untuk jalankan Cloud SQL perlu Aktifkan ''[[Billing|https://console.cloud.google.com/project/_/settings]]'' dan ''[[SQL Admin API|https://console.cloud.google.com/flows/enableapi]]'' + +```bash +$ gcloud sql connect instance-postgres --user=saleor +saleor >\q +$ gcloud sql instances describe instance-postgres +backendType: SECOND_GEN +connectionName: chetabahana:us-central1:instance-postgres +databaseVersion: POSTGRES_9_6 +etag: 326a754445644907a9c2fc3954599c801ffbdd802bab1fadcefadcc5ad3045ce +gceZone: us-central1-c +instanceType: CLOUD_SQL_INSTANCE +ipAddresses: +- ipAddress: 10.59.224.3 + type: PRIVATE +kind: sql#instance +name: instance-postgres +project: chetabahana +region: us-central1 +selfLink: https://www.googleapis.com/sql/v1beta4/projects/chetabahana/instances/ +instance-postgres +serverCaCert: + cert: |- + -----BEGIN CERTIFICATE----- + ... + ... + -----END CERTIFICATE----- + certSerialNumber: '0' + commonName: C=US,O=Google\, Inc,CN=Google Cloud SQL Server CA + createTime: '2019-02-25T18:07:19.716000+00:00' + expirationTime: '2029-02-22T18:08:19.716000+00:00' + instance: instance-postgres + kind: sql#sslCert + sha1Fingerprint: c1eb9bca950838b0fa8474211f80d5f2142866c9 +serviceAccountEmailAddress: hvbaq25vvnfp5bh2caeedqanyq@speckle-umbrella-pg-8.iam +.gserviceaccount.com +settings: + activationPolicy: NEVER + availabilityType: ZONAL + backupConfiguration: + binaryLogEnabled: false + enabled: true + kind: sql#backupConfiguration + replicationLogArchivingEnabled: false + startTime: 23:00 + dataDiskSizeGb: '10' + dataDiskType: PD_SSD + ipConfiguration: + ipv4Enabled: false + privateNetwork: projects/chetabahana/global/networks/default + kind: sql#settings + locationPreference: + kind: sql#locationPreference + zone: us-central1-c + maintenanceWindow: + day: 0 + hour: 0 + kind: sql#maintenanceWindow + pricingPlan: PER_USE + replicationType: SYNCHRONOUS + settingsVersion: '14' + storageAutoResize: true + storageAutoResizeLimit: '0' + tier: db-custom-1-3840 + userLabels: + component: database +state: RUNNABLE +``` +Lihat ''[[Connecting from App Engine|https://cloud.google.com/sql/docs/postgres/connect-app-engine#connecting_the_flexible_environment_to]]''. Supaya GAE Flexible bisa connect via localhost 127.0.0.1:5243, copy dan isikan nilai connectionName di atas ke app.yaml sbb: +```bash +beta_settings: + cloud_sql_instances: chetabahana:us-central1:instance-postgres=tcp:5432 +``` + +Privat/Publik IP +```bash +$ gcloud sql connect instance-postgres +Whitelisting your IP for incoming connection for 5 minutes...done. +ERROR: (gcloud.sql.connect) It seems your client does not have ipv6 connectivity and the database instance does not have an ipv4 address. Please request an ipv4 address for this database instance. +``` +Selajutnya Instance kita "Muat Ulang" lalu kita Aktifkan Public IP dan pilih jaringan yang muncul +```bash +sql connect at time 2019-02-26 10:42:41.811213+00:00 +``` + +Simpan perubahan dan ulang koneksi +```bash +~$ gcloud sql connect instance-postgres +Whitelisting your IP for incoming connection for 5 minutes...done. +Connecting to database with SQL user [postgres].Password for user postgres: +psql (9.6.10) +SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off) +Type "help" for help. +postgres=> \q + +~$ gcloud sql connect instance-postgres --user=saleor +Whitelisting your IP for incoming connection for 5 minutes...done. +Connecting to database with SQL user [saleor].Password for user saleor: +psql: FATAL: database "saleor" does not exist + +``` +Tes Koneksi +Koneksi ke Database bisa dilakukan secara langsung maupun dilakukan via Cloud Proxy seperti terlihat di bagan berikut. +[[|https://cloud.google.com/sql/docs/postgres/sql-proxy]] + +```bash +get https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy +chmod +x cloud_sql_proxy +./cloud_sql_proxy -instances="chetabahana:us-central1:instance-postgres"=tcp:5432 + +virtualenv env +source env/bin/activate +pip install -r requirements.txt + +psql "host=127.0.0.1 sslmode=disable user=saleor dbname=saleor" +``` + +===Opsi via GCE=== +Lihat [[install-and-use-postgresql|https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-16-04]] +```bash +(.venv) ~/MYAPP$ sudo apt-get update +(.venv) ~/MYAPP$ sudo apt-get install postgresql postgresql-contrib +******************************************************************************** +You are running apt-get inside of Cloud Shell. Note that your Cloud Shell +machine is ephemeral and no system-wide change will persist beyond session end. + +You can customize your environment to permanently include this package by +updating your environment at https://cloud.google.com/console/cloudshell/environment/view. +******************************************************************************** +Reading package lists... Done +Building dependency tree +Reading state information... Done +Suggested packages: + postgresql-doc +The following NEW packages will be installed: + postgresql postgresql-contrib +0 upgraded, 2 newly installed, 0 to remove and 13 not upgraded. +Need to get 112 kB of archives. +After this operation, 123 kB of additional disk space will be used. +Get:1 http://deb.debian.org/debian stretch/main amd64 postgresql all 9.6+181+deb9u2 [55.8 kB] +Get:2 http://deb.debian.org/debian stretch/main amd64 postgresql-contrib all 9.6+181+deb9u2 [55.8 kB] +Fetched 112 kB in 0s (5,494 kB/s) +debconf: delaying package configuration, since apt-utils is not installed +Selecting previously unselected package postgresql. +(Reading database ... 46505 files and directories currently installed.) +Preparing to unpack .../postgresql_9.6+181+deb9u2_all.deb ... +Unpacking postgresql (9.6+181+deb9u2) ... +Selecting previously unselected package postgresql-contrib. +Preparing to unpack .../postgresql-contrib_9.6+181+deb9u2_all.deb ... +Unpacking postgresql-contrib (9.6+181+deb9u2) ... +Setting up postgresql-contrib (9.6+181+deb9u2) ... +Setting up postgresql (9.6+181+deb9u2) ... +~/MYAPP$ psql --version +psql (PostgreSQL) 9.6.10 +``` +Aktifkan PostgreSQL di [[Cloud SQL|https://cloud.google.com/sql/docs/postgres/quickstart]], buat user/password/database: ''saleor'' +```bash +(.venv) ~/MYAPP$ gcloud sql connect myinstance --user=saleor +Whitelisting your IP for incoming connection for 5 minutes...done. +Connecting to database with SQL user [saleor].Password for user saleor: +psql (9.6.10) +SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off) +Type "help" for help. + +saleor=> ^C +(.venv) ~/MYAPP$ +``` +Lihat [[proxy-test|https://cloud.google.com/sql/docs/postgres/quickstart-proxy-test]] +```bash +(.venv) ~/MYAPP$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy +(.venv) ~/MYAPP$ chmod +x cloud_sql_proxy +(.venv) ~/MYAPP$ ./cloud_sql_proxy -instances=marketstore:us-central1:myinstance=tcp:5432 +2019/02/16 06:59:03 Rlimits for file descriptors set to {&{8500 1048576}} +2019/02/16 06:59:04 Listening on 127.0.0.1:5432 for marketstore:us-central1:myinstance +2019/02/16 06:59:04 Ready for new connections +``` +Buka Cloud Shell baru +```bash +~$ psql "host=127.0.0.1 port=5432 sslmode=disable dbname=saleor user=saleor" +Password: +psql (9.6.10) +Type "help" for help. + +saleor=> ^D +~$ cd MYAPP && source .venv/bin/activate +(.venv) ~/MYAPP$ export SECRET_KEY='PUT_SOME_BIG_AND_COMPLICATED_SECRET_KEY' +(.venv) ~/MYAPP$ python manage.py makemigrations +Migrations for 'page': + saleor/page/migrations/0006_auto_20190215_1817.py + - Alter field is_published on page +Migrations for 'product': + saleor/product/migrations/0088_auto_20190215_1817.py + - Alter field is_published on collection +(.venv) ~/MYAPP$ python manage.py migrate +Operations to perform: + Apply all migrations: account, auth, checkout, contenttypes, discount, django_celery_results, django_prices_openexchangerates, django_prices_vatlayer, impersonate, menu, order, page, payment, product, sessions, shipping, site, sites, social_django +Running migrations: + Applying contenttypes.0001_initial... OK + Applying contenttypes.0002_remove_content_type_name... OK + Applying auth.0001_initial... OK + Applying auth.0002_alter_permission_name_max_length... OK + Applying auth.0003_alter_user_email_max_length... OK + ... + ... + Applying shipping.0014_auto_20180920_0956... OK + Applying site.0019_sitesettings_default_weight_unit... OK + Applying social_django.0001_initial... OK + Applying social_django.0002_add_related_name... OK + Applying social_django.0003_alter_email_max_length... OK + Applying social_django.0004_auto_20160423_0400... OK + Applying social_django.0005_auto_20160727_2333... OK + Applying social_django.0006_partial... OK + Applying social_django.0007_code_timestamp... OK + Applying social_django.0008_partial_timestamp... OK +``` + + +==Debug Instance== + +===Enable Debug=== +Lihat ''[[Debugging an Instance|https://cloud.google.com/appengine/docs/flexible/python/debugging-an-instance]]'' (Hanya bekerja pada type ''[[GAE Flexible|https://cloud.google.com/sdk/gcloud/reference/app/instances/enable-debug]]''). +```bash +$ gcloud app instances enable-debug +Choosing [product] for service. + +Choosing [v1-1] for version. + +Choosing [product/v1-1/aef-product-v1--1-85rr] for instance. + +About to enable debug mode for instance +[product/v1-1/aef-product-v1--1-85rr]. + +Do you want to continue (Y/n)? y + +Waiting for operation [apps/chetabahana/operations/599b6731-9413-4c64-8226-79d8 +d3c581a9] to complete...done. +Enabling debug mode for instance [product/v1-1/aef-product-v1--1-85rr]...done. +``` + +Setelah semua OK kembalikan ke normal +```bash +$ gcloud app instances disable-debug +``` + +===Akses via SSH=== +Akses SSH di ''[[Halaman Instance|https://console.cloud.google.com/appengine/instances]]'', pilih servisnya. +```bash +chetabahana_gmail_com@aef-product-v1--3-39p9:~$ sudo docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +ba72d25928cd gcr.io/chetabahana/saleor "uwsgi --ini /app/sa…" 5 hours ago Up 5 hours 8000/tcp, 172.17.0.1:8080->8080/tcp gaeapp +c0fdcc8ecab0 gcr.io/google-appengine/api-proxy "/proxy" 5 hours ago Up 5 hours api +829f7a631c00 gcr.io/google-appengine/nginx-proxy "/var/lib/nginx/bin/…" 5 hours ago Up 5 hours 8080/tcp, 0.0.0.0:8443->8443/tcp, 8090/tcp, 0.0.0.0:10402->10402/tcp nginx_proxy +00b8be4f0ef4 gcr.io/google-appengine/iap-watcher "./start_iap_watcher…" 5 hours ago Up 5 hours iap_watcher +b671d1701612 gcr.io/google-appengine/fluentd-logger "/opt/google-fluentd…" 5 hours ago Up 5 hours fluentd_logger + +chetabahana_gmail_com@aef-product-v1--3-39p9:~$ sudo docker logs cloudsql +2019/02/26 14:31:42 Listening on 0.0.0.0:5432 for chetabahana:us-central1:instance-postgres +2019/02/26 14:31:42 Ready for new connections + +chetabahana_gmail_com@aef-product-v1--3-39p9:~$ netstat -nlt +Active Internet connections (only servers) +Proto Recv-Q Send-Q Local Address Foreign Address State +tcp 0 0 172.17.0.1:8080 0.0.0.0:* LISTEN +tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN +tcp 0 0 172.17.0.1:5432 0.0.0.0:* LISTEN +tcp6 0 0 :::22 :::* LISTEN +tcp6 0 0 :::8443 :::* LISTEN +tcp6 0 0 :::10402 :::* LISTEN + +chetabahana_gmail_com@aef-product-v1--3-39p9:~$ sudo docker exec -it gaeapp /bin/bash +root@id:/app# python manage.py migrate +root@id:/app# python manage.py populatedb +root@id:/app# python manage.py createsuperuser +root@id:/app# exit +``` + + + + +==Stop Instance== + +===GAE Instance=== +```bash +$ gcloud app deploy --version dev +$ gcloud app versions stop dev +``` + +===Cloud SQL=== + +==Referensi== +* [[GAE app.yaml|https://cloud.google.com/appengine/docs/standard/python3/config/appref]] +* [[GAE Enabling Cloud IAP|https://cloud.google.com/iap/docs/app-engine-quickstart#enabling_iap]] +* [[Testing and deploying your application|https://cloud.google.com/appengine/docs/standard/python3/testing-and-deploying-your-app]] +* [[Deploying a Django Application to Google App Engine|https://medium.com/@BennettGarner/deploying-a-django-application-to-google-app-engine-f9c91a30bd35]] +* [[GAE Flexible - Deploying a Django + PostgreSQL + Google Storage|https://codeburst.io/beginners-guide-to-deploying-a-django-postgresql-project-on-google-cloud-s-flexible-app-engine-e3357b601b91]] +* [[GAE Flexible - Google Cloud Container Builder|https://gweb-cloudblog-publish.appspot.com/products/gcp/google-cloud-container-builder-a-fast-and-flexible-way-to-package-your-software/amp/]] +* [[GAE Flexible - Custom Docker Runtime & Cloud SQL Backen|https://medium.com/swift2go/serverless-google-app-engine-flex-docker-runtime-cloud-sql-backend-with-swift-vapor-web-alfian-c8310acfea0d]] \ No newline at end of file diff --git a/Instalasi-di-GCE.mediawiki b/Instalasi-di-GCE.mediawiki new file mode 100644 index 000000000000..c0cf20f49b41 --- /dev/null +++ b/Instalasi-di-GCE.mediawiki @@ -0,0 +1,857 @@ +Instalasi Saleor di sesi GCE ini bisa dilakukan per komponen atau sekaligus dalam ''[[Instalasi-di-GCE#Paket|satu paket berikut database dll]]''. Kita akan bahas secara masing² komponen terlebih dahulu. + +__TOC__ + +==Gcloud== +* Metode [[Authentication|https://cloud.google.com/container-registry/docs/advanced-authentication]], Urutan [[gcr-credentials|https://github.com/GoogleCloudPlatform/docker-credential-gcr#gcr-credentials]] dan [[solusi path|https://stackoverflow.com/a/49958213/4058484]] +* Docker Dokumentasi: [[Docker --driver Google Compute Engine|https://docs.docker.com/machine/drivers/gce/]] + +===Separasi=== +* [[Debian and Ubuntu|https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu]] + +```bash + +$ gcloud --version +Google Cloud SDK 237.0.0 \ alpha/beta/core 2019.03.01 \ bq 2.0.42 \ gsutil 4.37 + +$ gcloud components update +ERROR: (gcloud.components.update) You cannot perform this action because this +Cloud SDK installation is managed by an external package manager. +Please consider using a separate installation of the Cloud SDK created through +the default mechanism described at: https://cloud.google.com/sdk/ + +$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" +$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | \ + sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list +deb http://packages.cloud.google.com/apt cloud-sdk-bionic main +$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +% Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed +100 1326 100 1326 0 0 15975 0 --:--:-- --:--:-- --:--:-- 15975 +OK +$ sudo apt-get update && sudo apt-get install google-cloud-sdk +Setting up google-cloud-sdk (237.0.0-0) ... +``` + +===Inisialisasi=== +``` +$ gcloud init +Welcome! This command will take you through the configuration of gcloud. + +Your current configuration has been set to: [default] + +You can skip diagnostics next time by using the following flag: + gcloud init --skip-diagnostics + +Network diagnostic detects and fixes local network connection issues. +Checking network connection...done. +Reachability Check passed. +Network diagnostic (1/1 checks) passed. + +Choose the account you would like to use to perform operations for +this configuration: + [1] project-owner@chetabahana.iam.gserviceaccount.com + [2] Log in with a new account +Please enter your numeric choice: 1 + +You are logged in as: [project-owner@chetabahana.iam.gserviceaccount.com]. + +Pick cloud project to use: + [1] chetabahana + [2] Create a new project +Please enter numeric choice or text value (must exactly match list +item): 1 + +Your current project has been set to: [chetabahana]. + +Your project default Compute Engine zone has been set to [us-east1-b]. +You can change it by running [gcloud config set compute/zone NAME]. + +Your project default Compute Engine region has been set to [us-east1]. +You can change it by running [gcloud config set compute/region NAME]. + +Your Google Cloud SDK is configured and ready to use! + +$ gcloud --version +Google Cloud SDK 238.0.0 \ alpha/beta/core/2019.03.08 bq 2.0.42 gsutil 4.37 +WARNING: `gcloud auth login` no longer writes application default credentials. +If you need to use ADC, see: gcloud auth application-default --help +``` + +==Docker== +* [[Containers on Compute Engine|https://cloud.google.com/compute/docs/containers/]] +* Running [[Containers on Instances|https://cloud.google.com/container-optimized-os/docs/how-to/run-container-instance]] + +===Akun Registry=== +* Buat akun di ''[[Docker Hub|https://cloud.docker.com/login]]'' dan hubungkan di [[Codefresh|https://g.codefresh.io/user/settings]] +* [[docker login|https://docs.docker.com/engine/reference/commandline/login/]] dan [[pull image from-codefresh|https://codefresh.io/docs/docs/docker-registries/codefresh-registry/#pull-image-from-codefresh-registry]] +Jika sudah terkoneksi maka kita Instal Docker Engine + +===Instal (Ubuntu)=== +* Docker CE: [[Install|https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce]] dan [[upgrade|https://docs.docker.com/install/linux/docker-ce/ubuntu/#upgrade-docker-ce]] +* Docker daemon [[Configure and troubleshoot|https://docs.docker.com/config/daemon/]] + +``` +$ sudo apt-get update +$ sudo apt-get install \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg-agent \ + software-properties-common +$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +$ sudo apt-key fingerprint 0EBFCD88 +pub rsa4096 2017-02-22 [SCEA] + 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 +uid [ unknown] Docker Release (CE deb) +sub rsa4096 2017-02-22 [S] +$ sudo add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) \ + stable" + +$ sudo apt-get update +$ sudo apt-get install docker-ce docker-ce-cli containerd.io +$ apt-cache madison docker-ce +apt-cache madison docker-ce + docker-ce | 5:18.09.3~3-0~ubuntu-bionic | https.. + docker-ce | 5:18.09.2~3-0~ubuntu-bionic | https.. + docker-ce | 5:18.09.1~3-0~ubuntu-bionic | https.. + docker-ce | 5:18.09.0~3-0~ubuntu-bionic | https.. + docker-ce | 18.06.3~ce~3-0~ubuntu | https.. + docker-ce | 18.06.2~ce~3-0~ubuntu | https.. + docker-ce | 18.06.1~ce~3-0~ubuntu | https.. + docker-ce | 18.06.0~ce~3-0~ubuntu | https.. + docker-ce | 18.03.1~ce~3-0~ubuntu | https.. +https.. = https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages + +$ VERSION_STRING="5:18.09.3~3-0~ubuntu-bionic" +$ sudo apt-get install docker-ce=$VERSION_STRING \ +docker-ce-cli=$VERSION_STRING containerd.io + +Building dependency tree +Reading state information... Done +containerd.io is already the newest version (1.2.4-1). +docker-ce-cli is already the newest version (5:18.09.3~3-0~ubuntu-bionic). +docker-ce is already the newest version (5:18.09.3~3-0~ubuntu-bionic). +The following package was automatically installed and is no longer required: + grub-pc-bin +Use 'sudo apt autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 23 not upgraded. + +$ sudo apt autoremove +$ sudo systemctl status docker +● docker.service - Docker Application Container Engine + Loaded: loaded (/lib/systemd/system/docker.service; enabled; + vendor preset: enabled) + Active: active (running) since Wed 2019-03-20 01:54:50 UTC; 30min ago + Docs: https://docs.docker.com + Main PID: 18325 (dockerd) + Tasks: 10 + CGroup: /system.slice/docker.service + └─18325 /usr/bin/dockerd -H fd:// + --containerd=/run/containerd/containerd.sock + +level=warning msg="Your kernel does not support cgroup rt period" +level=warning msg="Your kernel does not support cgroup rt runtime" +level=info msg="Loading containers: start." +level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. +level=info msg="Loading containers: done." +level=info msg="Docker daemon" commit=774a1f4 graphdriver(s)=overlay2 version=18.09.3 +level=info msg="Daemon has completed initialization" +Started Docker Application Container Engine. +level=info msg="API listen on /var/run/docker.sock" +``` +Tekan keyboard Ctrl+C dan test docker sbb: +``` +$ sudo docker run hello-world +Unable to find image 'hello-world:latest' locally +latest: Pulling from library/hello-world +1b930d010525: Pull complete +Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535 +Status: Downloaded newer image for hello-world:latest + +Hello from Docker! +This message shows that your installation appears to be working correctly. + +To generate this message, Docker took the following steps: + 1. The Docker client contacted the Docker daemon. + 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. + (amd64) + 3. The Docker daemon created a new container from that image which runs the + executable that produces the output you are currently reading. + 4. The Docker daemon streamed that output to the Docker client, which sent it + to your terminal. + +To try something more ambitious, you can run an Ubuntu container with: + $ docker run -it ubuntu bash + +Share images, automate workflows, and more with a free Docker ID: + https://hub.docker.com/ + +For more examples and ideas, visit: + https://docs.docker.com/get-started/ + +$ sudo docker version +Client: + Version: 18.09.3 + API version: 1.39 + Go version: go1.10.8 + Git commit: 774a1f4 + Built: Thu Feb 28 06:53:11 2019 + OS/Arch: linux/amd64 + Experimental: false + +Server: Docker Engine - Community + Engine: + Version: 18.09.3 + API version: 1.39 (minimum version 1.12) + Go version: go1.10.8 + Git commit: 774a1f4 + Built: Thu Feb 28 05:59:55 2019 + OS/Arch: linux/amd64 + Experimental: false +``` + +===Non Root User=== +* Post-installation [[Steps for Linux|https://docs.docker.com/install/linux/linux-postinstall/]] dan [[Tutorial|https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04#step-2-%E2%80%94-executing-the-docker-command-without-sudo-optional]] +* Join the [[docker group|https://superuser.com/a/1415541/505363]] dan reload to [[switch groups without-logging out|https://superuser.com/questions/272061/reload-a-linux-users-group-assignments-without-logging-out#354475]] +``` +$ docker run hello-world +Got permission denied while trying to connect to the Docker daemon socket at +unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/version: +dial unix /var/run/docker.sock: connect: permission denied + +$ id +uid=1001(chetabahana) gid=1002(chetabahana) groups=1002(chetabahana),4(adm), +20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev), +108(lxd),114(netdev),1000(ubuntu),1001(google-sudoers) + +$ groups +chetabahana adm dialout cdrom floppy audio dip video plugdev lxd netdev ubuntu +google-sudoers + +$ echo ${USER} +chetabahana +$ sudo groupadd docker +groupadd: group 'docker' already exists +$ sudo usermod -aG docker ${USER} +Adding user chetabahana to group docker + +$ sudo systemctl enable docker +Synchronizing state of docker.service with SysV service script with +/lib/systemd/systemd-sysv-install. +Executing: /lib/systemd/systemd-sysv-install enable docker +$ systemctl list-unit-files +docker.service enabled +``` +Edit docker.service +``` +$ sudo systemctl edit docker.service +``` +Isikan data berikut ini +``` +[Service] +ExecStart= +ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375 +``` +Tekan keyboard Ctrl +X dan pilih Yes kemudian tekan +``` +$ sudo systemctl daemon-reload +$ sudo systemctl restart docker.service +$ sudo systemctl is-active docker +active +$ sudo netstat -lntp | grep dockerd +tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 2929/dockerd +$ logout +``` +Login lagi dan cek grup docker sudah masuk di daftar groups.. +``` +$ groups +chetabahana adm dialout cdrom floppy audio dip video plugdev lxd netdev docker +ubuntu google-sudoers +$ id +uid=1001(chetabahana) gid=1002(chetabahana) groups=1002(chetabahana),4(adm), +20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev), +108(lxd),114(netdev),999(docker),1000(ubuntu),1001(google-sudoers) + +$ sudo netstat -lntp | grep dockerd +tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 997/dockerd + +$ sudo service docker status +● docker.service - Docker Application Container Engine + Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) + Drop-In: /etc/systemd/system/docker.service.d + └─override.conf + Active: active (running) since Wed 2019-03-20 03:44:38 UTC; 7min ago + Docs: https://docs.docker.com + Main PID: 997 (dockerd) + Tasks: 10 + CGroup: /system.slice/docker.service + └─997 /usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375 +``` +Tes jalankan docker tanpa sudo +``` +$ docker run hello-world +Hello from Docker! +This message shows that your installation appears to be working correctly. +``` + +Ambil docker sebagai grup default +``` +$ sudo usermod -g docker ${USER} +$ logout +``` +Login lagi dan cek grup docker sudah menjadi grup default +``` +$ id +uid=1001(chetabahana) gid=999(docker) groups=999(docker),... +$ ls -alR +.: +total 40 +drwxr-xr-x 6 chetabahana docker 4096 Mar 20 01:44 . +drwxr-xr-x 5 root root 4096 Mar 19 20:59 .. +-rw------- 1 chetabahana docker 2376 Mar 20 04:59 .bash_history +-rw-r--r-- 1 chetabahana docker 220 Apr 4 2018 .bash_logout +-rw-r--r-- 1 chetabahana docker 3771 Apr 4 2018 .bashrc +drwx------ 2 chetabahana docker 4096 Mar 19 21:02 .cache +drwxrwxr-x 3 chetabahana docker 4096 Mar 20 01:44 .config +drwx------ 3 chetabahana docker 4096 Mar 19 21:02 .gnupg +-rw-r--r-- 1 chetabahana docker 807 Apr 4 2018 .profile +drwx------ 2 chetabahana docker 4096 Mar 19 22:30 .ssh +``` + +===Docker credential=== +====Opsi-1: Via Aplikasi==== +* [[Application Default Credentials (ADC)|https://cloud.google.com/docs/authentication/production#creating_a_service_account]] +``` +$ sudo cat <> ~/.bashrc +# enviromment variables for ADC +# ref: https://cloud.google.com/docs/authentication/production +export GOOGLE_APPLICATION_CREDENTIALS="/home/user/.credentials/[FILE_NAME].json" +EOF +$ export GOOGLE_APPLICATION_CREDENTIALS="/home/user/.credentials/[FILE_NAME].json" +$ env +``` + +====Opsi-2: via Access Token==== +* [[access token|https://cloud.google.com/container-registry/docs/advanced-authentication#access_token]] +``` +$ gcloud auth print-access-token | docker login -u oauth2accesstoken \ +--password-stdin https://[HOSTNAME] +$ docker login -u oauth2accesstoken -p "$(gcloud auth print-access-token)" \ +https://[HOSTNAME] +``` +atau OAuth access token via metadata +``` +$ METADATA=http://metadata.google.internal/computeMetadata/v1 +$ SVC_ACCT=$METADATA/instance/service-accounts/default +$ ACCESS_TOKEN=$(curl -H 'Metadata-Flavor: Google' $SVC_ACCT/token \ + | cut -d'"' -f 4) +$ docker login -u oauth2accesstoken -p $ACCESS_TOKEN https://gcr.io +$ docker run … gcr.io/YOUR_PROJECT/YOUR_IMAGE +``` + +====Opsi-3: via JSON key file==== +* [[JSON key file|https://cloud.google.com/container-registry/docs/advanced-authentication#json_key_file]] +``` +cat keyfile.json | docker login -u _json_key --password-stdin https://[HOSTNAME] +docker login -u _json_key -p "$(cat keyfile.json)" https://[HOSTNAME] +``` + +====Opsi-4: Credential Helper==== +Credential Helper bisa di install dengan beberapa cara berikut ini: +* Alternatif-1: via [[Google Cloud|https://cloud.google.com/container-registry/docs/advanced-authentication#gcloud_as_a_docker_credential_helper]] +``` +$ gcloud components install docker-credential-gcr + +``` + +* Alternatif-2: via [[Google go|https://github.com/GoogleCloudPlatform/docker-credential-gcr#gcr-credentials]] +``` +$ export GOPATH=$HOME/.go +$ sudo apt install golang-go +$ sudo apt install gccgo-go +$ go get -u github.com/GoogleCloudPlatform/docker-credential-gcr + + +$ find / -iname "make" 2>/dev/null +$ sudo apt-get install make +$ cd $GOPATH/src/github.com/GoogleCloudPlatform/docker-credential-gcr +$ make +$ sudo mv ./bin/docker-credential-gcr /usr/bin/docker-credential-gcr +``` + +* Alternatif-3: via [[curl -fsSL|https://cloud.google.com/container-registry/docs/advanced-authentication#standalone_docker_credential_helper]] +``` +$ VERSION=1.5.0 +$ OS=linux # or "darwin" for OSX, "windows" for Windows. +$ ARCH=amd64 # or "386" for 32-bit OSs +$ URL=https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v +$ curl -fsSL "${URL}${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \ + | tar xz --to-stdout ./docker-credential-gcr \ + > ~/docker-credential-gcr && chmod +x ~/docker-credential-gcr +$ sudo mv docker-credential-gcr /usr/bin/ +$ docker-credential-gcr version +Google Container Registry Docker credential helper 1.5.0 +``` + +Menjalankan Credential adalah seperti berikut ini: +``` +$ docker-credential-gcr help +Usage: docker-credential-gcr + +Subcommands: + clear remove all stored credentials + commands list all command names + help describe subcommands and their syntax + version print the version of the binary to stdout + +Subcommands for Config: + config configure the credential helper + configure-docker configures the Docker client to use docker-credential-gcr + +Subcommands for Docker credential store API: + erase erase any stored credentials for the server specified + via stdin + get for the server specified via stdin, return the stored + credentials via stdout + list list all stored credentials + store for the specified server, store the credentials provided + via stdin + +Subcommands for GCR authentication: + gcr-login log in to GCR + gcr-logout log out from GCR + +$ docker-credential-gcr configure-docker +/home/chetabahana_gmail_com/.docker/config.json successfully configured + +$ cat /home/chetabahana_gmail_com/.docker/config.json +{ + "auths": {}, + "credHelpers": { + "asia.gcr.io": "gcr", + "eu.gcr.io": "gcr", + "gcr.io": "gcr", + "staging-k8s.gcr.io": "gcr", + "us.gcr.io": "gcr" + } + +$ echo "https://gcr.io" | docker-credential-gcr get +{"ServerURL":"","Username":"_dcgcr_1_5_0_token","Secret":"xxx.c.XXxxXX_c-XXxXX-XXxxXX_w"} + +$ docker login --username= --password= +$ docker login r.cfcr.io -u -p +WARNING! Using --password via the CLI is insecure. Use --password-stdin. +WARNING! Your password will be stored unencrypted in /home//.docker/config.json. +Configure a credential helper to remove this warning. See +https://docs.docker.com/engine/reference/commandline/login/#credentials-store +Login Succeeded + +$ cat /home/chetabahana/.docker/config.json +{ + "auths": { + "https://index.docker.io/v1/": { + "auth": XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + }, + "r.cfcr.io": { + "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=" + } + }, + "HttpHeaders": { + "User-Agent": "Docker-Client/18.09.3 (linux)" + }, + "credHelpers": { + "asia.gcr.io": "gcr", + "eu.gcr.io": "gcr", + "gcr.io": "gcr", + "staging-k8s.gcr.io": "gcr", + "us.gcr.io": "gcr" + } + +``` +===Auto Scrit === +Dengan config di atas instalasi sudah siap jd kita bs satukan semua +``` +export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" +echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | \ + sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list +curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +sudo apt-get update && sudo apt-get install google-cloud-sdk +gcloud init + +sudo apt-get update +sudo apt-get install \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg-agent \ + software-properties-common +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +sudo apt-key fingerprint 0EBFCD88 +sudo add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) \ + stable" +sudo apt-get update +sudo apt-get install docker-ce docker-ce-cli containerd.io +apt-cache madison docker-ce +VERSION_STRING="5:18.09.3~3-0~ubuntu-bionic" +sudo apt-get install docker-ce=$VERSION_STRING \ +docker-ce-cli=$VERSION_STRING containerd.io +sudo apt autoremove +sudo docker run hello-world + +sudo usermod -aG docker ${USER} +sudo systemctl enable docker +sudo systemctl edit docker.service + +sudo systemctl daemon-reload +sudo systemctl restart docker.service +sudo systemctl is-active docker +sudo netstat -lntp | grep dockerd +sudo usermod -g docker ${USER} +logout + +VERSION=1.5.0 +OS=linux # or "darwin" for OSX, "windows" for Windows. +ARCH=amd64 # or "386" for 32-bit OSs +URL=https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v +curl -fsSL "${URL}${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \ + | tar xz --to-stdout ./docker-credential-gcr \ + > ~/docker-credential-gcr && chmod +x ~/docker-credential-gcr +sudo mv docker-credential-gcr /usr/bin/ +docker-credential-gcr version +docker-credential-gcr configure-docker +docker login --username=chetabahana --password= +docker login r.cfcr.io -u Chetabahana -p +cat /home/chetabahana_gmail_com/.docker/config.json +``` + +==Saleor== + +Lihat +* Connect Localhost from [[inside docker|https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach?rq=1]] + +===Setel Lingkungan=== + +* [[Configuration|https://docs.getsaleor.com/en/latest/gettingstarted/configuration.html]] +``` +$ cat <>~/.docker/common.env +DEFAULT_FROM_EMAIL=admin@chetabahana.com +DATABASE_URL=postgres://saleor:saleor@db/saleor +CELERY_BROKER_URL=redis://redis:6379/1 +CACHE_URL=redis://redis:6379/0 +JWT_VERIFY_EXPIRATION=True +OPENEXCHANGERATES_API_KEY +VATLAYER_ACCESS_KEY +EOF +``` + +===Kontainer Tunggal=== +* Deploy a [[registry server|https://docs.docker.com/registry/deploying/]] +* Memilih [[Restart policy|https://stackoverflow.com/a/55137036/4058484]] dan otomatis [[start on boot using upstart|https://stackoverflow.com/a/49802878/4058484]] + +====Postgres==== +Secara komponen, instal database Postgres untuk Aplikasi Saleor pada Kontainer Tunggal dapat dilakukan sama seperti yang sudah dibahas di sesi GAE. Lihat [[Instalasi-di-GAE#Database|cara install database untuk opsi GAE]]. + +====Jalankan Image==== +``` +$ docker run --rm -p 8000:8000 --user saleor:saleor --restart unless-stopped \ +--env-file ~/.docker/common.env gcr.io/chetabahana/saleor:latest + +[uWSGI] getting INI configuration from /app/saleor/wsgi/uwsgi.ini +[uwsgi-static] added mapping for /static => /app/static +*** Starting uWSGI 2.0.17.1 (64bit) on [Tue Mar 12 15:10:03 2019] *** +compiled with version: 6.3.0 20170516 on 08 February 2019 17:14:12 +os: Linux-4.4.0-142-generic #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019 +nodename: 7b6f445c1c6f +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 1 +current working directory: /app +detected binary path: /usr/local/bin/uwsgi +your processes number limit is 524288 +your memory page size is 4096 bytes +detected max file descriptor number: 524288 +building mime-types dictionary from file /etc/mime.types...554 entry found +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +uwsgi socket 0 bound to TCP address :8000 fd 3 +Python version: 3.6.8 (default, Feb 6 2019, 03:44:09) [GCC 6.3.0 20170516] +*** Python threads support is disabled. You can enable it with --enable-threads *** +Python main interpreter initialized at 0xXXX +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 364600 bytes (356 KB) for 4 cores +*** Operational MODE: preforking *** +WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0xXXX pid: 1 (default app) +*** uWSGI is running in multiple interpreter mode *** +spawned uWSGI master process (pid: 1) +spawned uWSGI worker 1 (pid: 9, cores: 1) +spawned uWSGI worker 2 (pid: 10, cores: 1) +spawned uWSGI worker 3 (pid: 11, cores: 1) +spawned uWSGI worker 4 (pid: 12, cores: 1) +``` +Buka shell baru dan cek seperti berikut ini:
+ +====Cek running service==== +``` +$ sudo netstat -plnt +Active Internet connections (only servers) +Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name +tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1526/sshd +tcp6 0 0 :::22 :::* LISTEN 1526/sshd +tcp6 0 0 :::8000 :::* LISTEN 1725/docker-proxy +``` + +====List container & Image==== +``` +$ docker ps +CONTAINER ID IMAGE COMMAND PORTS NAMES +7b6f445c1c6f saleor "uwsgi --ini /app/sal" 0.0.0.0:8000->8000/tcp lonely_bartik + +$ docker images +REPOSITORY TAG IMAGE ID CREATED SIZE +gcr.io/chetabahana/saleor latest 03c65b553b45 4 weeks ago 619.5 MB +``` + +====Shell kedalam container==== +``` +$ docker exec -it 7b6f445c1c6f /bin/bash +saleor@7b6f445c1c6f:/app$ ls +CHANGELOG.md Procfile deployment manage.py +requirements_dev.txt static tslint.json Dockerfile +README.md docker-compose.override.yml media runtime.txt +templates webpack-bundle.json LICENSE apollo.config.js +docker-compose.yml package-lock.json saleor tests webpack.config.js +Pipfile app.json docs package.json +scripts tox.ini webpack.d.ts Pipfile.lock +common.env locale requirements.txt setup.cfg +tsconfig.json + +saleor@7b6f445c1c6f:/app$ env +PYTHONUNBUFFERED=1 +PROCESSES=4 +LANG=C.UTF-8 +HOSTNAME=b24153bab33c +GPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D +SECRET_KEY=[DJANGO_SECRET_KEY] +PWD=/app +STATIC_URL=/static/ +HOME=/home/saleor +PORT=8000 +PYTHON_VERSION=3.6.8 +SHLVL=1 +PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +PYTHON_PIP_VERSION=19.0.1 +_=/usr/bin/env + +saleor@7b6f445c1c6f:/app$ python3 manage.py migrate +saleor@7b6f445c1c6f:/app$ python3 manage.py populatedb +saleor@7b6f445c1c6f:/app$ python3 manage.py createsuperuser +saleor@7b6f445c1c6f:/app$ exit +``` + +====Stop dan delete==== +``` +$ docker stop 7b6f445c1c6f +7b6f445c1c6f + +$ docker rm 7b6f445c1c6f +7b6f445c1c6f + +$ docker rmi gcr.io/chetabahana/saleor +Untagged: gcr.io/chetabahana/saleor:latest +Deleted: sha256:03c65b553b455bb7f1b7b15c02d17ea8172b3b062d32ec1636fd76d6dff99f47 +Deleted: sha256:021acbd51ad6a477eb3d9af7cf8b17d5ea5fc0c65618fec33ece7f1b0d283f1e +.. +.. +Deleted: sha256:82390739c0ae496a11a303d8dd90354e95026f6eff294abb7002ee75ac1da04e +Deleted: sha256:0a07e81f5da36e4cd6c89d9bc3af643345e56bb2ed74cc8772e42ec0d393aee3 + +``` + +===Multi Kontainer=== +====Docker-Compose==== +* Cara [[install|https://docs.docker.com/compose/install/]] +* [[Prerequisites|https://docs.getsaleor.com/en/latest/gettingstarted/installation-linux.html#prerequisites]] +``` +$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/\ +docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +$ sudo chmod +x /usr/local/bin/docker-compose +$ docker-compose --version +docker-compose version 1.23.2, build 1110ad01 + +``` +====Compose / Override==== +Buat file di ~/.docker/docker-compose.yml isi sbb: +* Docker: [[version 3|https://docs.docker.com/compose/compose-file/]] +* Saleor: [[Dockerfile|https://github.com/mirumee/saleor/blob/master/Dockerfile]] and [[compose.yaml|https://github.com/mirumee/saleor/blob/master/docker-compose.yml]]m dan [[docker-compose.override.yml|https://github.com/mirumee/saleor/blob/master/docker-compose.override.yml]] + +docker-compose.yml +``` +version: "3.2" + +services: + web: + image: 'gcr.io/chetabahana/saleor' + env_file: common.env + restart: no + networks: + - network-tier + depends_on: + - db + - redis + + db: + image: library/postgres:11.1-alpine + restart: always + networks: + - network-tier + volumes: + - saleor-db:/var/lib/postgresql + environment: + - POSTGRES_USER=saleor + - POSTGRES_PASSWORD=saleor + + redis: + image: library/redis:5.0-alpine + user: redis:redis + restart: unless-stopped + networks: + - network-tier + volumes: + - saleor-redis:/data + +volumes: + saleor-db: + driver: local + saleor-redis: + driver: local + +networks: + network-tier: + driver: bridge + +``` +docker-compose.override.yml +``` +version: "3.2" + +services: + web: + ports: + - 8000:8000 + privileged: true + user: saleor:saleor + volumes: + - type: bind + #Using gcsfuse, see https://github.com/MarketLeader/Tutorial-Buka-Toko/wiki/Storage + source: /home/chetabahana/.docker/media + target: /app/media + + db: + ports: + - 5432:5432 + + redis: + ports: + - 6379:6379 + +``` +====Jalankan Compose==== +* Docker: [[Get started|https://docs.docker.com/compose/gettingstarted/]] +* Saleor: [[Docker-compose|https://docs.getsaleor.com/en/latest/customization/docker.html]] + +``` +$ cd ~/.docker +~/.docker$ ls +common.env config.json docker-compose.yml +~/.docker$ docker-compose up +~/.docker$ docker exec -it docker_product_1 /bin/bash +saleor@:/app$ python manage.py migrate +saleor@:/app$ python manage.py populatedb +saleor@:/app$ python manage.py createsuperuser + +``` +====Expose Kontainer==== +* [[How to EXPOSE Port on running container|https://forums.docker.com/t/how-to-expose-port-on-running-container/3252/12]] +* [[Edit files with Docker Containers|https://ligerlearn.com/how-to-edit-files-within-docker-containers/]] + +``` +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +d76b1865b8fb chetabahana/saleor:latest "uwsgi --ini /app/sa…" About an hour ago Up 35 minutes 0.0.0.0:8000->8000/tcp backend_web_1 +ced26f0d66d1 postgres:11.1-alpine "docker-entrypoint.s…" 2 hours ago Up 35 minutes 0.0.0.0:5432->5432/tcp backend_db_1 +chetabahana@backend:~$ docker exec -it ced26f0d66d1 bash +bash-4.4# psql -U postgres +psql: FATAL: role "postgres" does not exist +bash-4.4# psql -h localhost -p 5432 -U postgres +psql: FATAL: role "postgres" does not exist +bash-4.4# psql -h localhost -p 5432 -U saleor +psql (11.1) +Type "help" for help. + +saleor=# exit +bash-4.4# exit + +$ sudo apt-get install postgresql-client +$ psql postgres://saleor:saleor@localhost/saleor +psql (11.1) +Type "help" for help. + +saleor=# exit +bash-4.4# exit + +$ docker run -e POSTGRES_PASSWORD=saleor -d -p 5432:5432 postgres:11.1-alpine +$ docker run --rm -P -p 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD="saleor" --name pg postgres:11.1-alpine + +$ docker exec -it ced26f0d66d1 bash +bash-4.4# psql postgres://saleor:saleor@localhost/saleor +psql (11.1) +Type "help" for help. +saleor=# exit + +bash-4.4# psql -U saleor -c 'SHOW config_file' + config_file +------------------------------------------ + /var/lib/postgresql/data/postgresql.conf +(1 row)bash-4.4# cd /var/lib/postgresql/data +bash-4.4# sed 's/host all all all md5/host all all 0.0.0.0\/0 md5/' pg_hba.conf > pg_hba.conf.changed && mv pg_hba.conf.changed pg_hba.conf +bash-4.4# cat pg_hba.conf +bash-4.4# psql -U saleor +psql (11.1) +Type "help" for help. + +saleor=# SELECT pg_reload_conf(); + pg_reload_conf +---------------- + t +(1 row) + +$ netstat -nlt +Active Internet connections (only servers) +Proto Recv-Q Send-Q Local Address Foreign Address State +tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN +tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN +tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN +tcp6 0 0 :::22 :::* LISTEN +tcp6 0 0 :::5432 :::* LISTEN +tcp6 0 0 :::8000 :::* LISTEN +``` + + +====Stop dan Delete==== +``` +~/.docker$ docker-compose down --volumes +``` + +==''Referensi''== +* [[Using Firewall Rules|https://cloud.google.com/vpc/docs/using-firewalls]] +* [[Using Debian and Ubuntu|https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu]] +* [[Don't just "docker-compose up"|https://kostasbariotis.com/dont-just-docker-compose-up/]] +* [[Terminate docker compose when test container finishes|https://stackoverflow.com/a/55373401/4058484]] +* [[Docker tutorial — getting started with Python, Redis, and NGINX|https://medium.freecodecamp.org/docker-tutorial-getting-started-with-python-redis-and-nginx-73ec94ca2f1]] \ No newline at end of file diff --git a/Instalasi-di-GCR.mediawiki b/Instalasi-di-GCR.mediawiki new file mode 100644 index 000000000000..e5c13997c6e6 --- /dev/null +++ b/Instalasi-di-GCR.mediawiki @@ -0,0 +1,24 @@ +__TOC__ + +==Fitur== +* [[Cloud Run documentation|https://cloud.google.com/run/docs/]] + +[[Cloud Run|https://cloud.google.com/run/]] adalah produk Serverless yang dikelola sepenuhnya yang diluncurkan oleh Google Cloud untuk ketersediaan saat ini adalah [[beta publik|https://console.cloud.google.com/run]] yang menawarkan untuk menjalankan gambar docker di lingkungan Serverless. +

+Dengan diperkenalkannya Cloud Run memungkinkan untuk menjalankan docker terlepas dari lingkungan waktu berjalan, batasan Fungsi Cloud untuk lingkungan dan versi terbatas dimitigasi oleh Cloud Run yang dapat dijalankan secara langsung dalam beberapa menit. +

+Cloud Run dapat juga digunakan pada [[GKE dengan Istio dan Knative|https://cloud.google.com/run/docs/quickstarts/prebuilt-deploy-gke]]. + +===Harga=== +[[Harga Cloud Run|https://cloud.google.com/run/pricing]] ditagih hanya untuk sumber daya yang Anda gunakan, dibulatkan hingga 100 milidetik terdekat. Perhatikan bahwa setiap sumber daya ini memiliki kuota gratis. Total tagihan Cloud Run Anda akan menjadi jumlah sumber daya dalam tabel harga. + +[[|https://translate.google.co.id/translate?hl=id&sl=auto&tl=id&u=https%3A%2F%2Fcloud.google.com%2Frun%2Fpricing]] + +Saat mengatur konkurensi lebih tinggi dari satu permintaan pada satu waktu, beberapa permintaan dapat membagikan CPU dan memori yang dialokasikan. + +Berkenaan dengan menyebarkan gambar kontainer dari Container Registry, sebagaimana didokumentasikan dalam harga jaringan Cloud Storage. + +Anda tidak akan dikenakan biaya jika Anda menggunakan ke wilayah Cloud Run yang terletak di benua yang sama dengan gambar kontainer Anda. Misalnya, penyebaran ke us-central1 dari us.gcr.io atau gcr.io tidak dikenai biaya. + +===Deploy=== +* [[Continuous Deployment to Cloud Run|https://medium.com/google-cloud/simplifying-continuous-deployment-to-cloud-run-with-cloud-build-including-custom-domain-setup-ssl-22d23bed5cd6]] diff --git a/Instalasi-di-GKE.mediawiki b/Instalasi-di-GKE.mediawiki new file mode 100644 index 000000000000..8cef00a5c488 --- /dev/null +++ b/Instalasi-di-GKE.mediawiki @@ -0,0 +1,223 @@ +Sesi ini kita akan kupas tentang cara mempersiapkan [[Intalasi Saleor - Docker|https://docs.getsaleor.com/en/latest/customization/docker.html]] ke [[Apa Itu Kubernetes|GKE]]. +==Membuat Aplikasi== +Langkah selanjutnya kita siapkan image untuk kita upload ke Google Kubernetes Engine (GKE). GKE ini dapat menerima image dari docker, untuk itu kita clone projek kita di GitHub sebagai berikut: + +[[|https://cloud.google.com/compute/docs/containers/deploying-containers]]
+ +===Update=== +```python +gcloud components update +``` +===Project ID=== +```python +export PROJECT_ID="$(gcloud config get-value project -q)" +echo "${PROJECT_ID}" + +git clone https://github.com/MarketLeader/Tutorial-Buka-Toko +``` +===Siapkan Python & pip=== +https://linuxbrew.sh/ +```bash +sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)" +test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv) +test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) +test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile +echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile +``` + +https://docs.getsaleor.com/en/latest/customization/backend.html#managing-dependencies +```bash +brew install pipenv +pip install --user --upgrade pipenv +export PATH=$PATH:/home/chetabahana/.local/bin +``` + +https://docs.getsaleor.com/en/latest/customization/backend.html#managing-dependencies +```bash +cd Tutorial-Buka-Toko +pipenv lock -r > requirements.txt +pipenv lock -r --dev > requirements_dev.txt +``` +==Registry== +===Upload ke registry=== +Kemudian dengan menggunakan PROJECT_ID kita buat image docker yang akan ditempatkan di ''[[Google Container Registry|https://cloud.google.com/container-registry]]'' (GCR) sebagai berikut: +```bash +sudo usermod -a -G docker ${USER} +pipenv lock +docker run busybox date + +docker build -t chetabahana-app . +docker images +``` +Langkah ini akan menginstruksikan Google Cloud untuk mencari file yg bernama ''[[Dockerfile|https://github.com/MarketLeader/Tutorial-Buka-Toko/blob/master/Dockerfile]]'' kemudian membuat image sesuai konfigurasi di file tsb dan test hasil seperti berikut: +```bash +REPOSITORY TAG IMAGE ID CREATED SIZE +chetabahana-app v1 25cfadb1bf28 10 seconds ago 54 MB +``` +===Upload ke registry=== +Kemudian kita upload image ini ke GCR sehingga dapat dijalankan oleh GKE: +```bash +gcloud auth configure-docker +gcloud container images delete gcr.io/${PROJECT_ID}/chetabahana-app:latest --force-delete-tags +docker tag chetabahana-app ${PROJECT_ID}/chetabahana-app:latest +docker push gcr.io/${PROJECT_ID}/chetabahana-app:latest +``` + +==Kubernetes== +===Menyiapkan Kluster=== +Jika akun Google Cloude Anda belum membuat Kluster silahkan klik gambar berikut kemudian tekan ''Buat Kluster'' pada Projek sesuai PROJECT_ID. +[[|https://console.cloud.google.com/kubernetes/list?authuser=1&project=&folder&organizationId]] + +Setelah image yang ditempatkan di GCR dapat dijalankan oleh GKE maka kita perlu membuat ''[[Kluster|https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture]]''. Kluster ini menampung ''[[Instances|https://cloud.google.com/compute]]'' yang menjalankan ''[[Mesin Kubernetes|https://kubernetes.io/]]'' terdiri dari 1 Master dan beberapa Cabang ''[[(default=3 Nodes)|https://cloud.google.com/sdk/gcloud/reference/container/clusters/create#--num-nodes]]''. + +```bash +gcloud container clusters create tutorial-cluster --num-nodes=3 +``` +Output +```bash +NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS +tutorial-cluster us-central1-b 1.10.11-gke.1 35.202.195.36 n1-standard-1 1.10.11-gke.1 3 RUNNING +``` +Untuk melihat detil +```bash +gcloud compute instances list +``` +Output +```bash +NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS +gke-tutorial-cluster-default-pool-f933fac2-23ww us-central1-b n1-standard-1 10.128.0.2 35.193.111.238 RUNNING +gke-tutorial-cluster-default-pool-f933fac2-8mt4 us-central1-b n1-standard-1 10.128.0.3 35.188.118.200 RUNNING +gke-tutorial-cluster-default-pool-f933fac2-m2qn us-central1-b n1-standard-1 10.128.0.4 35.188.221.100 RUNNING +``` +===Deploy ke kluster=== +```bash +kubectl run tutorial-web --image=gcr.io/${PROJECT_ID}/tutorial-app:v1 --port 8080 +kubectl get pods +``` +===Expose ke Internet=== +```bash +kubectl expose deployment tutorial-web --type=LoadBalancer --port 80 --target-port 8080 +kubectl get service +``` +===Scale up=== +```bash +kubectl scale deployment tutorial-web --replicas=3 +kubectl get deployment tutorial-web +``` + +==Compose== +Build the containers using docker-compose +```bash +$ docker-compose build +``` +Prepare the database +```bash +$ docker-compose run --rm web python3 manage.py migrate +$ docker-compose run --rm web python3 manage.py collectstatic +$ docker-compose run --rm web python3 manage.py populatedb --createsuperuser +``` +The --createsuperuser argument creates an admin account for admin@example.com with the password set to admin. + +Run the containers +```bash +$ docker-compose up +``` +By default, the application is started in debug mode and is configured to listen on port 8000. + +===Deploy versi terbaru=== +```bash +docker build -t gcr.io/${PROJECT_ID}/tutorial-app:v2 . +docker push gcr.io/${PROJECT_ID}/tutorial-app:v2 +kubectl set image deployment/tutorial-web tutorial-web=gcr.io/${PROJECT_ID}/tutorial-app:v2 +``` +===Unistall=== +```bash +kubectl delete service tutorial-web +gcloud container clusters delete tutorial-cluster +``` +===Reistall=== +```bash +SET PROJECT_ID="$(gcloud config get-value project -q)" + +kubectl delete service tutorial-web +gcloud container clusters delete cluster-zone-a --zone=asia-southeast1-a +gcloud container clusters delete cluster-zone-b --zone=asia-southeast1-b +gcloud container clusters delete cluster-zone-c --zone=asia-southeast1-c + +gcloud config set compute/region asia-southeast1 +export REGION="asia-southeast1" + +export CLUSTER="cluster-zone-a" +gcloud config set compute/zone asia-southeast1-a +export ZONE="asia-southeast1-a" + +gcloud config list +gcloud container clusters create $CLUSTER \ +--zone=${ZONE} --num-nodes=1 --preemptible \ +--enable-autoscaling --min-nodes=1 --max-nodes=2 \ +--enable-autorepair --enable-autoupgrade --enable-basic-auth \ +--issue-client-certificate + +export CLUSTER="cluster-zone-b" +gcloud config set compute/zone asia-southeast1-b +export ZONE="asia-southeast1-b" + +gcloud config list +gcloud container clusters create $CLUSTER \ +--zone=${ZONE} --num-nodes=1 --preemptible \ +--enable-autoscaling --min-nodes=1 --max-nodes=2 \ +--enable-autorepair --enable-autoupgrade --enable-basic-auth \ +--issue-client-certificate + +export CLUSTER="cluster-zone-c" +gcloud config set compute/zone asia-southeast1-c +export ZONE="asia-southeast1-c" + +gcloud config list +gcloud container clusters create $CLUSTER \ +--zone=${ZONE} --num-nodes=1 --preemptible \ +--enable-autoscaling --min-nodes=1 --max-nodes=2 \ +--enable-autorepair --enable-autoupgrade --enable-basic-auth \ +--issue-client-certificate +``` +Jalankan +```bash +kubectl get deployments --all-namespaces +kubectl delete deployment chetabahana-web + +kubectl run chetabahana-web --image=gcr.io/${PROJECT_ID}/chetabahana-app:v1.0.0 --port 8080 --env="key=value" +kubectl get pods + +kubectl delete service chetabahana-web +kubectl expose deployment chetabahana-web --type=LoadBalancer --port 80 --target-port 8080 +kubectl get service + +kubectl scale deployment chetabahana-web --replicas=3 +kubectl get deployment chetabahana-web +kubectl get pods + + +gcloud compute instances list +``` +Output +```bash +NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS +gke-cluster-zone-a-default-pool-6d271c23-2kn8 asia-southeast1-a n1-standard-1 true 10.148.0.6 35.187.254.63 RUNNING +gke-cluster-zone-b-default-pool-c91eed2b-1sq1 asia-southeast1-b n1-standard-1 true 10.148.0.8 35.187.249.45 RUNNING +gke-cluster-zone-b-default-pool-c91eed2b-lj4v asia-southeast1-b n1-standard-1 true 10.148.0.7 35.247.167.36 RUNNING +gke-cluster-zone-c-default-pool-76541e4a-bs06 asia-southeast1-c n1-standard-1 true 10.148.0.9 35.247.189.230 RUNNING +gke-cluster-zone-c-default-pool-76541e4a-dgv2 asia-southeast1-c n1-standard-1 true 10.148.0.10 35.198.221.75 RUNNING +``` +===Setel Aplikasi=== +[[Penyetelan Aplikasi]] + +==Referensi== +* [[Quickstart for Container Registry|https://cloud.google.com/container-registry/docs/quickstart]]'' +* https://github.com/mirumee/saleor/issues/3613 +* https://saleor.readthedocs.io/en/latest/deployment/docker.html +* https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app +* https://cloud.google.com/sdk/gcloud/reference/container/clusters/create +* [[Packer builds Docker containers without the use of Dockerfiles|https://www.packer.io/docs/builders/docker.html]] +* [[How To Remove Docker Containers, Images, Volumes, and Networks|https://linuxize.com/post/how-to-remove-docker-images-containers-volumes-and-networks/]] + + diff --git a/Instalasi-di-PC.mediawiki b/Instalasi-di-PC.mediawiki new file mode 100644 index 000000000000..693d77505e54 --- /dev/null +++ b/Instalasi-di-PC.mediawiki @@ -0,0 +1,113 @@ +Sesi ini kita akan kupas tentang cara mempersiapkan [[Apa itu Saleor|Aplikasi Saleor]] di PC. +__TOC__ +==Kebutuhan== + +===Minimum=== + +Lihat [[Kebutuhan minimum|https://docs.getsaleor.com/en/latest/gettingstarted/installation-linux.html#prerequisites]] +* Python 3.5 or later +* Node.js Version 10 or later +* PostgreSQL version 9.4 or above + +===Setel Python=== +* [[Change the Python default version|https://unix.stackexchange.com/questions/410579/change-the-python3-default-version-in-ubuntu]] +* [[Testing and deploying your application|https://cloud.google.com/appengine/docs/standard/python3/testing-and-deploying-your-app]] + +====Default==== +Via Alias +``` +$ which python +which: no python in /usr/local/bin:/usr/bin:/cygdrive/c/Windows/system32: + +$ ls /usr/bin/python* +/usr/bin/python3.7 /usr/bin/python3.7m.exe +/usr/bin/python3.7-config /usr/bin/python3.7m-config + +$ ln -s /usr/bin/python3.7 /usr/bin/python + +$ which python +/usr/bin/python + +$ python --version +Python 3.7.3 + +``` + +Via Alternative +``` +$ ls /usr/bin/python* + +$ python --version +Python 2.7.15rc1 +$ python3 --version +Python 3.6.7 +$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1 +$ python --version +Python 3.6.7 + +$ sudo apt install python-pip +$ sudo apt-get install build-essential python3-dev python3-pip python3-cffi \ +libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev \ +shared-mime-info + +$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - +$ sudo apt-get install -y nodejs +$ sudo npm install -g npm@latest + +$ sudo apt-get update +$ sudo apt-get install gtk2.0 +``` +====Virtual Env==== +* [[Virtual Environments and Packages|https://docs.python.org/3/tutorial/venv.html]] +* [[The headers or library files could not be found for jpeg” installing Pillow|https://stackoverflow.com/questions/44043906/the-headers-or-library-files-could-not-be-found-for-jpeg-installing-pillow-on]] + + +```bash +$ ls /usr/bin/pip* +/usr/bin/pip3.7 +$ ln -s /usr/bin/pip3.7 /usr/bin/pip + +$ pip --version +pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7) + +$ python -m venv virtual-env +$ source virtual-env/bin/activate +(virtual-env) + +$ sudo apt-get install libjpeg-dev zlib1g-dev +$ pip install Pillow +$ pip install -r requirements.txt +``` + +====Solusi Rebase==== +Jika terdapat error fixing-fork-failures +``` +2 [main] python3.7m 1771 child_info_fork::abort: address space needed by +'cygcrypto-1.1.dll' (0x830000) is already occupied +``` +Maka lakukan [[full rebase|https://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures]] atau [[fixing bloda|https://cygwin.com/faq/faq.html#faq.using.bloda]] bila perlu +# run rebase-trigger fullrebase, matikan semua proses dan layanan Cygwin, jalankan setup +# start ash atau dash (jangan gunakan bash atau terminal emulator seperti rxvt atau mintty). +# cara termudah untuk melakukan ini adalah menggunakan Windows Explorer dan arahkan ke tingkat atas instalasi cygwin Anda, dan klik dua kali ash.exe atau dash.exe di direktori bin /. +# jalankan /bin/rebaseall (di jendela ash / dash), restart komputer + + +===Database=== +Create a PostgreSQL user
+Create a PostgreSQL database + +http://toguko.com/blog/install-saleor-e-commerce.html +```bash +DATABASES = { + 'default': dj_database_url.config( + default='postgres://USER:PASS@localhost:5432/saleor', + conn_max_age=600)} +``` + + +===Setel npm=== +* jika [[npm ERR! code ELIFECYCLE|https://stackoverflow.com/questions/42308879/npm-err-code-elifecycle]] delete node_modules dan package-lock.json +* jika ada ditemukan ''vulnerabilities'' jalankan: npm audit fix +* jika [[npm istall stack di extract core=js|https://github.com/npm/npm/issues/18448]] +* konflik [[path sistem di nodejs|https://docs.npmjs.com/try-the-latest-stable-version-of-npm]] + diff --git a/Jaringan.mediawiki b/Jaringan.mediawiki new file mode 100644 index 000000000000..d60d845b7696 --- /dev/null +++ b/Jaringan.mediawiki @@ -0,0 +1,3 @@ +https://cloud.google.com/appengine/docs/standard/python3/connecting-vpc?hl=in + +https://cloud.google.com/compute/pricing?hl=in#network \ No newline at end of file diff --git a/Jekyll.mediawiki b/Jekyll.mediawiki new file mode 100644 index 000000000000..48c449ed9801 --- /dev/null +++ b/Jekyll.mediawiki @@ -0,0 +1 @@ +https://github.com/chetabahana/chetabahana.github.io/wiki/Jekyll-Liquid \ No newline at end of file diff --git a/Joomla.mediawiki b/Joomla.mediawiki new file mode 100644 index 000000000000..c48af0173bb8 --- /dev/null +++ b/Joomla.mediawiki @@ -0,0 +1 @@ +https://cloud.google.com/community/tutorials/joomla-on-compute-engine \ No newline at end of file diff --git a/Konfigurasi-Belakang-Layar.mediawiki b/Konfigurasi-Belakang-Layar.mediawiki new file mode 100644 index 000000000000..d9db7c5b47e2 --- /dev/null +++ b/Konfigurasi-Belakang-Layar.mediawiki @@ -0,0 +1,3 @@ +https://cloud.google.com/functions/docs/writing/background + +https://www.zesty.io/mindshare/marketing-technology/using-environment-variables-with-google-cloud-functions/ \ No newline at end of file diff --git a/Kubernetes-Engine.mediawiki b/Kubernetes-Engine.mediawiki new file mode 100644 index 000000000000..42866a7cc4d4 --- /dev/null +++ b/Kubernetes-Engine.mediawiki @@ -0,0 +1,51 @@ +[[Kubernetes|https://en.wikipedia.org/wiki/Kubernetes]] adalah sistem orkestrasi wadah sumber terbuka untuk mengotomatiskan penerapan, penskalaan, dan manajemen aplikasi. Awalnya dirancang oleh Google, dan sekarang dikelola oleh Cloud Native Computing Foundation. + +__TOC__ +==Load balancing== +Selain grup instance, Anda dapat menggunakan grup titik akhir jaringan (NEG) sebagai backend untuk layanan backend. Dokumen ini membahas penggunaan grup titik akhir jaringan dalam HTTP (S), proksi TCP, dan penyeimbang beban proxy proxy. Anda tidak dapat menggunakan NEG sebagai backend dengan penyeimbang beban internal atau penyeimbang beban jaringan. + +NEG dapat digunakan sebagai backend untuk layanan backend di load balancer. Ketika Anda menggunakan NEG sebagai backend untuk layanan backend, semua backend lain dalam layanan backend juga harus NEG. Anda tidak dapat menggunakan grup instan dan NEG sebagai backend dalam layanan backend yang sama. + +Anda dapat menambahkan titik akhir jaringan yang sama (kombinasi [[alamat IP|https://id.wikipedia.org/wiki/Alamat_IP]] dan port) ke lebih dari satu NEG. Anda dapat menggunakan NEG yang sama sebagai backend untuk lebih dari satu layanan backend. + +Layanan backend menggunakan NEG untuk backend hanya dapat menggunakan mode penyeimbangan RATE atau CONNECTION. Anda tidak dapat menggunakan mode penyeimbang dari UTILIZATION untuk layanan backend yang menggunakan NEG sebagai backends. + +===Network End Point (NEG)=== +Contoh berikut menunjukkan bagaimana mendistribusikan lalu lintas di antara layanan microser yang berjalan dalam wadah di VM Anda. + +VM dikonfigurasikan untuk menggunakan ''[[Rentang IP alias dari subnetnya|https://www.academia.edu/9206902/Valid_Range_IP_address_dan_Total_IP_Valid]]'', dan rentang tersebut adalah alamat yang digunakan oleh kontainer. Baik HTTP (S), Proxy TCP, atau SSL Proxy load balancing digunakan. +[[|https://cloud.google.com/load-balancing/docs/negs/#load_balancing_with_containers]] + + +===Contoh Kasus=== +Contoh di ''[[Dokumentasi|https://cloud.google.com/load-balancing/docs/negs/#load_balancing_with_containers]]'' ini dapat diatur sebagai berikut: + +# Konfigurasikan wadah atau layanan di VM. Jika beberapa wadah harus dijalankan pada setiap VM atau jika Anda memerlukan alamat IP untuk wadah tersebut, konfigurasikan [[alias alamat IP|https://cloud.google.com/vpc/docs/alias-ip]] untuk VM tersebut. Jika Anda mengkonfigurasi layanan, Anda memerlukan dua atau lebih layanan yang berjalan pada VM yang sama sehingga setidaknya nomor port berbeda. +# Buat grup titik akhir jaringan. Jika Anda menggunakan Kubernetes atau Google Kubernetes Engine, langkah ini tidak diperlukan karena pengontrol Ingress membuat NEG. +# Tambahkan titik akhir jaringan ke grup titik akhir jaringan. +# Buat [[pemeriksaan kesehatan|https://cloud.google.com/load-balancing/docs/health-checks#legacy-health-checks]]. +# Buat [[layanan backend|https://cloud.google.com/load-balancing/docs/backend-service]]. +# Untuk Penyeimbangan HTTP (S), buat [[peta URL|https://cloud.google.com/load-balancing/docs/https/url-map]] dan hubungkan layanan backend. +# Buat jenis [[proksi target|https://cloud.google.com/load-balancing/docs/target-proxies]] yang sesuai, seperti proksi HTTP target, proksi HTTPS target, proksi SSL target, atau proksi - TCP target. Tautkan proksi target ke peta URL (untuk penyeimbangan beban HTTP (S)) atau layanan backend (untuk Proxy TCP dan penyeimbangan beban Proxy SSL). +# Buat [[aturan penerusan global|https://cloud.google.com/load-balancing/docs/https/global-forwarding-rules]] dan tautkan ke proksi target. +# Periksa input di [[Pul Target|https://cloud.google.com/load-balancing/docs/target-pools?hl=in]]. + +Lihat ''[[Tutorial|https://cloud.google.com/load-balancing/docs/negs/setting-up-negs#negs-example]]'' + +===Pemecahan Masalah=== + +Setelah layanan dikonfigurasi, titik akhir baru umumnya menjadi dapat dijangkau setelah melampirkannya ke NEG, asalkan mereka menanggapi pemeriksaan kesehatan. + +Jika lalu lintas tidak dapat mencapai titik akhir, yang menghasilkan kode kesalahan 502 untuk HTTP atau koneksi yang ditolak untuk penyeimbang beban TCP / SSL, periksa hal berikut: + +* Verifikasi bahwa [[aturan firewall|https://cloud.google.com/vpc/docs/firewalls]] mengizinkan lalu lintas [[TCP|https://id.wikipedia.org/wiki/Transmission_Control_Protocol]] yang masuk ke titik akhir Anda dari rentang berikut: 130.211.0.0/22 dan 35.191.0.0/16. +* Verifikasi bahwa titik akhir Anda sehat dengan menggunakan gcloud, seperti yang ditunjukkan di bawah ini, atau dengan memanggil getHealth API pada sumber daya layanan backend atau API listEndpoints pada NEG dengan parameter showHealth diatur ke SHOW. Perintah gcloud berikut menunjukkan informasi kesehatan berdasarkan titik akhir jaringan: +```bash +gcloud beta compute network-endpoint-groups list-network-endpoints --zone=ZONE +``` +==Referensi== +* [[Kubernetes-Engine - Dokumentasi|https://cloud.google.com/kubernetes-engine/]] +* [[Extend-Kubernetes - Service-Catalog|https://kubernetes.io/docs/concepts/extend-kubernetes/service-catalog/]] + + + diff --git a/Language.mediawiki b/Language.mediawiki new file mode 100644 index 000000000000..b9ee1dce5bbc --- /dev/null +++ b/Language.mediawiki @@ -0,0 +1,70 @@ +__TOC__ +==Translasi== +* [[translation|https://docs.getsaleor.com/en/latest/customization/i18n.html]] +* [[initial|https://docs.transifex.com/client/init]] +===Config=== +File setup terletak di [[.tx/Config|https://github.com/mirumee/saleor/tree/master/.tx]] +``` +[main] +host = https://www.transifex.com + +[saleor-1.dashboardpo] +file_filter = saleor/dashboard/locale//LC_MESSAGES/django.po +source_file = saleor/dashboard/locale/en/LC_MESSAGES/django.po +source_lang = en +minimum_perc = 1 +trans.zh-Hans = saleor/dashboard/locale/zh_Hans/LC_MESSAGES/django.po +trans.zh-Hant = saleor/dashboard/locale/zh_Hant/LC_MESSAGES/django.po + +[saleor-1.javascriptpo] +file_filter = locale//LC_MESSAGES/djangojs.po +source_file = locale/en/LC_MESSAGES/djangojs.po +source_lang = en +minimum_perc = 1 +trans.zh-Hans = locale/zh_Hans/LC_MESSAGES/djangojs.po +trans.zh-Hant = locale/zh_Hant/LC_MESSAGES/djangojs.po + +[saleor-1.storefrontpo] +file_filter = locale//LC_MESSAGES/django.po +source_file = locale/en/LC_MESSAGES/django.po +source_lang = en +minimum_perc = 1 +trans.zh-Hans = locale/zh_Hans/LC_MESSAGES/django.po +trans.zh-Hant = locale/zh_Hant/LC_MESSAGES/django.po + +``` +===Token=== +Ambil token di [[User Settings|https://www.transifex.com/user/settings/api/]] + +``` +$ cd /path/ke/saleor +$ tx init --token= --skipsetup --no-interactive +``` +Token akan otomatis masuk ke ~/.transifexrc +``` +$ cat ~/.transifexrc +[https://www.transifex.com] +api_hostname = https://api.transifex.com +hostname = https://www.transifex.com +password = +username = api + +``` +Selanjutnya jalankan untuk update [[translasi id|https://github.com/mirumee/saleor/tree/master/locale/id/LC_MESSAGES/django.po]] +``` +$ tx pull --all +tx INFO: Skipping 'tr' translation (file: locale/id/LC_MESSAGES/django.po). +.. +.. +tx INFO: Skipping 'sr' translation (file: locale/sr/LC_MESSAGES/django.po). +tx INFO: Skipping 'tr' translation (file: locale/tr/LC_MESSAGES/django.po). +tx INFO: Skipping 'th' translation (file: locale/th/LC_MESSAGES/django.po). +tx INFO: Done. +``` + +===Ajukan=== +Jika Anda ingin ajukan terjemaha bisa dilakukan [[dalam 3 bagian|https://www.transifex.com/mirumee/saleor-1/translate/#id]] +* [[etalase|https://www.transifex.com/mirumee/saleor-1/translate/#id/storefrontpo]] +* [[dasbor|https://www.transifex.com/mirumee/saleor-1/translate/#id/dashboardpo]] +* [[javascript.po|https://www.transifex.com/mirumee/saleor-1/translate/#id/javascriptpo]] + diff --git a/Local-PC.mediawiki b/Local-PC.mediawiki new file mode 100644 index 000000000000..17b2a5065bdb --- /dev/null +++ b/Local-PC.mediawiki @@ -0,0 +1,102 @@ +==Tools== +===Hardware=== +====Local PC==== +====Koneksi Internet==== +Selain komputer maka hal yang utama adalah koneksi internet. Anda akan dibawa untuk mengenal banyak situs di [[Dunia Internet|https://github.com/chetabahana/chetabahana.github.io/wiki/Dunia-Internet]] yang menawarkan opsi untuk membantu kita membangun projek. + +Hal yang penting dilakukan adalah cara aman untuk simpan password untuk akses ke banyak situs. ''[[Lasspass|https://en.wikipedia.org/wiki/LastPass]]'' adalah salah satu yang terbaik untuk bisa Anda pakai. + +===Software=== + +====Editor==== +Ada begitu banyak perangkat editor yang bisa didapatkan secara online dengan gratis. + +Ada ada baiknya Anda mencoba ''[[Notepad++|https://notepad-plus-plus.org//]]''. Banyak ''[[fitur|http://docs.notepad-plus-plus.org/index.php/Category:Keywords]]'' dan ''[[plugin|http://docs.notepad-plus-plus.org/index.php/Plugin_Central]]'' yang dapat ''[[diprogram|http://npppythonscript.sourceforge.net/]]'' agar kita lebih nyaman bekerja bahkan untuk ''[[otomatisasi|https://archive.codeplex.com/?p=nppscripts]]'' seperti ''[[update git repository|https://webdeveloperankitakulkarni.wordpress.com/2013/10/19/git-with-notepad/]]'' secara mudah. + +====History==== +Dari sekian banyak langkah yang Anda lakukan ada baiknya mencatat apa saja yang sudah dilakukan agar dapat kita lakukan ''[[Penyetelan-Aplikasi#otomatisasi|otomatisasi]]'' maupun kilas balik jika ada masalah dengan pemrograman. + +Pencatatan di [[GitHub Wiki|https://help.github.com/en/articles/about-wikis]] seperti yang anda baca ini adalah cara yang memungkinkan Anda agar tidak kehilangan jejak apa saja yang sudah diterapkan. Kita akan bahas sampai [[Continuous-Delivery#gcp-build-history|GCP Build History]]. + +====Workspace==== +Pada tahap bekerja di Local PC kita perlu siapkan perangkat utama yaitu [[Perangkat#Jenis_Layanan|Gcloud SDK]], ikuti [[Local-PC#Windows|cara instal]] dan [[Local-PC#unix-utility|setel file batch]] agar otomatis berada di ruang kerja yang kita siapkan. + + +===Sistem=== +====Windows==== +``` +Your current Cloud SDK version is: 241.0.0 +Installing components from version: 241.0.0 + +┌─────────────────────────────────────────────────────────────────────┐ +│ These components will be installed. │ +├────────────────────────────────────────────────┬─────────┬──────────┤ +│ Name │ Version │ Size │ +├────────────────────────────────────────────────┼─────────┼──────────┤ +│ gcloud app Python Extensions (Extra Libraries) │ 1.9.74 │ 28.5 MiB │ +└────────────────────────────────────────────────┴─────────┴──────────┘ + +For the latest full release notes, please visit: + https://cloud.google.com/sdk/release_notes + +Do you want to continue (Y/n)? y + +╔════════════════════════════════════════════════════════════╗ +╠═ Creating update staging area ═╣ +╠════════════════════════════════════════════════════════════╣ +╠═ Installing: gcloud app Python Extensions (Extra Libra... ═╣ +╠════════════════════════════════════════════════════════════╣ +╠═ Creating backup and activating new installation ═╣ +╚════════════════════════════════════════════════════════════╝ + +Performing post processing steps...done. + +Update done! + +WARNING: There are alternate versions of the following Google Cloud Platform tools on + your system PATH. Please double check your PATH: + + C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\endpointscfg.py + C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py + + +Press any key to continue . . . +``` + +====Unix Utility==== +Karena pada tahap project kita akan bekerja di platform Unix maka ada baiknya kita mulai membiasakan perintah² Unix Standard spt [[sed|https://stackoverflow.com/a/55664924/4058484]], [[grep|http://qpeng.org/computer/grep.htm]] dll. + +Ada beberapa macam tools yg ditawarkan, Anda bisa pilih [[UnxUtils|http://unxutils.sourceforge.net/]] atau [[Local-PC#Cygwin|Cygwin]]. + +Download dan Unzip dimanapun Anda suka, misal di C:\UnxUtils. Kemudian setel PATH nya di file cloud_env.bat supaya otomatis aktif setiap buka perangkat [[Local-PC#Ruang_Kerja|Gcloud SDK]]. + +C:\Program Files\Google\Cloud SDK\cloud_env.bat +``` +ECHO OFF +CLS +SET Prompt=$$ +SET PATH=C:\UnxUtils\usr\local\wbin;%PATH%; +SET PATH=C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin;%PATH%; +SET PROJECT=C:\Users\Chetabahana\Documents\Project\Google\GAE\python\market +ECHO Google Cloud SDK! Run "gcloud -h" to get available commands. + +CD %PROJECT% +pwd +git fetch origin +git reset --hard origin/master + +SET date=%DATE:~0,2% +SET hour=%TIME:~0,2% +SET minute=%TIME:~3,2% +IF "%date:~0,1%"==" " SET date=0%DATE:~1,1% +IF "%hour:~0,1%"==" " SET hour=0%TIME:~1,1% +IF "%minute:~0,1%"==" " SET minute=0%TIME:~1,1% +SET VERSION=%date%%hour%%minute% +sed -e "s/-[0-9]\{1,\}-\([a-zA-Z0-9_]*\)'/-%VERSION%-local'/g" cloudbuild.yaml > tmp.txt +mv -f tmp.txt cloudbuild.yaml +findstr "\|https://user-images.githubusercontent.com/36441664/70721601-75c58e00-1d28-11ea-8329-d780c27ee7bd.png]] \ No newline at end of file diff --git a/Metadata.mediawiki b/Metadata.mediawiki new file mode 100644 index 000000000000..ccf1ced01718 --- /dev/null +++ b/Metadata.mediawiki @@ -0,0 +1,3 @@ +https://cloud.google.com/compute/docs/storing-retrieving-metadata + +https://console.cloud.google.com/compute/metadata/sshKeys \ No newline at end of file diff --git a/Non-Root.mediawiki b/Non-Root.mediawiki new file mode 100644 index 000000000000..0d6a71feb82e --- /dev/null +++ b/Non-Root.mediawiki @@ -0,0 +1,228 @@ + +===Struktur=== +* [[Non Root URL|https://github.com/mirumee/saleor/pull/1529]] + +[[|https://i.stack.imgur.com/tSjPa.png]] + +* Article: Deploy Django on a [[subdirectory|https://masci.wordpress.com/2012/02/14/deploy-django-on-a-subdirectory-or-a-subpath-with-mod_python/]], or [[sub-path|https://docs.webfaction.com/software/django/config.html#mounting-a-django-application-on-a-subpath]] +* Stackoverflow: Case-1: [[appended-twice|https://stackoverflow.com/questions/25289880/django-admin-force-script-name-is-appended-twice-to-url-when-posting]], Case-2: [[Login redirects incorrectly|https://stackoverflow.com/questions/19103470/django-admin-force-script-name-login-redirects-incorrectly]], Case [[lainnya|https://stackoverflow.com/search?q=FORCE_SCRIPT_NAME]] + +Setel: [[FORCE_SCRIPT_NAME|https://docs.djangoproject.com/en/2.1/ref/settings/#std:setting-FORCE_SCRIPT_NAME]]
+Default: Tidak Ada (None) +

+Jika tidak ada (None), maka akan digunakan sebagai nilai variabel lingkungan SCRIPT_NAME dalam permintaan HTTP apa pun. +

+Pengaturan ini ''[[dapat digunakan untuk mengganti nilai SCRIPT_NAME yang disediakan server|https://www.programcreek.com/python/example/100191/django.conf.settings.FORCE_SCRIPT_NAME]]'', yang mungkin merupakan versi yang ditulis ulang dari nilai default atau tidak disediakan sama sekali. +

+Ini juga digunakan oleh django.setup () untuk menetapkan awalan skrip penyelesai URL di luar siklus permintaan / respons (mis. Dalam perintah manajemen dan skrip mandiri) untuk menghasilkan URL yang benar ketika SCRIPT_NAME tidak /
. +

+settings.py +``` +FORCE_SCRIPT_NAME = "/django/sample/" +``` + +====Case==== +test +``` +http://server/django/sample/admin +``` +hasil +``` +http://server/django/sample/django/sample/admin +``` + +====Nginx==== +[[|https://www.vndeveloper.com/django-behind-uwsgi-nginx-centos-7/]] + +setelan untuk [[nginx.conf|https://codeday.me/bug/20190107/490403.html]] sbb: +``` +location /django/sample { + fastcgi_split_path_info ^(/django/sample)(.*)$; + include fastcgi_params; + fastcgi_pass 127.0.0.1:8025; +} +``` + +====Apache==== +setelan untuk [[apache.conf|https://opensourcemissions.wordpress.com/2010/03/12/finally-a-working-django-non-root-url-with-mod_wsgi/]] sbb: + +settings.py: +``` +SUB_SITE = "/donut/" +``` + +wsgi.py +``` +import os, sys +sys.path.append('/path/to') #parent directory of project +sys.path.append('/path/to/donut_code') +#You might not need this next line. +# But if you do, this directory needs to be world-writable. +os.environ['PYTHON_EGG_CACHE'] = '/path/to/.python-eggs' +os.environ['DJANGO_SETTINGS_MODULE'] = 'donut_code.settings' + +import django.core.handlers.wsgi + +_application = django.core.handlers.wsgi.WSGIHandler() +def application(environ, start_response): + environ['PATH_INFO'] = environ['SCRIPT_NAME'] + environ['PATH_INFO'] + environ['SCRIPT_NAME'] = '' # my little addition to make it work + return _application(environ, start_response) +``` + +urls.py +``` +from django.conf.urls.defaults import * +import settings + +urlpatterns = patterns('', + (r'^%s/' % settings.SUB_SITE, include('urls_subsite')), +) +``` + +settings.py: +``` +from django.conf.urls.defaults import * +import settings + +# NOTE: I don't really like defining this here, but the only other place it +# should logically go is in an overall site-level app. Seems like too much +# overhead. +from django.shortcuts import Http404 +def no_view(request): + """ + We don't really want anyone going to the static_root. + However, since we're raising a 404, this allows flatpages middleware to + step in and serve a page, if there is one defined for the URL. + """ + raise Http404 + +urlpatterns = patterns('', + #Normal includes for app URLs: + (r'^accounts/', include('accounts.urls')), + + # Special URL defined here, so that we have DRY in templates, without RequestContext. + url(r'site_media/$', no_view, name='static_root'), +) +``` + +urls_subsite.py: +``` +from django.conf.urls.defaults import * +import settings + +# Enable the Django admin: +from django.contrib import admin +admin.autodiscover() + +# NOTE: I don't really like defining this here, but the only other place it +# should logically go is in an overall site-level app. Seems like too much +# overhead for this two little, very simple views. +from django.shortcuts import render_to_response, Http404 +from django.contrib.auth.decorators import login_required +from django.template import RequestContext +@login_required +def welcome_view(request): + return render_to_response('welcome.html', + context_instance=RequestContext(request)) + +def no_view(request): + """ + We don't really want anyone going to the static_root. + However, since we're raising a 404, this allows flatpages middleware to + step in and serve a page, if there is one defined for the URL. + """ + raise Http404 + +urlpatterns = patterns('', + # Uncomment the next line to enable the admin: + (r'^admin/', include(admin.site.urls)), + + # Enable language switching. This way, you can write a template that POSTs + # to {% url set_language %}. + url(r'^i18n/setlang/$', 'django.views.i18n.set_language', + name="set_language"), + (r'^i18n/setlang/$', include('django.conf.urls.i18n')), + + # Other app views + (r'^accounts/', include('accounts.urls')), + (r'^holes/', include('holes.urls')), + (r'^fillings/', include('fillings.urls')), + + # A welcome page at the SUB_SITE root. + url(r'^$', welcome_view, name='welcome'), + + # URLs defined here, so that we have DRY in templates, without RequestContext. + url(r'site_media/$', no_view, name='static_root'), + # This next one lets me use {% url help_root %} in templates. + # Practically, I'm using flatpages to handle any help documents. + # This means I'll have to update each flatpage's URL if I move the SUB_SITE. + # Not too bad, esp. if I use Django's ORM to update them. + url(r'help/$', no_view, name='help_root'), +) + +if settings.DEBUG: + urlpatterns += patterns('', + # Uncomment on non-production servers, if you want to debug with "runserver": + # For static files during DEBUG mode: + (r'^site_media/(?P.*)$', 'django.views.static.serve', + {'document_root': '/path/to/donut/static/' }), +``` + +===Building=== +Static_URL disetel via [[Dockerfile|https://github.com/mirumee/saleor/blob/master/Dockerfile]] yang diatur berdasarkan [[nilai lingkungan|https://github.com/mirumee/saleor/pull/2693/files]] + +``` +### Build static assets +FROM node:10 as build-nodejs + +ARG STATIC_URL +ENV STATIC_URL ${STATIC_URL:-/static/} +``` + +Nilai ini akan berlaku bagi template: +``` +# Build static +COPY ./saleor/static /app/saleor/static/ +COPY ./templates /app/templates/ +RUN STATIC_URL=${STATIC_URL} npm run build-assets --production \ + && npm run build-emails --production + +``` +Yang kemudian image dikoleksi sbb: +``` +### Final image +FROM python:3.6-slim + +RUN SECRET_KEY=dummy STATIC_URL=${STATIC_URL} python3 manage.py collectstatic --no-input +``` +====Workspace==== +[[Local-PC#symlinks|Symlinks]] +``` +STATICFILES_DIRS +[('assets', '/srv/saleor/static/assets'), + ('favicons', '/srv/saleor/static/favicons'), + ('images', '/srv/saleor/static/images'), + ('dashboard/images', '/srv/saleor/static/dashboard/images')] +STATICFILES_FINDERS +['django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] +STATICFILES_STORAGE +'django.contrib.staticfiles.storage.StaticFilesStorage' +STATIC_ROOT +'/srv/static' +STATIC_URL +'/market/static/' +STRIPE +'stripe' +TEMPLATES +[{'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': ['/srv/templates'], +``` +[[|https://chetabahana.github.io/images/google/screencapture-chetabahana-market-id.png]] + +==''Referensi''== +* [[Django non-root URL|https://www.google.com/search?q=django+non-root]] +* [[Running Django on a subpath|https://integricho.github.io/2014/02/22/running-django-on-a-subpath/]] +* [[Finally! a working Django non-root URL with mod_wsgi|https://opensourcemissions.wordpress.com/2010/03/12/finally-a-working-django-non-root-url-with-mod_wsgi/]] +* [[Django Admin - FORCE_SCRIPT_NAME is appended twice to URL when POSTing|https://stackoverflow.com/questions/25289880/django-admin-force-script-name-is-appended-twice-to-url-when-posting]] \ No newline at end of file diff --git a/Non-Saleor.mediawiki b/Non-Saleor.mediawiki new file mode 100644 index 000000000000..f62f40898249 --- /dev/null +++ b/Non-Saleor.mediawiki @@ -0,0 +1,53 @@ +Untuk tampilan aplikasi diluar Saleor kita pakai ''[[DEITY Falcon|https://github.com/deity-io/falcon]]'' dibangun dengan NodeJS, GraphQL, React, Apollo, Koa. Webpack. dan Jest. + +__TOC__ + +==Fitur== +* [[Demo|https://demo.deity.io/]] +Prinsipnya hampir sama yaitu merupakan pustaka agnostik platform, berdiri sendiri tetapi modular untuk digunakan dengan mudah membangun situs web PWA yang terpisah. + +[[|https://falcon.deity.io/docs/getting-started/intro]] + +Fitur asarnya adalah sbb: +* Fleksibel - Memungkinkan untuk situs web apa pun; e-commerce, blog, portofolio, apa saja +* Integrable - Memungkinkan Anda untuk mengintegrasikan segala jenis sumber data dengannya +* Andal - Anda tidak perlu khawatir tentang lalu lintas tinggi dan skalabilitas +* Extensible - Memungkinkan Anda untuk memperpanjang proyek Anda dengan sebanyak mungkin fitur kustom + +==Konsep== +Semua metode opsional bergantung pada konfigurasi Ekstensi. + +===Client-Server=== +Gagasan utama yang berdiri di belakang memiliki aplikasi terpisah untuk bagian Klien dan Server adalah untuk menyediakan pengembang skala kemampuan scaling: + + +====Client==== +* [[Cannot find module '@deity/eslint-config-falcon|https://github.com/deity-io/falcon/issues/343]] + +* Anda dapat menetapkan persyaratan server khusus untuk instance Falcon Server, tetapi menjaga instance server Falcon Client lebih "ringan" +* Anda dapat memiliki beberapa instance Klien Falcon (didistribusikan secara geografis) yang terhubung ke aplikasi Falcon Server tunggal + +====Server==== +* Falcon Server tidak perlu memiliki identitas, sehingga Anda dapat meningkatkannya sesuai kebutuhan +* Bisa jadi solusi supaya tidak terjebak dengan satu instance Server Falcon karena bisa sambil mendukung pengunjung seluler Anda dengan aplikasi khusus yang menggunakan Falcon Server sebagai penyedia data. + +===Ekstensi-API=== +Falcon Server sendiri tidak menyediakan data apa pun, melainkan bertindak sebagai lem untuk ekstensi data Anda. Sebagai hasil dari kerjanya - Falcon Server menghasilkan Skema GraphQL terpadu yang dapat digunakan oleh Klien GraphQL untuk bekerja dengan data. + +====Falcon Server==== +* Falcon Server menggunakan Ekstensi Falcon sebagai lapisan abstrak untuk bekerja dengan entitas tertentu (misalnya, ekstensi toko, ekstensi blog, dll.) Untuk memberikan akses data "agnostik" dan menjadi penyedia data yang bebas platform. + +* Falcon Extension harus mendefinisikan Kueri, Mutasi, dan tipe abstrak sebagai bagian dari Falcon Server API, yang akan "dijahit" ke dalam Skema GraphQL terpadu oleh Falcon Server. + +====Ekstensi Falcon==== +* Ekstensi Falcon menggunakan API sebagai lapisan transportasi untuk bekerja dengan layanan back-end tertentu (misalnya, magento-api, wordpress-api dll), yang harus menerapkan semua metode Kueri dan Mutasi bersama dengan Jenis GraphQL yang telah diselesaikan (struktur data) yang ditentukan oleh Falcon Extension. + +* Semua metode yang didefinisikan harus diproksikan ke Falcon API yang ditetapkan (didefinisikan dalam konfigurasi Falcon Server). + +Sebagai contoh, wordpress-api dibuat sebagai lapisan transport untuk ekstensi-blog. +

+Berarti bahwa kelas wordpress-api harus memberikan semua Kueri dan Mutasi yang diperlukan yang ditentukan dalam skema-ekstensi GraphQL blog dan cocok dengan tipe GraphQL-nya. +

+Ekstensi Falcon tidak peduli bagaimana data ini sedang diambil dan pra / pasca diproses oleh Falcon API, penting untuk "memenuhi" definisi skema. + + diff --git a/Notepad--.mediawiki b/Notepad--.mediawiki new file mode 100644 index 000000000000..2d468e28acf9 --- /dev/null +++ b/Notepad--.mediawiki @@ -0,0 +1,11 @@ +__TOC__ + +===Tab=== +[[|https://github.com/notepad-plus-plus/notepad-plus-plus/issues/2791]] + +===Unix=== +* [[Mapping Windows accounts to POSIX|https://stackoverflow.com/a/32973565/4058484]] +``` +'\r': command not found +``` +[[|https://stackoverflow.com/a/54878123/4058484]] diff --git a/Pasang-Aplikasi.mediawiki b/Pasang-Aplikasi.mediawiki new file mode 100644 index 000000000000..60162bd5188b --- /dev/null +++ b/Pasang-Aplikasi.mediawiki @@ -0,0 +1,83 @@ +Pada sesi ini kita akan bahas tentang bagaimana memasang dan mengelola aplikasi yang kita perlukan untuk menjalankan bisnis eCommerce. +__TOC__ + +==Tahap Awal== +Setelah kita mendapatkan gambaran tentang aplikasi yang akan kita pasang maka tahap selanjutnya adalah mempertimbangkan apakah kita akan memasang aplikasi ini. + +===Always Free=== +Pada sesi sebelumnya kita sudah mempertimbangkan untuk pasang aplikasi eCommerce di ''[[Google Cloud Platform (GCP)|https://id.wikipedia.org/wiki/Google_Cloud_Platform]]''. + +Lalu bagaimana tentang masalah pembiayaan? Untuk itu kita perlu ketahui terlebih dahulu penawaran ''[[GCP Free Tier|https://cloud.google.com/free/]]'' tentang ''Always Free'' (fitur gratis selamanya) dan ''Free Extended Trial'' (fitur berbayar, ''12-month $300 free trial''). + +===Analisa Pasang=== +Dari kebutuhan minimum Aplikasi kita bisa analisa apalah kita bisa pasang dengan fitur gratis. Setelah dianalisa dari ''[[limit fitur gratis|https://cloud.google.com/free/docs/gcp-free-tier#always-free-usage-limits]]'' hanya satu fitur yang tidak gratis yaitu ''[[Cloud SQL|https://cloud.google.com/sql/]]''. + +''Postgress'' termasuk di fitur ini. Untuk fitur berbayar kita harus mendaftar dengan ''[[kartu kredit|https://cloud.google.com/free/docs/gcp-free-tier#credit_card_verification]]'' atau ''[[akun bank|https://cloud.google.com/free/docs/gcp-free-tier#no_credit_card]]''. Jenis termurah adalah ''[[Test instance, stopped when not in use|https://cloud.google.com/sql/pricing#pg-examples]]'', ongkosnya sekitar US$ 3 per bulan, jika Anda memutuskan untuk ambil Anda bisa lanjut ke tahap pasang. +==Tahap Pasang== +Sebelum mendaftar sebaiknya Anda coba dahulu jalankan [[Instalasi di PC|aplikasi di komputer]], setelah yakin aplkasinya sesuai maka kita bisa bisa pasang di GCP. + +Setelah siap untuk mengetes jalannya aplikasi di GCP Anda daftarkan terlebih dahulu di Akun Penagihan. Jika belum siap maka Anda bisa pasang terlebih dahulu komponen lain dari eCommerce seperti [[Menyiapkan Frontend|website]] dan [[Menjalankan Backend API|program bantu]] di fitur gratis. +===Estimasi Biaya=== +Dalam tahap mengetes aplikasi Anda bisa memperkirakan biaya jalannya Aplikasi di server. Untuk melihat ''[[detil biaya|https://cloud.google.com/billing/docs/how-to/bq-examples?hl=in]]'' maka Anda bisa ''[[membuat label|https://cloud.google.com/resource-manager/docs/creating-managing-labels?hl=in]]'' di tiap layanan. + +Tahun pertama Anda bisa menjalankan dengan kredit gratis sebesar [[$300 selama satu tahun|https://cloud.google.com/free/docs/gcp-free-tier#free-trial]] tergantung mana yang lebih dahulu tercapai. +===Perjalanan Waktu=== +Dengan berjalannya waktu Anda bisa mempersiapkan segala sesuatu yang berhubungan dengan aplikasi. Jika Anda siap maka Anda bisa segera promosikan bisnis Anda. + +Jika temukan masalah dengan produk dari Google Anda bisa googling, atau gabung [[Google Groups|https://groups.google.com/forum/#!forum/google-appengine]] bahkan [[kirim Issue|https://issuetracker.google.com/]] atau [[feedback|https://googlecloudplatform.uservoice.com/users/885631432-chetabahana]] tentang detil permasalahannya ke Google langsung.. +[[|https://developers.google.com/issue-tracker/guides/access-ui]] + +Jikapun belum siap maka setelah kredit gratis berakhir Anda setel disesuaikan konfigurasi jalannya aplikasi dengan kondisi bisnisnya. +===Kebutuhan Tenaga=== +Saat berjalannya bisnis maka Anda perlu juga mempersiapkan tim Anda. + +Tahap awal sebaiknya belajar atau kerjasama dengan yang sudah berpengalaman. + +Cek bila ada seminar² yang berhubungan dengan pengetahuan yang Anda perlukan untuk jalankan bisnis. Diaitu Anda bisa mendapat kolega yang sejalan dan cocok untuk bekerjasama. + +==Langkah Pasang== +Berikut kita akan bahas tentang [[cara pemasangan|https://cloud.google.com/docs/tutorials]] di Google Cloud Platform (GCP). + +===Pemasangan Web=== +Untuk [[pemasangan Web|https://cloud.google.com/solutions/web-serving-overview]] baik halaman statis maupun dinamis bisa disimak di jenis ''[[Compute|https://cloud.google.com/products/compute/]]''. + +[[|https://cloud.google.com/solutions/web-serving-overview#building_content_management_systems]] +Ada 3 jenis produk utama yaitu ''[[Google Application Engine (GAE)|https://cloud.google.com/appengine/]]'', kemudian ''[[Google Compute Engine (GCE)|https://cloud.google.com/compute/]]'', dan terakhir ''[[Google Kubernetes Engine (GKE)|https://cloud.google.com/kubernetes-engine/]]''. + +* GAE adalah jenis untuk aplikasi yang tidak memerlukan akses root. Bekerja berdasarkan satu ''[[platform bahasa program|https://cloud.google.com/appengine/docs/]]'' dari python, java, php, go, node.js, ruby dll yang dipilih pengguna. +* GCE adalah jenis dengan akses root sehingga dapat dikelola untuk aplikasi yang memerlukan virtual mesin sendiri dengan skala yang bisa diatur tingkat kinerjanya. +* GKE adalah jenis untuk aplikasi yang dibundel dalam suatu kontainer sehingga dapat dijalankan kedalam satu atau lebih GCE secara bersamaan. + +Jika Anda sulit paham ''[[membedakan antara ketiga jenis|https://cloud.google.com/docs/choosing-a-compute-option]]'' tersebut, dapat dianalogikan seperti misalnya taruhlah kita berperan sebagai penyewa properti, maka: +

+* GAE adalah seperti sewa kamar dengan jenis ikut aturan empunya rumah, +* GCE adalah seperti sewa rumah atau apartemen, bisa atur kamar² dan ruang lainnya +* GKE adalah seperti sewa kompleks dengan rumah² atau gedung dengan apartemen² yang semuanya bisa dikelola dengan satu aturan. + +Diskusi menarik bisa Anda simak ''[[disini|https://stackoverflow.com/questions/22697049/what-is-the-difference-between-google-app-engine-and-google-compute-engine]]''.

+ +Untuk tahap awal ''[[Apa itu Saleor|Aplikasi Saleor]]'' bisa kita [[Instalasi di GAE|jalankan di GAE]]. Namun jika harus bekerja dengan skala lebih tinggi maka akan memerlukan platform bantu untuk meningkatkan kinerja sebagai sebuah server yang mandiri sehingga harus ''[[ditempatkan di GCE/GKE|https://medium.com/google-cloud/app-engine-flex-container-engine-946fbc2fe00a]]''. + +Atau bahkan perlu dibuat ''[[Otomatisasi Pemasangan|https://codelabs.developers.google.com/codelabs/cloud-builder-gke-continuous-deploy/index.html]]'' bila bekerja dengan skala bisnis lebih besar yang perlu banyak server.. +[[|https://cloud.google.com/solutions/web-serving-overview#app-engine]] + +===Pemasangan Cloud SQL=== +''[[Cloud SQL|https://cloud.google.com/sql/]]'' menawarkan dua jenis Database dengan ''[[Model Relasional (RDBMS)|https://id.wikipedia.org/wiki/Sistem_manajemen_basis_data_relasional]]'' yang populer yaitu ''[[PostgreSQL|https://id.wikipedia.org/wiki/PostgreSQL]]'' dan ''[[MySQL|https://id.wikipedia.org/wiki/MySQL]]''. Diantara ''[[kedua jenis ini|https://www.i-3.co.id/2017/05/03/postgresql-vs-mysql-mana-yang-terbaik-dan-cocok-untuk-infrastruktur-anda/]]'' pengembang ''[[Apa itu Saleor|Aplikasi Saleor]]'' memilih [[Postgress|https://github.com/mirumee/saleor/issues/633]]''. + +Tidak seperti halnya GAE maka Untuk menjalankan Postsgres tidak ada [[Free Daily Quota|https://cloud.google.com/appengine/quotas#Instances]] untuk setel penghentian secara otomatis dalam rangka [[kelola quota|https://stackoverflow.com/a/26654430/4058484]]''. + +Dengan demikian jika hanya bertujuan untuk mengetes jalannya aplikasi Anda perlu ketahui ''[[cara stop manual|https://cloud.google.com/sql/docs/postgres/start-stop-restart-instance#stop]]'' untuk menghentikannya saat tidak diperlukan. + +===Skenario Step Pemasangan=== +Skenario pemasangan akan diprioritaskan untuk dapat menjalankan ''Aplikasi Saleor'' dengan target ''[[tagihan|https://cloud.google.com/pricing/list]]'' bulanan serendah mungkin namun dapat secara mudah ditingkatkan mengikuti perkembangan bisnis. + +# Menjalankan aplikasi di PC untuk mengecek mengecek tampilan aplikasi dan melengkapi data produk yang akan dipasarkan. +# [[Memasang|https://cloud.google.com/appengine/docs/standard/python/testing-and-deploying-your-app]] halaman ''[[web|https://teknojurnal.com/menggunakan-google-app-engine-sebagai-content-delivery-network-cdn-pembuatan-aplikasi/]]'' di ''[[Standard GAE|https://cloud.google.com/appengine/docs/standard/python3/serving-static-files]]'' dengan ''[[dokumentasi|https://github.com/sphinx-doc/sphinx/blob/master/README.rst]]'' dan setel ''[[ssl untuk akses https|https://cloud.google.com/appengine/docs/standard/python/securing-custom-domains-with-ssl]]''. +# Memasang Database dengan instance yang diaktifkan oleh akses ke halaman web, dan ''[[dinonaktifkan|https://cloud.google.com/sql/docs/postgres/start-stop-restart-instance#stop]]'' oleh idle time. +# [[Memasang|https://cloud.google.com/appengine/docs/flexible/python/testing-and-deploying-your-app]] Saleor dalam ''[[Kontainer Docker|https://stackoverflow.com/questions/45389919/how-to-auto-deploy-google-app-engine-flexible-using-container-registry-with-buil]]'' di ''[[Flexible GAE|https://cloud.google.com/appengine/docs/flexible/python/serving-static-files]]'' dengan akses domain/subdomain yang sama dengan halaman static spt Load Balancer. +# [[Review|https://blog.stephanbehnke.com/3-years-on-google-app-engine-an-epic-review/]] pemasangan ''[[GCE/GKE|https://codelabs.developers.google.com/codelabs/cloud-compute-engine/index.html]]'', otomasi ''[[Cloud Build|https://cloud.google.com/cloud-build/]]'', Load Balancing, Redis, dan Graph SQL. + +Berikutnya kita akan bahas secara detil tentang langkah² ini.. + +==Referensi== +* [[Google Developers - Codelab|https://codelabs.developers.google.com/]] diff --git a/Penyetelan-Aplikasi.mediawiki b/Penyetelan-Aplikasi.mediawiki new file mode 100644 index 000000000000..fe77c87606dc --- /dev/null +++ b/Penyetelan-Aplikasi.mediawiki @@ -0,0 +1,103 @@ +Setelah Anda berhasil membuat dan menjalankan image menjadi aplikasi di Google Cloud maka tahap berikutnya adalah mengatur fiturnya supaya dapat ditampakkan sebagai layanan. + +__TOC__ + +==Penyetelan== +===Target Kerja=== +Pada sesi ini selanjutnya kita akan bahas secara detil tentang apa saja yang perlu kita setel setelah Aplikasi Saleor berhasil kita pasang. + +===Langkah Kerja=== +Kita akan padukan aplikasi ini dengan aplikasi lain yang bisa menunjang kinerjanya di Google Cloud sebagai etalase eCommerce utamanya dari segi tampilan (''[[Menyiapkan-Frontend|Frontend]]''). + +Kemudian kita lakukan otomatisasi dari semua langkahnya itu dengan menggunakan fasilitas dari ''[[Google-Cloud-Builders|Google Cloud Builders]]'' dan ''[[Google=Cloud-Functions|Google Cloud Functions]]'' yang dijalankan di ''[[Google-Compute-Engine|Google Compute Engine]]''. + + +==Otomatisasi Kerja== +Dalam menyetel aplikasi sesuai dengan kebutuhan maka Anda akan membuat langkah yang berulang². Untuk itu jangan segan² untuk mempelajari cara otomatis dalam mengulangi langkah rutinitas karena itu akan sangat membantu Anda menghemat waktu. + +===Cloud Builder=== +Contoh ''[[cloudbuild.yaml|https://cloud.google.com/cloud-build/docs/configuring-builds/create-basic-configuration]]'' +```bash +steps: +- name: "gcr.io/cloud-builders/gcloud" + args: ["app", "deploy", '--version=v1-1'] +timeout: "1600s" +``` + +Dapat kita lihat bahwa langkah di atas adalah simulasi dari perintah deploy: +```bash +gcloud app deploy --version=v1-1 +``` +Dengan demikian langkah apapun di ''[[Google Cloud SDK|https://cloud.google.com/sdk/gcloud/reference/]]'' dapat kita gabungkan di ''[[Google-Cloud-Builders|Google Cloud Builders]]''. Sebelum melangkah kesitu maka kita perlu ''[[Penyetelan-Aplikasi#mencatat-langkah|catat semua langkah]]'' yang kita perlukan, + +===Buat Repository=== +Lihat ''[[creating a new repository|https://cloud.google.com/source-repositories/docs/quickstart]]'' +```bash +git add . +git commit -m "Initial commit" +git push origin master +``` + +===Download Code=== +Untuk download Aplikasi pakai ''[[appcfg.py download_app|https://cloud.google.com/appengine/docs/standard/python/tools/appcfg-arguments#download_app]]'' + +```bash +$ cd 'C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine' +$ appcfg.py --application=[APPLICATION_ID] --version=[VERSION_ID] \ + --module=[SERVICE_ID] download_app +``` + +==Cara Kolaborasi== + +===Menjaga Master=== +* [[git push origin HEAD|https://stackoverflow.com/a/41542674/4058484]] + +Jika Anda berkolaborasi dengan suatu tim dalam mengembangkan aplikasi secara bersama maka sebaiknya Anda fork sumbernya sebagai master. Kemudian buat lagi cabang dari master tsb untuk di clone sebagai tempat Anda bekerja sehingga tidak akan interferensi Master. + +Contoh clone: + +```bash +Chetabahana@Desktop MINGW32 /d/GitHub/MarketLeader +$ NAMA_BRANCH=Chetabahana +$ URL_PROJECT=https://github.com/MarketLeader/Tutorial-Buka-Toko.git +$ git clone -b $NAMA_BRANCH --single-branch $URL_PROJECT +``` + +Hal ini penting agar master dari fork Anda tetap sinkron dengan sumbernya sehingga begitu ada perubahan maka mudah untuk di update (merge). + +Jika ada perubahan yang ingin Anda usulkan maka dorong perubahannya langsung ke upstream atau sumber originalnya nya (bukan ke master Anda). + +[[|https://stackoverflow.com/a/9646323/4058484]] + +Jadi bila perubahan disetujui atau tidak maka master Anda tetap selalu bersih. + +Anda akan mudah update master Anda ke upstream ataupun buat cabang lain lagi tanpa konflik apapun karena masih sinkron dengan sumbernya. + +Untuk lebih jelasnya silahkan simak ''[[artikel ini|https://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html]]''. + +===Normal Update Master=== +Jika Anda ingin update fork dengan upstream ikuti contoh ''[[Keeping a fork up to date|https://gist.github.com/CristinaSolana/1885435]] + +```bash +Chetabahana@Desktop MINGW32 /d/GitHub/MarketLeader +git clone git@github.com:MarketLeader/Tutorial-Buka-Toko.git && cd Tutorial-Buka-Toko +git remote add upstream git://github.com/mirumee/saleor.git +git fetch upstream +git checkout master +``` + +===Force Update Master=== +Jika Anda mengalami konflik git dengan master dari sumbernya maka Anda dapat reset sbb: +```bash +Chetabahana@Desktop MINGW32 /d/GitHub/MarketLeader +$ git clone git@github.com:MarketLeader/Tutorial-Buka-Toko.git && cd Tutorial-Buka-Toko +$ git remote add upstream git://github.com/mirumee/saleor.git +$ git checkout master +$ git reset --hard upstream/master +$ git push origin master --force +``` +Cek master Anda akan tertulis: +```txt +This branch is even with mirumee:master +``` + diff --git a/Perangkat.mediawiki b/Perangkat.mediawiki new file mode 100644 index 000000000000..61d6782219ca --- /dev/null +++ b/Perangkat.mediawiki @@ -0,0 +1,409 @@ +Pada sesi ini kita akan bahas tentang bagaimana menyiapkan perangkat yang kita perlukan untuk menjalankan bisnis eCommerce. +__TOC__ + +==Akun Google== +===Mendaftar Akun=== +Cara yang paling umum dilakukan di Google adalah dengan mendaptar akun email via GMail. + +Setelah Anda mendapatkan Akun maka dengan Akun tersebut Anda bisa menggunakan semua fasilitas yang tersedia di layanan Google. + +===Banyak Akun Google=== +Jika Anda mempunyai akun lebih dari satu maka sebaiknya Anda keluar atau logout dari semua Akun. Kemudian masuk atau login kembali di salah satu Akun yang akan Anda gunakan dalam proyek yang akan Anda buat di Google. + +Hal ini penting dilakukan karena Google akan memilih untuk menampilkan salah satu akun Anda yang paling pertama masuk. + +Setelah Anda login dengan akun yang Anda pilih maka Anda bisa masuk kembali ke akun Anda lainnya di Google. + +==Akses Layanan== +Dengan [[Perangkat#Mendaftar_Akun|mendaptar akun]] Anda bisa akses layanan di [[Google Cloud Platform (GCP)|https://cloud.google.com/]]. + +===Jenis Layanan=== +Semua layanan GCP bisa diakses via +* Google Cloud [[Console|https://https://console.cloud.google.com]] dan [[Cloud Shell|https://cloud.google.com/shell/]] +* Google Cloud [[Software Development Kit (SDK)|https://cloud.google.com/sdk/]] + +Jika Anda akses via ''[[Shell|https://en.wikipedia.org/wiki/Shell_script]]'' maka perintahnya dimulai dengan ''[[gcloud|https://cloud.google.com/sdk/gcloud/reference/]]''. + +```txt +$ +Welcome to the Google Cloud SDK! Run "gcloud -h" to get the list of available co +mmands. + +$ gcloud --help +NAME + gcloud - manage Google Cloud Platform resources and developer workflow + +SYNOPSIS + gcloud GROUP | COMMAND [--account=ACCOUNT] [--configuration=CONFIGURATION] + [--flags-file=YAML_FILE] [--flatten=[KEY,...]] [--format=FORMAT] + [--help] [--project=PROJECT_ID] [--quiet, -q] + [--verbosity=VERBOSITY; default="warning"] [--version, -v] [-h] + [--log-http] [--trace-token=TRACE_TOKEN] [--no-user-output-enabled] + +DESCRIPTION + The gcloud CLI manages authentication, local configuration, developer + workflow, and interactions with the Google Cloud Platform APIs. + +GLOBAL FLAGS + --account=ACCOUNT + Google Cloud Platform user account to use for invocation. Overrides the + default core/account property value for this command invocation. + + --configuration=CONFIGURATION + The configuration to use for this command invocation. For more + information on how to use configurations, run: gcloud topic + configurations. You can also use the [CLOUDSDK_ACTIVE_CONFIG_NAME] + environment variable to set the equivalent of this flag for a terminal + session. + + --flags-file=YAML_FILE + A YAML or JSON file that specifies a --flag:value dictionary. Useful + for specifying complex flag values with special characters that work + with any command interpreter. Additionally, each --flags-file arg is + replaced by its constituent flags. See $ gcloud topic flags-file for + more information. + + --flatten=[KEY,...] + Flatten name[] output resource slices in KEY into separate records for + each item in each slice. Multiple keys and slices may be specified. + This also flattens keys for --format and --filter. For example, + --flatten=abc.def flattens abc.def[].ghi references to abc.def.ghi. A + resource record containing abc.def[] with N elements will expand to N + records in the flattened output. This flag interacts with other flags + that are applied in this order: --flatten, --sort-by, --filter, + --limit. + + --format=FORMAT + Set the format for printing command output resources. The default is a + command-specific human-friendly output format. The supported formats + are: config, csv, default, diff, disable, flattened, get, json, list, + multi, none, object, table, text, value, yaml. For more details run $ + gcloud topic formats. + + --help + Display detailed help. + + --project=PROJECT_ID + The Google Cloud Platform project name to use for this invocation. If + omitted, then the current project is assumed; the current project can + be listed using gcloud config list --format='text(core.project)' and + can be set using gcloud config set project PROJECTID. Overrides the + default core/project property value for this command invocation. + + --quiet, -q + Disable all interactive prompts when running gcloud commands. If input + is required, defaults will be used, or an error will be raised. + Overrides the default core/disable_prompts property value for this + command invocation. Must be used at the beginning of commands. This is + equivalent to setting the environment variable + CLOUDSDK_CORE_DISABLE_PROMPTS to 1. + + --verbosity=VERBOSITY; default="warning" + Override the default verbosity for this command with any of the + supported standard verbosity levels: debug, info, warning, error, + critical, none. Overrides the default core/verbosity property value for + this command invocation. + + --version, -v + Print version information and exit. This flag is only available at the + global level. + + -h + Print a summary help and exit. + +OTHER FLAGS + --log-http + Log all HTTP server requests and responses to stderr. Overrides the + default core/log_http property value for this command invocation. + + --trace-token=TRACE_TOKEN + Token used to route traces of service requests for investigation of + issues. Overrides the default core/trace_token property value for this + command invocation. + + --user-output-enabled + Print user intended output to the console. Overrides the default + core/user_output_enabled property value for this command invocation. + Use --no-user-output-enabled to disable. + +GROUPS + GROUP is one of the following: + + app + Manage your App Engine deployments. + + auth + Manage oauth2 credentials for the Google Cloud SDK. + + beta + (BETA) Beta versions of gcloud commands. + + bigtable + Manage your Cloud Bigtable storage. + + builds + Create and manage builds for Google Cloud Build. + + components + List, install, update, or remove Google Cloud SDK components. + + composer + Create and manage Cloud Composer Environments. + + compute + Create and manipulate Google Compute Engine resources. + + config + View and edit Cloud SDK properties. + + container + Deploy and manage clusters of machines for running containers. + + dataflow + Manage Google Cloud Dataflow jobs. + + dataproc + Create and manage Google Cloud Dataproc clusters and jobs. + + datastore + Manage your Cloud Datastore indexes. + + debug + Commands for interacting with the Cloud Debugger. + + deployment-manager + Manage deployments of cloud resources. + + dns + Manage your Cloud DNS managed-zones and record-sets. + + domains + Manage domains for your Google Cloud projects. + + endpoints + Create, enable and manage API services. + + filestore + Create and manipulate Cloud Filestore resources. + + firebase + Work with Google Firebase. + + functions + Manage Google Cloud Functions. + + iam + Manage IAM service accounts and keys. + + iot + Manage Cloud IoT resources. + + kms + Manage cryptographic keys in the cloud. + + logging + Manage Stackdriver Logging. + + ml + Use Google Cloud machine learning capabilities. + + ml-engine + Manage Cloud ML Engine jobs and models. + + organizations + Create and manage Google Cloud Platform Organizations. + + projects + Create and manage project access policies. + + pubsub + Manage Cloud Pub/Sub topics, subscriptions, and snapshots. + + redis + Manage Cloud Memorystore Redis resources. + + services + List, enable and disable APIs and services. + + source + Cloud git repository commands. + + spanner + Command groups for Cloud Spanner. + + sql + Create and manage Google Cloud SQL databases. + + topic + gcloud supplementary help. + +COMMANDS + COMMAND is one of the following: + + docker + (DEPRECATED) Enable Docker CLI access to Google Container Registry. + + feedback + Provide feedback to the Google Cloud SDK team. + + help + Search gcloud help text. + + info + Display information about the current gcloud environment. + + init + Initialize or reinitialize gcloud. + + version + Print version information for Cloud SDK components. +``` + +===Opsi Dari Layanan=== +* [[GCloud Cheat Sheets|https://gist.github.com/pydevops/cffbd3c694d599c6ca18342d3625af97]] + +Untuk melihat opsi dar layanan lakukan dengan tanda --help. Misal Anda ingin lihat opsi apa saja di perintah gcloud app lakukan sama halnya seperti ketika hanya melihat gcloud --help. Begitupun seterusnya ke anak cabang dari gcloud app tsb. +``` +C:\Users\Chetabahana\Project\Google\GAE>gcloud app --help +NAME + gcloud app - manage your App Engine deployments + +SYNOPSIS + gcloud app GROUP | COMMAND [GCLOUD_WIDE_FLAG ...] + +DESCRIPTION + The gcloud app command group lets you deploy and manage your Google App + Engine apps. These commands replace their equivalents in the appcfg tool. + + App Engine is a platform for building scalable web applications and mobile + backends. App Engine provides you with built-in services and APIs such as + NoSQL datastores, memcache, and a user authentication API, common to most + applications. + + More information on App Engine can be found here: + https://cloud.google.com/appengine and detailed documentation can be found + here: https://cloud.google.com/appengine/docs/ + +GCLOUD WIDE FLAGS + These flags are available to all commands: --account, --configuration, + --flags-file, --flatten, --format, --help, --log-http, --project, --quiet, + --trace-token, --user-output-enabled, --verbosity. Run $ gcloud help for + details. + +GROUPS + GROUP is one of the following: + + domain-mappings + View and manage your App Engine domain mappings. + + firewall-rules + View and manage your App Engine firewall rules. + + instances + View and manage your App Engine instances. + + logs + Manage your App Engine logs. + + operations + View and manage your App Engine Operations. + + regions + View regional availability of App Engine runtime environments. + + services + View and manage your App Engine services. + + ssl-certificates + View and manage your App Engine SSL certificates. + + versions + View and manage your App Engine versions. + +OMMANDS + COMMAND is one of the following: + + browse + Open the current app in a web browser. + + create + Create an App Engine app within the current Google Cloud Project. + + deploy + Deploy the local code and/or configuration of your app to App Engine. + + describe + Display all data about an existing service. + + open-console + Open the App Engine dashboard, or log viewer, in a web browser. + + update + Updates an App Engine application. + +XAMPLES + To run your app locally in the development application server to simulate + your application running in production App Engine with sandbox restrictions + and services provided by App Engine SDK libraries, use the dev_appserver.py + command and your app's app.yaml configuration file to run: + + $ dev_appserver.py ~/my_app/app.yaml + + For an in-depth look into using the local development server, follow this + guide : + https://cloud.google.com/appengine/docs/standard/python/tools/using-local-se + +ver. + + To deploy the code and configuration of your app to the App Engine server, + run: + + $ gcloud app deploy ~/my_app/app.yaml + To list all versions of all services of your existing deployments, run: + + $ gcloud app versions list + + To generate all relevant config files for ~/my_app (or emit an error + message if the directory contents are not recognized), run: + + $ gcloud app gen-config ~/my_app + +NOTES + This variant is also available: + + $ gcloud beta app + +``` + +Dari daftar perintah dan opsinya di atas tak berlebihan jika bisa dikatakan hampir ''[[semua produk|https://cloud.google.com/products/]]'' akan diperlukan jika aplikasi kita suatu saat bekerja dengan skala besar. + +Namun untuk tahap awal kita akan konsentrasi di Pemasangan [[Pasang-Aplikasi#pemasangan-web|Web]] dan [[Pasang-Aplikasi#pemasangan-cloud-sql|Database]] merupakan komponen utama dari Aplikasi eCommerce dari ''[[Apa Itu Saleor|Saleor]]''. + +==Memulai Project== +===Mendaftarkan Project=== +Untuk mulai project kita bisa setel ''PROJECT_ID'' di ''[[Console|https://console.cloud.google.com/]]'' atau di ''[[Cloud Shell|https://cloud.google.com/blog/products/gcp/introducing-open-in-cloud-shell-a-new-way-to-create-frictionless-tutorials]]'' maupun di PC Via ''[[GCloud SDK|https://cloud.google.com/sdk/docs/quickstart-windows?hl=in]]'' dengan perintah gcloud init sebagai berikut: +```python +gcloud init +gcloud auth login +gcloud components update +gcloud config set project [PROJECT_ID] +``` +Catatan: +* Di akun kita bisa daftarkan sampai 24 projects, bahkan bisa ''[[request|https://support.google.com/code/contact/project_quota_increase]]'' bila kurang. +* Khusus Google App Engine (GAE) layanan bersifat regional, hanya untuk ''[[lokasi tertentu|https://cloud.google.com/appengine/docs/locations]]'' + +===Pemilihan Region/Zone=== +Direncanakan mulai Tahun 2019/2020 pelanggan di Indonesia ''[[bisa setel|https://console.cloud.google.com/compute/settings]]'' region ''[[Jakarta|https://cloud.google.com/compute/docs/regions-zones/#announced]]''. + +* Dari semua region, layanan terlengkap ada di ''[[asia-northeast1 (Tokyo)|https://cloud.google.com/about/locations/?region=asia-pacific#region]]'' +* Free Tier untuk GCE hanya di region us, layanan terlengkap di ''[[us-east1 (South Carolina)|https://cloud.google.com/about/locations/?region=americas#region]]'' +Dengan pertimbangan optimasi biaya vs layanan maka untuk projek ini disetel sbb: +```txt +gcloud config set compute/region us-east1 +gcloud config set compute/zone us-east1-b +``` + +Berikutnya kita akan bahas secara detil tentang perangkat² ini.. + +==Referensi== +* [[Google Developers - Codelab|https://codelabs.developers.google.com/]] diff --git a/Permission.mediawiki b/Permission.mediawiki new file mode 100644 index 000000000000..9af8fd412bdf --- /dev/null +++ b/Permission.mediawiki @@ -0,0 +1,3 @@ +https://www.washington.edu/computing/unix/permissions.html + +https://superuser.com/a/126075/505363 \ No newline at end of file diff --git a/Pipenv.mediawiki b/Pipenv.mediawiki new file mode 100644 index 000000000000..5bca0de1f476 --- /dev/null +++ b/Pipenv.mediawiki @@ -0,0 +1,82 @@ +https://linuxize.com/post/how-to-install-python-3-7-on-ubuntu-18-04/ + +https://stackoverflow.com/a/54152444/4058484 + +https://pipenv-es.readthedocs.io/es/stable/ + +http://matthewbrown.io/2018/05/05/setting-up-my-python-workspace-2018/ + +https://gist.github.com/kogcyc/07c3e5d1f427c9fa6b99044d81f8ee82 + +https://www.techiediaries.com/ubuntu-install-python/ + +https://devopstuto-docker.readthedocs.io/en/latest/docker_library/pipenv/pipenv.html + +```sh +#!/bin/bash + +#Package +APP="gevent gunicorn" +DEV="gittle" + +# Set git branch +git checkout -b compose +git remote set-url origin $ORIGIN + +echo -e "\n$hr\nPIPENV\n$hr" +python -m pip install --upgrade pip +pip install --upgrade setuptools +pip install --user pipenv + +echo -e "\n$hr\nPIPFILE\n$hr" +sed -i 's/\./,>/g' Pipfile +cat Pipfile + +echo -e "\n$hr\nDEFAULT\n$hr" +source $LIST_FILES; trap 'trap_abort' 0; set -e +pipenv install --dev --system --deploy + +echo -e "\n$hr\nCHECK\n$hr" +pipenv check + +echo -e "\n$hr\nINSTALL\n$hr" +pipenv install $APP +pipenv install $DEV --dev + +echo -e "\n$hr\nGRAPH\n$hr" +pipenv graph + +echo -e "$hr\nLOCAL BIN\n$hr" +echo $HOME/.local/bin +ls -al $HOME/.local/bin + +echo -e "\n$hr\nVENV BIN\n$hr" +VENV=`pipenv --venv` +ls -al $VENV/bin + +echo -e "\n$hr\nTRANSIFEX\n$hr" +echo "${TRANSIFEXRC}" | tr ',' '\n' > $HOME/.transifexrc +pipenv run tx pull -l id + +echo -e "\n$hr\nPIPLOCK\n$hr" +pipenv lock -r > requirements.txt +cat requirements.txt + +echo -e "\n$hr\nDEV PIPLOCK\n$hr" +pipenv lock -r -d > requirements_dev.txt +cat requirements_dev.txt + +echo -e "\n$hr\nCURRENT REPOSITORY\n$hr" +pwd && ls -al . + +if grep -Fqe "error" << EOF +`pipenv check` +EOF +then + trap : 0 +else + # push the branch + git_push +fi +``` +Contoh output: [[Python package / build (3.x)|https://github.com/chetabahana/saleor/commit/21a9faee0c97cd48701eec0dd5c04a631331d565/checks?check_suite_id=227483072]] \ No newline at end of file diff --git a/Poetry.mediawiki b/Poetry.mediawiki new file mode 100644 index 000000000000..2b343310199e --- /dev/null +++ b/Poetry.mediawiki @@ -0,0 +1,76 @@ +https://docs.saleor.io/docs/next/advanced/managing-dependencies/#poetry + +https://poetry.eustace.io/docs/cli/ + +```sh +#!/bin/bash + +# Package +APP="gevent gunicorn" +DEV="gittle" + +# Set git branch +git checkout -b compose +git remote set-url origin $ORIGIN + +echo -e "\n$hr\nPIP\n$hr" +python -m pip install --upgrade pip +pip install --upgrade setuptools +pip install --user pipenv + +# Switch to poetry #3894 +echo -e "\n$hr\nPOETRY\n$hr" +export PATH=$HOME/.poetry/bin:$PATH +pip install --pre poetry + +echo -e "\n$hr\nCONFIG\n$hr" +#sed -i 's/\./,>/g' pyproject.toml +cat pyproject.toml + +echo -e "\n$hr\nDEFAULT\n$hr" +source $LIST_FILES; trap 'trap_abort' 0; set -e +poetry install + +echo -e "\n$hr\nINSTALL: $APP\n$hr" +poetry add $APP --optional + +echo -e "\n$hr\nINSTALL: $DEV\n$hr" +poetry add $DEV --dev + +echo -e "\n$hr\nCHECK\n$hr" +poetry check +poetry lock + +echo -e "\n$hr\nSHOW\n$hr" +poetry show -v + +echo -e "$hr\nLOCAL BIN\n$hr" +echo $HOME/.local/bin +ls -al $HOME/.local/bin + +echo -e "\n$hr\nTRANSIFEX\n$hr" +echo "${TRANSIFEXRC}" | tr ',' '\n' > $HOME/.transifexrc +poetry run tx pull -l id + +echo -e "\n$hr\nREQUIREMENT.TXT\n$hr" +poetry export -f requirements.txt -o requirements.txt +cat requirements.txt + +echo -e "\n$hr\nREQUIREMENT_DEV.TXT\n$hr" +poetry export -f requirements.txt -o requirements_dev.txt --dev +cat requirements_dev.txt + +echo -e "\n$hr\nCURRENT REPOSITORY\n$hr" +pwd && ls -al . + +if grep -Fqe "error" << EOF +`poetry check` +EOF +then + trap : 0 +else + # push the branch + git_push +fi +``` +Contoh output: [[Python package / build (3.7)|https://github.com/chetabahana/saleor/commit/5668602c66bedb64dfa8043b53c52233577e37e7/checks?check_suite_id=305635637]] \ No newline at end of file diff --git a/Postgres.mediawiki b/Postgres.mediawiki new file mode 100644 index 000000000000..b68ad43f5870 --- /dev/null +++ b/Postgres.mediawiki @@ -0,0 +1,213 @@ +__TOC__ +==Expose== +* [[Postgres - Docker Official Images|https://hub.docker.com/_/postgres/]] +===Services=== +* [[Checking running services|https://unix.stackexchange.com/questions/82378/what-is-the-recommended-way-of-checking-running-services]] +``` +$ ls -1 /etc/rc$(runlevel| cut -d" " -f2).d/S* | \ +awk -F'[0-9][0-9]' '{print "Startup :-> " $2}' +Startup :-> acpid +Startup :-> apport +Startup :-> atd +Startup :-> cgroupfs-mount +Startup :-> chrony +Startup :-> console-setup.sh +Startup :-> cron +Startup :-> dbus +Startup :-> docker +Startup :-> grub-common +Startup :-> lvm2-lvmetad +Startup :-> lvm2-lvmpolld +Startup :-> lxcfs +Startup :-> lxd +Startup :-> mdadm +Startup :-> open-vm-tools +Startup :-> plymouth +Startup :-> rsync +Startup :-> rsyslog +Startup :-> ssh +Startup :-> sshguard +Startup :-> unattended-upgrades +Startup :-> uuidd +``` + + +===Container=== +* [[Launch phppgadmin Container|http://tleyden.github.io/blog/2017/06/14/running-postgresql-in-docker/]] + +``` +$ docker run -e POSTGRES_USER=saleor -e POSTGRES_PASSWORD=saleor -p 5432:5432 postgres +The files belonging to this database system will be owned by user "postgres". +This user must also own the server process. + +The database cluster will be initialized with locale "en_US.utf8". +The default database encoding has accordingly been set to "UTF8". +The default text search configuration will be set to "english". + +Data page checksums are disabled. + +fixing permissions on existing directory /var/lib/postgresql/data ... ok +creating subdirectories ... ok +selecting default max_connections ... 100 +selecting default shared_buffers ... 128MB +selecting dynamic shared memory implementation ... posix +creating configuration files ... ok +running bootstrap script ... ok +performing post-bootstrap initialization ... ok +syncing data to disk ... ok + +WARNING: enabling "trust" authentication for local connections +You can change this by editing pg_hba.conf or using the option -A, or +--auth-local and --auth-host, the next time you run initdb. + +Success. You can now start the database server using: + + pg_ctl -D /var/lib/postgresql/data -l logfile start + +waiting for server to start....2019-04-17 17:00:31.218 UTC [40] +LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" +2019-04-17 17:00:31.352 UTC [41] LOG: database was shut down at 2019-04-17 17:00:29 UTC +2019-04-17 17:00:31.382 UTC [40] LOG: database is ready to accept connections + done +server started +CREATE DATABASE + + +/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* + +2019-04-17 17:00:33.697 UTC [40] LOG: received fast shutdown request + waiting for server to shut down....2019-04-17 17:00:33.700 UTC [40] + LOG: aborting any active transactions +2019-04-17 17:00:33.706 UTC [40] LOG: background worker "logical replication launcher" + (PID 47) exited with exit code 1 +2019-04-17 17:00:33.707 UTC [42] LOG: shutting down +2019-04-17 17:00:33.729 UTC [40] LOG: database system is shut down + done +server stopped + +PostgreSQL init process complete; ready for start up. + +2019-04-17 17:00:33.845 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +2019-04-17 17:00:33.845 UTC [1] LOG: listening on IPv6 address "::", port 5432 +2019-04-17 17:00:33.858 UTC [1] LOG: listening on "/var/run/postgresql/.s.PGSQL.5432" +2019-04-17 17:00:33.878 UTC [58] LOG: database was shut down at 2019-04-17 17:00:33 UTC +2019-04-17 17:00:33.885 UTC [1] LOG: database system is ready to accept connections +2019-04-17 17:00:34.772 UTC [65] FATAL: password authentication failed for + user "postgres" +2019-04-17 17:00:34.772 UTC [65] DETAIL: Role "postgres" does not exist. + Connection matched pg_hba.conf line 95: "host all all all md5" +2019-04-17 17:00:35.436 UTC [66] FATAL: password authentication failed for + user "postgres" +2019-04-17 17:00:35.436 UTC [66] DETAIL: Role "postgres" does not exist. + Connection matched pg_hba.conf line 95: "host all all all md5" +2019-04-17 17:00:37.036 UTC [67] FATAL: password authentication failed for + user "postgres" +2019-04-17 17:00:37.036 UTC [67] DETAIL: Role "postgres" does not exist. + Connection matched pg_hba.conf line 95: "host all all all md5" +... +... +``` +==Scanning== +* [[Static IP Addresses and App Engine apps|https://cloud.google.com/appengine/kb/#static-ip]] +[[|https://cloud.google.com/vpc/]] + + +===TCP Traffic=== +* [[Monitor TCP Traffic on specific port|https://superuser.com/questions/604998/monitor-tcp-traffic-on-specific-port]] + +``` +$ sudo tcpdump port 5432 and '(tcp-syn|tcp-ack)!=0' +tcpdump: verbose output suppressed, use -v or -vv for full protocol decode +listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes + +16:19:26.472838 IP 50-224-110-50-static.hfc.comcastbusiness.net.39903 > +backend.us-central1-c.c.chetabahana.internal.postgresql: +Flags [S], seq 1779566115, win 29200, +options [mss 1380,sackOK,TS val 451453976 ecr 0,nop,wscale 7], length 0 + +16:19:26.473135 IP backend.us-central1-c.c.chetabahana.internal.postgresql > +50-224-110-50-static.hfc.comcastbusiness.net.39903: +Flags [S.], seq 4028889669, ack 1779566116, win 28960, +options [mss 1460,sackOK,TS val 2412144 ecr 451453976, +nop,wscale 7], length 0 + +16:19:26.525816 IP 50-224-110-50-static.hfc.comcastbusiness.net.39903 > +backend.us-central1-c.c.chetabahana.internal.postgresql: +Flags [.], ack 1, win 229, options [nop,nop,TS val 451453989 ecr 2412144], length 0 +... +... + +``` +===Firewall Rules=== +* [[Cloud compute firewall-rules|https://cloud.google.com/sdk/gcloud/reference/compute/firewall-rules/]] +* [[Implementing iptables in linux|https://wiki.debian.org/iptables]] + +``` +SYNOPSIS +gcloud compute firewall-rules create NAME (--action=ACTION | + --allow=PROTOCOL[:PORT[-PORT]],[…]) [--description=DESCRIPTION] +[--destination-ranges=CIDR_RANGE,[CIDR_RANGE,…]] [--direction=DIRECTION] +[--disabled] [--enable-logging] [--network=NETWORK; default="default"] +[--priority=PRIORITY] [--rules=PROTOCOL[:PORT[-PORT]],[…]] +[--source-ranges=CIDR_RANGE,[CIDR_RANGE,…]] [--source-service-accounts=EMAIL,[EMAIL,…]] +[--source-tags=TAG,[TAG,…]] [--target-service-accounts=EMAIL,[EMAIL,…]] +[--target-tags=TAG,[TAG,…]] [GCLOUD_WIDE_FLAG …] + +$ gcloud compute firewall-rules create default-allow-sql --priority=1000 \ +--action=ALLOW --direction=INGRESS --allow tcp:3306,5432,6379 \ +--target-service-accounts=EMAIL --source-service-accounts=EMAIL + +$ gcloud compute firewall-rules list +NAME NETWORK DIRECTION PRIORITY ALLOW +default-allow-http default INGRESS 1000 tcp:80,tcp:8000,tcp:8080 +default-allow-https default INGRESS 1000 tcp:443 +default-allow-icmp default INGRESS 65534 icmp +default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp +default-allow-rdp default INGRESS 65534 tcp:3389 +default-allow-sql default INGRESS 1000 tcp:3306,tcp:5432,tcp:6379 +default-allow-ssh default INGRESS 1000 tcp:22 + +$ docker run -e POSTGRES_USER=saleor -e POSTGRES_PASSWORD=saleor -p 5432:5432 postgres +... +... +PostgreSQL init process complete; ready for start up. + +2019-04-17 19:05:06.041 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 +2019-04-17 19:05:06.042 UTC [1] LOG: listening on IPv6 address "::", port 5432 +2019-04-17 19:05:06.071 UTC [1] LOG: listening on "/var/run/postgresql/.s.PGSQL.5432" +2019-04-17 19:05:06.122 UTC [58] LOG: database was shut down at 2019-04-17 19:05:05 UTC +2019-04-17 19:05:06.136 UTC [1] LOG: database system is ready to accept connections + +``` + +===Cloud Identity=== +* [[Cloud Identity-Aware Proxy (Cloud IAP)|https://cloud.google.com/iap/]] +* Enabling Cloud IAP for [[GAE|https://cloud.google.com/iap/docs/app-engine-quickstart]], [[GCE|https://cloud.google.com/iap/docs/enabling-compute-howto]] and [[GKE|https://cloud.google.com/iap/docs/enabling-kubernetes-howto]] + +[[|https://cloud.google.com/iap/docs/enabling-compute-howto]] + +Dalam kasus yang kita bahas maka dapat dilakukan [[prosedur untuk GCE|https://cloud.google.com/iap/docs/enabling-compute-howto]] berikut ini: +# Lakukan [[persetujuan layar OAuth|https://console.cloud.google.com/apis/credentials/consent]] jika Anda belum mengonfigurasi proyek Anda. +# Buka [[Console Cloud IAP|https://console.cloud.google.com/security/iap]] buat [[ID Auth|https://console.cloud.google.com/iam-admin/iam]], dan [[akses domain|https://cloud.google.com/iap/docs/enabling-compute-howto#oauth-credentials]]. +# Aktifkan Cloud IAP +``` +$ gcloud auth login +$ gcloud config set project project_id +$ gcloud compute backend-services update backend_service_name --global \ + --iap=enabled,oauth2-client-id=client_id,oauth2-client-secret=client_secret +``` +===Security Scanner=== +* [[Using Cloud Security Scanner|https://cloud.google.com/security-scanner/docs/scanning]] +* [[Special Configurations for VM Instances|https://cloud.google.com/vpc/docs/special-configurations]] + +[[Cloud Security Scanner|https://cloud.google.com/security-scanner/]] adalah pemindai keamanan web GAE, GCE, dan GKE yang dapat secara otomatis memindai dan mendeteksi empat kerentanan umum, yaitu cross-site-scripting (XSS), injeksi Flash, konten campuran (HTTP dalam HTTPS), dan pustaka yang usang / tidak aman. +

+Ini memungkinkan identifikasi awal dan memberikan tingkat positif palsu yang sangat rendah. Anda dapat dengan mudah mengatur, menjalankan, menjadwalkan, dan mengelola pemindaian keamanan dan gratis untuk pengguna Google Cloud Platform. +

+# Lalu lintas dan siklus komputasi akan diperhitungkan dalam penagihan dan kuota standar. +# Anda dapat menggunakan Cloud Security Scanner hanya untuk memindai GCP. +# Masih akan dirilis: suport untuk [[Postgres#Cloud_Identity|Cloud Identity-Aware Proxy]]. +# Masih akan dirilis: Client Library. + +==''Referensi''== +* [[FATAL: password authentication failed for user “postgres”|https://stackoverflow.com/questions/21137726/fatal-password-authentication-failed-for-user-postgres/55735152?noredirect=1#comment98381221_55735152]] diff --git a/Private-IP.mediawiki b/Private-IP.mediawiki new file mode 100644 index 000000000000..4dc8a6047902 --- /dev/null +++ b/Private-IP.mediawiki @@ -0,0 +1,253 @@ +__TOC__ + +==Firewall== +[[Connect Google App Engine and Google Compute Engine|https://stackoverflow.com/a/57571915/4058484]] + +Setiap jaringan VPC memiliki [[dua aturan firewall|https://cloud.google.com/vpc/docs/firewalls#default_firewall_rules]] yang berlaku tapi tidak ditampilkan di Console: + +* Aturan keluar: Akses internet diizinkan jika tidak ada aturan firewall lain yang menyangkal lalu lintas keluar dan jika instance memiliki alamat IP eksternal atau menggunakan instance NAT. Lihat persyaratan [[Private-IP#External|Akses External]]. + +* Aturan masuk: Aturan masuk yang tindakannya ditolak, sumbernya adalah 0.0.0.0/0, dan prioritas adalah serendah mungkin (65.535) melindungi semua instance dengan memblokir lalu lintas masuk ke mereka. + +Aturan yang tersirat tidak dapat dihapus, tetapi mereka memiliki prioritas serendah mungkin. Aturan yang Anda buat dapat menimpanya selama aturan Anda memiliki prioritas lebih tinggi. + +===External=== +[[Akses internet|https://cloud.google.com/vpc/docs/vpc#internet_access_reqs]] hanya dapat dilakukan jika salah satu dari yang berikut ini terpenuhi: +* Mesin virtual harus memiliki alamat [[IP Eksternal|https://console.cloud.google.com/networking/addresses/list]] yang ditugaskan ke sebuah instance ketika itu dibuat atau setelah itu dibuat. +* Mesin virtual harus dapat menggunakan [[Cloud NAT|https://cloud.google.com/nat/docs]] atau proksi berbasis instance yang merupakan target untuk rute statis 0.0.0.0/0. + +===Internal=== +Anda dapat melakukan interkoneksi secara privat untuk [[VM Instance|https://cloud.google.com/solutions/building-internet-connectivity-for-private-vms]] atau [[Kubernetes Engine|https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters]] jika tidak, biaya berikut akan berlaku baik untuk IP Eksternal maupun Cloud NAT mulai 1 Januari 2020: + +[[|https://console.cloud.google.com/networking/addresses/list]] + +Privat IP memberikan [[sejumlah keunggulan|https://cloud.google.com/solutions/building-internet-connectivity-for-private-vms#introduction]] dibandingkan alamat IP publik (eksternal), termasuk: +* Permukaan serangan berkurang. Menghapus alamat IP eksternal dari VM membuat lebih sulit bagi penyerang untuk mencapai VM dan mengeksploitasi kerentanan potensial. +* Peningkatan fleksibilitas. Memperkenalkan lapisan abstraksi, seperti penyeimbang beban atau layanan NAT, memungkinkan pengiriman layanan yang lebih andal dan fleksibel bila dibandingkan dengan alamat IP eksternal statis. +Koneksi untuk Privat IP bisa dilakukan dengan [[Cloud NAT|https://cloud.google.com/solutions/building-internet-connectivity-for-private-vms#deploying_cloud_nat_for_fetching]], [[Load Balancing|https://cloud.google.com/solutions/building-internet-connectivity-for-private-vms#creating_an_http_load-balanced_service_for_serving]] atau [[Via IAP|https://cloud.google.com/solutions/building-internet-connectivity-for-private-vms#configuring_iap_tunnels_for_interacting_with_instances]]. Khusus untuk Koneksi Via IAP [[tidak dikenakan biaya|https://cloud.google.com/iap/pricing]]. + +==Koneksi== +* [[Building internet connectivity for private VMs|https://cloud.google.com/solutions/building-internet-connectivity-for-private-vms]] +Koneksi menggunakan IAP untuk TCP dilakukan via SSH dimulai dari remote host langsung ke VM. + +===Cloud IAP=== + +Keterbatasan Cloud IAP: + +* Bandwidth: Fitur Cloud IAP TCP forwarding tidak dimaksudkan untuk transfer data massal. Cloud IAP berhak membatasi pengguna yang dianggap menyalahgunakan layanan ini. +* Panjang koneksi: Cloud IAP tidak akan memutuskan sesi aktif kecuali untuk pemeliharaan. +* Protokol: Cloud IAP untuk TCP tidak mendukung UDP. + + +Buat [[Firewall Rule|https://console.cloud.google.com/networking/firewalls/list]] dengan nama allow-ssh-from-iap: +``` +gcloud compute firewall-rules create allow-ssh-from-iap \ + --source-ranges 35.235.240.0/20 \ + --target-tags http-tag \ + --allow tcp:22 +``` + +Di Cloud Shell, tes koneksi ke instance www-1 via [[Cloud IAP|https://cloud.google.com/iap/docs/using-tcp-forwarding]]: +``` +gcloud beta compute ssh www-1 \ + --zone us-central1-b \ + --tunnel-through-iap +``` + +Grant access untuk additional users + +[[|https://console.cloud.google.com/security/iap]] +* Security > Identity-Aware Proxy +* Select the SSH and TCP Resources tab +* On the right-hand side, click Add Member. + +===Cloud NAT=== + +Buat Cloud Router instances di setiap region: +``` +gcloud compute routers create nat-router-us-central1 \ + --network default \ + --region us-central1 +``` + +Atur setelan routers untuk [[Cloud NAT|https://console.cloud.google.com/projectselector2/net-services/nat/list]]: +``` +gcloud compute routers nats create nat-config \ + --router-region us-central1 \ + --router nat-router-us-central1 \ + --nat-all-subnet-ip-ranges \ + --auto-allocate-nat-external-ips +``` + +Check di [[Cloud NAT Console|https://console.cloud.google.com/net-services/nat/list]] dan Test: +``` +gcloud beta compute ssh www-1 --tunnel-through-iap +curl example.com +``` +===IAP connector=== +Untuk koneksi sumber daya Lokal / non-GCP Anda dapat menggunakan [[Konektor IAP|https://cloud.google.com/iap/docs/enabling-on-prem-howto]]. + +Konektor Cloud IAP meneruskan permintaan ke backend lokal Anda setelah dikerahkan. Karena kebijakan akses Cloud IAM diberlakukan di konektor Cloud IAP, pastikan bahwa semua permintaan ke backend Anda telah diautentikasi dan diotorisasi oleh Cloud IAP. + + +==VPC connector== +* [[Connecting to a VPC network|https://cloud.google.com/appengine/docs/standard/python/connecting-vpc]] + +Mulai [[9 April 2019|https://cloud.google.com/appengine/docs/standard/python/release-notes#april_9_2019]], Anda dapat menggunakan [[konektor VPC tanpa server|https://cloud.google.com/vpc/docs/configure-serverless-vpc-access?hl=id]] untuk koneksi ke sumber daya internal di jaringan VPC Anda di Google Cloud Platform, seperti Compute Engine Mesin virtual VM, mesin Cloud Memorystore, dll ''dengan alamat IP internal''. + +[[|https://cloud.google.com/vpc/docs/configure-serverless-vpc-access]] + +Akses VPC Tanpa Server dihargai sebagai berikut. Harga dapat berubah (dan mungkin meningkat) saat Serverless VPC Access dalam versi beta atau Ketersediaan Umum. + +[[https://user-images.githubusercontent.com/36441664/81759457-ff9fa000-94ee-11ea-8ce3-aa57562d465a.jpg]] + +===VPC Network=== +* [[Virtual Private Cloud (VPC) network overview|https://cloud.google.com/vpc/docs/vpc]] +* [[Using VPC networks|https://cloud.google.com/vpc/docs/using-vpc]] +Anda dapat memilih untuk [[membuat mode otomatis atau mode kustom|https://console.cloud.google.com/networking/networks/list]] jaringan VPC. Setiap jaringan baru yang Anda buat harus memiliki nama unik dalam proyek yang sama. +``` +$ gcloud compute networks create NETWORK_NAME \ + --subnet-mode=[auto|custom] \ + --bgp-routing-mode=DYNAMIC_ROUTING_MODE + +$ gcloud compute networks list +NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 +default AUTO REGIONAL + +$ gcloud compute networks describe default +autoCreateSubnetworks: true +creationTimestamp: '2019-02-20T05:16:29.303-08:00' +description: Default network for the project +id: 'XXXXXXXXXXXXXXXXXXXXX' +kind: compute#network +name: default +routingConfig: + routingMode: REGIONAL +selfLink: https://www.googleapis.com/compute/v1/projects/chetabahana/global/networks/default +subnetworks: +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/europe-west4/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/us-east1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/asia-east2/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/us-west2/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/australia-southeast1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/asia-south1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/asia-east1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/southamerica-east1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/us-east4/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/asia-southeast1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/asia-northeast2/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/europe-west1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/europe-north1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/europe-west6/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/us-west1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/us-central1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/europe-west2/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/northamerica-northeast1/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/europe-west3/subnetworks/default +- https://www.googleapis.com/compute/v1/projects/chetabahana/regions/asia-northeast1/subnetworks/default +x_gcloud_bgp_routing_mode: REGIONAL +x_gcloud_subnet_mode: AUTO +``` +DYNAMIC_ROUTING_MODE dapat berupa global atau regional untuk mengontrol perilaku Cloud Router di jaringan. Untuk informasi lebih lanjut, lihat [[dynamic routing mode|https://cloud.google.com/vpc/docs/vpc#routing_for_hybrid_networks]]. + +===IP Range=== +Setiap jaringan VPC terdiri dari satu atau lebih partisi rentang IP yang berguna yang disebut subnet. Setiap subnet dikaitkan dengan suatu wilayah. Sendiri, jaringan VPC tidak memiliki rentang alamat IP yang terkait dengannya. IP Range [[ditentukan untuk subnet|https://cloud.google.com/vpc/docs/vpc#manually_created_subnet_ip_ranges]]. + +``` +$ gcloud compute networks subnets list --network=default +NAME REGION NETWORK RANGE +default us-west2 default 10.168.0.0/20 +default asia-northeast1 default 10.146.0.0/20 +default asia-northeast2 default 10.174.0.0/20 +default us-west1 default 10.138.0.0/20 +default southamerica-east1 default 10.158.0.0/20 +default europe-west6 default 10.172.0.0/20 +default europe-west4 default 10.164.0.0/20 +default asia-east1 default 10.140.0.0/20 +default europe-north1 default 10.166.0.0/20 +default asia-southeast1 default 10.148.0.0/20 +default us-east4 default 10.150.0.0/20 +default europe-west1 default 10.132.0.0/20 +default europe-west2 default 10.154.0.0/20 +default europe-west3 default 10.156.0.0/20 +default australia-southeast1 default 10.152.0.0/20 +default asia-south1 default 10.160.0.0/20 +default us-east1 default 10.142.0.0/20 +default us-central1 default 10.128.0.0/20 +default asia-east2 default 10.170.0.0/20 +default northamerica-northeast1 default 10.162.0.0/20 + +``` +Perintah gcloud berikut membuat subnet baru di jaringan yang diberikan. +``` +$ gcloud compute networks subnets create SUBNET_NAME \ + --network=NETWORK \ + --range=PRIMARY_RANGE \ + --region=REGION +``` +Perluas rentang IP primer dan sekunder dari sebuah subnet dengan perintah gcloud berikut: +``` +$ gcloud compute networks subnets expand-ip-range SUBNET_NAME \ + --region=REGION \ + --prefix-length=PREFIX_LENGTH +$ gcloud compute networks subnets update SUBNET_NAME \ + --region=REGION \ + --add-secondary-ranges=SECONDARY_RANGE_NAME=SECONDARY_RANGE +``` +Anda dapat mengonversi jaringan mode otomatis ke jaringan mode kustom: +``` +$ gcloud compute networks update NETWORK_NAME \ + --switch-to-custom-subnet-mode +$ gcloud compute networks update NETWORK_NAME \ + --bgp-routing-mode=DYNAMIC_ROUTING_MODE +``` +===Deploy=== + +Untuk membuat konektor dapat dilakukan via [[console|https://console.cloud.google.com/marketplace/details/google/vpcaccess.googleapis.com]] atau command sbb: +``` +$ gcloud services enable vpcaccess.googleapis.com +$ gcloud beta compute networks vpc-access connectors create CONNECTOR_NAME \ +--network VPC_NETWORK --region REGION --range IP_RANGE + +``` +Anda dapat melihat rentang IP mana yang saat ini dicadangkan di [[GCP Console|https://console.cloud.google.com/networking/networks/list]]. Anda dapat memilih rentang IP CIDR / 28 [[yang tidak digunakan|https://cloud.google.com/appengine/docs/standard/python/connecting-vpc#creating_a_connector]] untuk digunakan untuk konektor Anda, misalnya, 10.8.0.0/28. +

+Contoh: Perintah berikut membuat konektor Akses VPC dengan nama 'my-vpc-connector' di wilayah 'us-central1' di jaringan 'my-network' dengan IP Kisaran CIDR '10.8.0.0/28'. +``` +$ gcloud beta compute networks vpc-access connectors create my-vpc-connector \ +--region=us-central1 --range=10.8.0.0/28 +Create request issued for: [my-vpc-connector] +Waiting for operation [66bba903-ccad-4ad5-a5f4-a6b784d60575] to complete...done. +Created connector [my-vpc-connector] + +$ gcloud beta compute networks vpc-access connectors describe my-vpc-connector \ +--region=us-central1 +ipCidrRange: 10.8.0.0/28 +maxThroughput: 1000 +minThroughput: 200 +name: projects//locations/us-central1/connectors/my-vpc-connector +network: default +state: READY +``` +Untuk menghubungkan konektor Anda ke layanan, tambahkan ini ke file app.yaml layanan Anda: +``` +vpc_access_connector: + name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" +``` +Kemudian deploy dengan menjalankan gcloud components install beta: +``` +$ gcloud beta app deploy +``` +Catatan: Untuk menggunakan Akses VPC Tanpa Server, pastikan Anda menggunakan gcloud beta mendapatkan akses ke perintah beta dengan menjalankan gcloud components install beta. Anda juga dapat melakukannya via [[Google Cloud Build|https://cloud.google.com/cloud-build/docs/build-config]] dengan setelan ''cloudbuild.yaml'' sbb: +``` +steps: + +- name: 'gcr.io/cloud-builders/gcloud' + args: ['beta', 'app', 'deploy', '--version=$_VERSION'] +``` +Setelah Anda menggunakan layanan Anda, ia dapat mengirim permintaan ke alamat [[IP internal|https://cloud.google.com/vpc/docs/shared-vpc#ip_addresses]] atau [[Nama DNS|https://cloud.google.com/compute/docs/ip-addresses/#instancenames]] untuk mengakses sumber daya di [[Private-IP#VPC_Network|jaringan VPC]] Anda. + + +==''Referensi''== +* [[Building internet connectivity for private VMs|https://cloud.google.com/solutions/building-internet-connectivity-for-private-vms]] +* [[Setting up a private cluster|https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters]] \ No newline at end of file diff --git a/Python.mediawiki b/Python.mediawiki new file mode 100644 index 000000000000..b85ff27e2c5f --- /dev/null +++ b/Python.mediawiki @@ -0,0 +1 @@ +https://linuxize.com/post/how-to-install-python-3-7-on-ubuntu-18-04/ \ No newline at end of file diff --git a/Quota.mediawiki b/Quota.mediawiki new file mode 100644 index 000000000000..3966b1401c30 --- /dev/null +++ b/Quota.mediawiki @@ -0,0 +1,7 @@ + + +__TOC__ +==Referensi== +* [[Detil Quota|https://console.cloud.google.com/appengine/quotadetails]] +* [[Quota: Implementing Cron and Task|https://www.igorkromin.net/index.php/2018/03/22/the-right-way-of-implementing-cron-and-task-queues-on-google-app-engine/]] +* [[Google App engine needs periodic restarting|https://stackoverflow.com/a/35290296/4058484]] diff --git a/README.md b/README.md new file mode 100644 index 000000000000..1a9893149bda --- /dev/null +++ b/README.md @@ -0,0 +1,180 @@ +--- +sort: 0 +spin: +span: +suit: 0 +--- +# ## Project Tutorial + +# [Prime Identity](https://eq19.com/) + +By this part we are going to compile all topic we have discussed. Here we would like to explain the way we take on getting the arithmetic expresion of prime distribution to get an ***individual unit expression (identity)*** such as a taxicab number below. + +```note +It is a taxicab number, and is variously known as Ramanujan's number and the Ramanujan-Hardy number, after an anecdote of the British mathematician _[GH Hardy](https://en.wikipedia.org/wiki/G._H._Hardy)_ when he visited Indian mathematician _[Srinivasa Ramanujan](https://en.wikipedia.org/wiki/Srinivasa_Ramanujan)_ in hospital _([Wikipedia](https://en.wikipedia.org/wiki/1729_(number)))_. +``` + +[![Ramanujan-Hardy number](https://user-images.githubusercontent.com/36441664/103107461-173c2b00-4671-11eb-962c-da7e9eab022e.png)](https://en.wikipedia.org/wiki/1729_(number)) + +These three (3) number are [twin primes](https://en.wikipedia.org/wiki/Twin_prime). We called the pairs as _[True Prime Pairs](https://www.eq19.com/addition/file02.html#true-prime-pairs)_. Our scenario is mapping the distribution out of these pairs by taking the symmetrical behaviour of 36 as the smallest power (greater than 1) which is not a prime power. + +```tip +The smallest square number expressible as the sum of **four (4) consecutive primes** in two ways (5 + 7 + 11 + 13 and 17 + 19) which are also **two (2) couples** of prime twins! _([Prime Curios!](https://en.wikipedia.org/wiki/1729_(number)](https://primes.utm.edu/curios/page.php?number_id=270)))_. +``` + +```scss +$True Prime Pairs: + (5,7), (11,13), (17,19) + + layer| i | f + -----+-----+--------- + | 1 | 5 + 1 +-----+ + | 2 | 7 + -----+-----+--- } 36 » 6® + | 3 | 11 + 2 +-----+ + | 4 | 13 + -----+-----+--------- + | 5 | 17 + 3 +-----+ } 36 » 6® + | 6 | 19 + -----+-----+--------- +``` + +Thus in short this is all about the method that we called as the ***[19 vs 18 Scenario](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857#the-%CE%B419-vs-18-scenario)*** of mapping [the quantum way](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857#file-utilization-md) within a huge of [primes objects](https://github.com/eq19) (5 to 19) by [lexering](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857#file-lexer-md) (11) the un[grammar](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857#file-grammar-md)ed feed (7) and [parsering](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857#file-parser-md) (13) across [syntax](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857#file-syntax-md) (17). + +***Φ(1,2,3) = Φ(6,12,18) = Φ(13,37,61)*** + +```scss +$True Prime Pairs: +(5,7), (11,13), (17,19) + +layer | node | sub | i | f +------+------+-----+---------- + | | | 1 | + | | 1 +-----+ + | 1 | | 2 | (5) + | |-----+-----+ + | | | 3 | + 1 +------+ 2 +-----+---- + | | | 4 | + | +-----+-----+ + | 2 | | 5 | (7) + | | 3 +-----+ + | | | 6 | +------+------+-----+-----+------ } (36) + | | | 7 | + | | 4 +-----+ + | 3 | | 8 | (11) + | +-----+-----+ + | | | 9 | + 2 +------| 5 +-----+----- + | | | 10 | + | |-----+-----+ + | 4 | | 11 | (13) + | | 6 +-----+ + | | | 12 | +------+------+-----+-----+------------------ + | | | 13 | + | | 7 +-----+ + | 5 | | 14 | (17) + | |-----+-----+ + | | | 15 | + 3 +------+ 8 +-----+----- } (36) + | | | 16 | + | |-----+-----+ + | 6 | | 17 | (19) + | | 9 +-----+ + | | | 18 | +------|------|-----+-----+------ +``` + +The main background is that, as you may also aware, the prime number theorem describes the ***asymptotic distribution*** of prime numbers which is still a major problem in mathematic. + +## Zeta Function + +Instead of getting a proved formula we came to a unique expression called ***zeta function***. This expression first appeared in a paper in 1737 entitled _Variae observationes circa series infinitas_. + +```tip +This expression states that the sum of the zeta function is equal to the product of the reciprocal of one minus the reciprocal of primes to the power s. But what has this got to do with the primes? The answer is in the following product taken over the primes p (discovered by _[Leonhard Euler](https://en.wikipedia.org/wiki/Leonhard_Euler)_): +``` + +![image](https://user-images.githubusercontent.com/8466209/219739322-ebdc1916-249a-49da-8ded-ce0fe1205550.png) + +This issue is actually come from ***[Riemann hypothesis](https://en.wikipedia.org/wiki/Riemann_hypothesis)***, a conjecture about the distribution of complex zeros of the Riemann zeta function that is considered by many mathematicians to be ***the most important*** of _[unsolved problems](https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_mathematics)_ in pure mathematics. + +```note +In addition to the trivial roots, there also exist ***complex roots*** for real t. We find that the he first ten (10) non-trivial roots of the Riemann zeta function is occured when the values of t below 50. A plot of the values of ζ(1/2 + it) for t ranging from –50 to +50 is shown below. The roots occur each time ***the locus passes through the origin***. _([mathpages](https://www.mathpages.com/home/kmath738/kmath738.htm))_. +``` + +[![image](https://user-images.githubusercontent.com/8466209/219828222-615a2037-dbcd-4412-95bf-740bb32094de.png)](https://www.mathpages.com/home/kmath738/kmath738.htm) + +Meanwhile obtaining the non complex numbers it is easier to look at a graph like the one below which shows Li(x) (blue), R(x) (black), π(x) (red) and x/ln x (green); and then proclaim "R(x) is the best estimate of π(x)." Indeed it is for that range, but as we mentioned above, Li(x)-π(x) changes sign infinitely often, and near where it does, Li(x) would be the best value. + +[![image](https://user-images.githubusercontent.com/8466209/219214486-e6412fb0-d190-45ae-990f-524532661444.png)](https://primes.utm.edu/howmany.html#better) + +And we can see in the same way that the function Li(x)-(1/2)Li(x1/2) is 'on the average' a better approximation than Li(x) to π(x); but no importance can be attached to the latter terms in Riemann's formula even by repeated averaging. +The problem is that the contributions from the non-trivial zeros at times swamps that of any but the main terms in these expansions. + +```warning +A. E. Ingham says it this way: Considerable importance was attached formerly to a function suggested by Riemann as an approximation to π(x)... This function represents π(x) with astonishing accuracy for all values of x for which π(x) has been calculated, but we now see that its superiority over Li(x) ***is illusory***... and for special values of x (as large as we please) the one approximation will deviate as widely as the other from the true value _([primes.utm.edu](https://primes.utm.edu/howmany.html#better))_. +``` + +[![](https://user-images.githubusercontent.com/36441664/87958552-dea18f80-cadb-11ea-9499-6c2ee580a5ca.png)](https://primes.utm.edu/howmany.html#pnt) + +Moreover in it was verified numerically, in a rigorous way using interval arithmetic, that _[The Riemann hypothesis is true up to 3 · 10^12](https://arxiv.org/pdf/2004.09765.pdf)_. That is, all zeroes β+iγ of the Riemann zeta-function with 0<γ≤3⋅1012 have β=1/2. + +```danger +We have Λ ≤ 0.2. The next entry is conditional on taking H a little higher than 10*13, which of course, is not achieved by Theorem 1. This would enable one to prove Λ < 0.19. Given that our value of H falls between the entries in this table, it is possible that some extra decimals could be wrought out of the calculation. We have not pursued this _([arXiv:2004.09765](https://arxiv.org/abs/2004.09765))_. +``` + +[![image](https://user-images.githubusercontent.com/8466209/219715694-751fe538-378d-4f58-ae82-ac9e6823ad65.png)](https://arxiv.org/pdf/2004.09765.pdf) + +This Euler formula represents the distribution of a group of numbers that are positioned at regular intervals on a straight line to each other. Riemann later extended the definition of zeta(s) to all complex numbers (***except the simple pole at s=1 with residue one***). Euler's product still holds if the real part of s is greater than one. Riemann derived the functional equation of zeta function. + +```danger +The Riemann zeta function has the trivial zeros at -2, -4, -6, ... (the poles of gamma(s/2)). Using the Euler product (with the functional equation) it is easy to show that all the other zeros are in the critical strip of non-real complex numbers with 0 < Re(s) < 1, and that they are symmetric about the critical line Re(s)=1/2. The unproved Riemann hypothesis is that all of the nontrivial zeros are actually on the critical line _([primes.utm.edu](https://primes.utm.edu/notes/rh.html))_. +``` + +![image](https://user-images.githubusercontent.com/8466209/219720444-e5ba30ac-e000-4c85-8678-186676b93d2b.png) + +If both of the above statements are true then mathematically this Riemann Hypothesis is proven to be incorrect because it only applies to certain cases or limitations. So first of all the basis of the Riemann Hypothesis has to be considered. + +[![Riemann hypothesis,](https://user-images.githubusercontent.com/8466209/218374273-729fee09-5480-4fb3-a3a6-0dc050bdbe26.png)](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857#file-parser-md) + +{:.bg-white.text-black.m-5} +_Sehr leider Herr Riemann. Leute können den Fall immer noch nicht lösen.._. + +On the other hand, the possibility of obtaining the function of the distribution of prime numbers shall go backwards since it needs significant studies to be traced. Or may be ***start again from the Euleur Function***. + +## Euler's identity + +_[Freeman Dyson](https://en.wikipedia.org/wiki/Freeman_Dyson#Quantum_physics_and_prime_numbers)_ discovered an intriguing connection between quantum physics and [Montgomery's pair correlation conjecture](https://en.wikipedia.org/wiki/Montgomery%27s_pair_correlation_conjecture) about the zeros of the [zeta function](https://gist.github.com/eq19/e9832026b5b78f694e4ad22c3eb6c3ef#zeta-function) which dealts with the distribution of primes. + +```note +The Mathematical Elementary Cell 30 (***MEC30***) standard _[unites](https://gist.github.com/eq19/e9832026b5b78f694e4ad22c3eb6c3ef#centralizing)_ the mathematical and physical results of 1972 by _the mathematician Hugh Montgomery and the physicist Freeman Dyson_ and thus reproduces energy distribution in systems as a path plan ***more accurately than a measurement*** _([Google Patent DE102011101032A9](https://patents.google.com/patent/DE102011101032A9/en#similarDocuments))_. +``` + +[![Euler's identity](https://user-images.githubusercontent.com/36441664/74366957-992db780-4e03-11ea-8f26-cca32bd26003.png)](https://patentimages.storage.googleapis.com/6f/e3/f0/b8f7292f1f2749/DE102011101032A9.pdf) + +The path plan assume that a symmetric distribution of prime numbers with equal axial lengths from a ***middle zero axis = 15*** is able to determine the distribution of primes in a given number space. This assumption finally bring us to the equation of ***[Euler's identity](https://en.wikipedia.org/wiki/Euler%27s_identity)***. + +```note +***Euler's identity*** is named after the Swiss mathematician Leonhard Euler. It is a special case of Euler's formula +e^ix = cos x + i sin x when evaluated for x = π. _([Wikipedia](https://en.wikipedia.org/wiki/Euler%27s_identity))_. +``` + +[![image](https://user-images.githubusercontent.com/8466209/219584666-703f4584-db7c-4f2d-9714-f52067869ef3.png)](https://en.wikipedia.org/wiki/Euler%27s_identity) + +The finiteness position of Euler's identity by the said _MEC30_ opens up the possibility of accurately representing the self-similarity based on the distribution of _[True Prime Pairs](https://gist.github.com/eq19/0ce5848f7ad62dc46dedfaa430069857)_ so that all number would belongs together with [their own identitities](https://www.eq19.com/identition/). + +```tip +Euler's identity is considered to be an exemplar of deep mathematical beauty as it shows a profound connection between the most fundamental numbers. Three (3) of the basic arithmetic operations occur exactly once each: ***addition***, ***multiplication***, and ***exponentiation*** _([Wikipedia](https://en.wikipedia.org/wiki/Euler%27s_identity))_. +``` + +[![image](https://user-images.githubusercontent.com/8466209/253148763-4a982982-4f70-4d7d-b524-51b72c6f17e9.png)](/identition). + +See that there are multiple repetition from addition to multiplication which may lead up to the concept of [11th-dimension](https://www.techtarget.com/whatis/definition/11th-dimension). This path is being applied as you can find on the left sidebar. (Please change the view to desktop mode if you are on mobile browser). + +Nothing is going to be easly about the nature of prime numbers but they demonstrably congruent to something organized. Let's discuss starting with the _[addition zones](https://www.eq19.com/addition/)_. diff --git a/ReactJs.mediawiki b/ReactJs.mediawiki new file mode 100644 index 000000000000..8de7afedf156 --- /dev/null +++ b/ReactJs.mediawiki @@ -0,0 +1 @@ +https://github.com/gatsbyjs/gatsby \ No newline at end of file diff --git a/Redis.mediawiki b/Redis.mediawiki new file mode 100644 index 000000000000..a73927a9de40 --- /dev/null +++ b/Redis.mediawiki @@ -0,0 +1,76 @@ +__TOC__ +https://redis.io/documentation +``` +Successfully built b85b4246e9f8 +Successfully tagged compose_app:latest +WARNING: Image for service app was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. +Creating compose_redis_1 ... done +Creating compose_app_1 ... done +Attaching to compose_redis_1, compose_app_1 +redis_1 | 1:C 08 Jul 18:12:21.851 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf +redis_1 | _._ +redis_1 | _.-``__ ''-._ +redis_1 | _.-`` `. `_. ''-._ Redis 3.2.12 (00000000/0) 64 bit +redis_1 | .-`` .-```. ```\/ _.,_ ''-._ +redis_1 | ( ' , .-` | `, ) Running in standalone mode +redis_1 | |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 +redis_1 | | `-._ `._ / _.-' | PID: 1 +redis_1 | `-._ `-._ `-./ _.-' _.-' +redis_1 | |`-._`-._ `-.__.-' _.-'_.-'| +redis_1 | | `-._`-._ _.-'_.-' | http://redis.io +redis_1 | `-._ `-._`-.__.-'_.-' _.-' +redis_1 | |`-._`-._ `-.__.-' _.-'_.-'| +redis_1 | | `-._`-._ _.-'_.-' | +redis_1 | `-._ `-._`-.__.-'_.-' _.-' +redis_1 | `-._ `-.__.-' _.-' +redis_1 | `-._ _.-' +redis_1 | `-.__.-' +redis_1 | +redis_1 | 1:M 08 Jul 18:12:21.852 # WARNING: The TCP backlog +``` + +==RDB snapshotting fails== + +``` +MISCONF Redis is configured to save RDB snapshots, but it is currently not able to +persist on disk. Commands that may modify the data set are disabled, because this +instance is configured to report errors during writes if RDB snapshotting fails +(stop-writes-on-bgsave-error option). Please check the Redis logs for details +about the RDB error. + +ResponseError at /en/ +Request Method: GET +Django Version: 2.1.5 +Exception Type: ResponseError +Exception Location: /env/lib/python3.7/site-packages/redis/connection.py in +read_response, line 629 +``` +===Compose=== +``` +redis_1 | 1:C 21 Mar 2019 00:51:04.418 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo +redis_1 | 1:C 21 Mar 2019 00:51:04.418 # Redis version=5.0.4, bits=64, commit=00000000, +modified=0, pid=1, just started +redis_1 | 1:C 21 Mar 2019 00:51:04.418 # Warning: no config file specified, using the +default config. In order to specify a config file use redis-server /path/to/redis.conf +redis_1 | 1:M 21 Mar 2019 00:51:04.422 * Running mode=standalone, port=6379. +redis_1 | 1:M 21 Mar 2019 00:51:04.422 # WARNING: The TCP backlog setting of 511 cannot +be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. +redis_1 | 1:M 21 Mar 2019 00:51:04.422 # Server initialized +redis_1 | 1:M 21 Mar 2019 00:51:04.423 # WARNING overcommit_memory is set to 0! +Background save may fail under low memory condition. To fix this issue add +'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command +'sysctl vm.overcommit_memory=1' for this to take effect. +redis_1 | 1:M 21 Mar 2019 00:51:04.423 # WARNING you have Transparent Huge Pages (THP) +support enabled in your kernel. This will create latency and memory usage issues with +Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_ +hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the +setting after a reboot. Redis must be restarted after THP is disabled. +redis_1 | 1:M 21 Mar 2019 00:51:04.423 * Ready to accept connections +``` + +===Solusi=== +``` +$ docker ps +CONTAINER ID IMAGE COMMAND PORTS +d66073a577ee redis:5.0-alpine "docker-entrypoint.s…" 0.0.0.0:6379->6379/tcp +``` \ No newline at end of file diff --git a/Registry.mediawiki b/Registry.mediawiki new file mode 100644 index 000000000000..c554fb7ce364 --- /dev/null +++ b/Registry.mediawiki @@ -0,0 +1,59 @@ +==Local== +* [[Create a private local docker registry|https://medium.com/faun/create-a-private-local-docker-registry-5c79ce912620]] +===Certificate=== + +==Cleaning== +* [[Container images delete|https://cloud.google.com/sdk/gcloud/reference/container/images/delete]] +* [[How to remove a pushed image|https://stackoverflow.com/questions/31523945/how-to-remove-a-pushed-image-in-google-container-registry]] + +===Command=== +====Reguler==== +* [[determine if a variable is empty|https://www.cyberciti.biz/faq/unix-linux-bash-script-check-if-variable-is-empty/]] + +``` +$ gcloud container images list-tags gcr.io/chetabahana/backend +7d6ce698cce2 latest 2019-04-12T14:13:16 +7c077a9ca45a 2019-04-12T14:00:38 + +$ gcloud container images delete --quiet gcr.io/chetabahana/backend@DIGEST +ERROR: (gcloud.container.images.delete) [gcr.io/chetabahana/backend@DIGEST] \ +DIGEST must be of the form "sha256: + +$ DIGEST=`gcloud container images list-tags gcr.io/chetabahana/backend \ +--filter='-tags:*' --format='get(digest)'` + +$ echo $DIGEST +sha256:7c077a9ca45aea7134d8436a3071aceb5fa62758cc86eadec63f02692b7875f7 + +$ [ -z "$DIGEST" ] && echo "No digest" || gcloud container images delete \ +--quiet gcr.io/chetabahana/backend@$DIGEST +Digests: +- gcr.io/chetabahana/backend@sha256:7c077a9ca45aea7134d8436a3071aceb5fa62758cc86..... +Deleted [gcr.io/chetabahana/backend@sha256:7c077a9ca45aea7134d8436a3071aceb5fa62..... + + +$ gcloud container images list-tags gcr.io/chetabahana/backend +DIGEST TAGS TIMESTAMP +7d6ce698cce2 latest 2019-04-12T14:13:16 +``` +====Recursive==== +* [[awk and xargs|https://stackoverflow.com/a/49409298/4058484]] +``` +$ gcloud container images list-tags gcr.io/${PROJECT_ID/${IMAGE} \ +--filter='-tags:*' --format='get(digest)' --limit=unlimited | +awk '{print "gcr.io/${PROJECT_ID}/${IMAGE}@" $1}' | +xargs gcloud container images delete --quiet +Digests: +- gcr.io/chetabahana/backend@sha256:7c077a9ca45aea7134d8436a3071aceb5fa62758cc86..... +Deleted [gcr.io/chetabahana/backend@sha256:7c077a9ca45aea7134d8436a3071aceb5fa62..... + +``` +===Scripts=== + +====Particular==== +* [[Script to clean up before a particular date|https://gist.github.com/ahmetb/7ce6d741bd5baa194a3fac6b1fec8bb7]] + +====Dockertools==== +* [[drmi - a tool for cleaning up Docker images date|https://blog.osninja.io/drmi-image-clean-tool/]] +==''Referensi''== +* [[GCR.io Tips & Tricks|https://ahmet.im/blog/google-container-registry-tips/]] \ No newline at end of file diff --git a/Repository.mediawiki b/Repository.mediawiki new file mode 100644 index 000000000000..c1be72f5239d --- /dev/null +++ b/Repository.mediawiki @@ -0,0 +1,316 @@ +__TOC__ +==Git== +* [[gitignore|https://git-scm.com/docs/gitignore]] + +[[|https://storage.googleapis.com/gweb-cloudblog-publish/images/serverless-deployments-3dnr8.max-700x700.PNG]] +``` + $ git status + [...] + # Untracked files: + [...] + # Documentation/foo.html + # Documentation/gitignore.html + # file.o + # lib.a + # src/internal.o + [...] + $ cat .git/info/exclude + # ignore objects and archives, anywhere in the tree. + *.[oa] + $ cat Documentation/.gitignore + # ignore generated html files, + *.html + # except foo.html which is maintained by hand + !foo.html + $ git status + [...] + # Untracked files: + [...] + # Documentation/foo.html + [...] +``` +===GitHub=== +* [[gitignore - sample|https://github.com/github/gitignore/blob/master/Python.gitignore]] +* [[gitignore - review|https://realpython.com/python-git-github-intro]] +``` +$ git status +On branch master +Your branch is up to date with 'origin/master'. + +Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: cloudbuild.yaml + deleted: get-pip.py + modified: saleor/__pycache__/__init__.cpython-37.pyc + modified: saleor/__pycache__/celeryconf.cpython-37.pyc + modified: saleor/__pycache__/settings.cpython-37.pyc + modified: saleor/account/__pycache__/__init__.cpython-37.pyc + modified: saleor/account/__pycache__/models.cpython-37.pyc + modified: saleor/account/__pycache__/utils.cpython-37.pyc + modified: saleor/account/__pycache__/validators.cpython-37.pyc + modified: saleor/checkout/__pycache__/__init__.cpython-37.pyc + modified: saleor/checkout/__pycache__/models.cpython-37.pyc + modified: saleor/core/__pycache__/__init__.cpython-37.pyc + modified: saleor/core/__pycache__/exceptions.cpython-37.pyc + modified: saleor/core/__pycache__/i18n.cpython-37.pyc + modified: saleor/core/__pycache__/models.cpython-37.pyc + modified: saleor/core/__pycache__/weight.cpython-37.pyc + modified: saleor/core/utils/__pycache__/__init__.cpython-37.pyc + modified: saleor/core/utils/__pycache__/json_serializer.cpython-37.pyc + modified: saleor/core/utils/__pycache__/taxes.cpython-37.pyc + modified: saleor/core/utils/__pycache__/translations.cpython-37.pyc + modified: saleor/dashboard/__pycache__/__init__.cpython-37.pyc + modified: saleor/data_feeds/__pycache__/__init__.cpython-37.pyc + modified: saleor/discount/__pycache__/__init__.cpython-37.pyc + modified: saleor/discount/__pycache__/models.cpython-37.pyc + modified: saleor/discount/__pycache__/utils.cpython-37.pyc + modified: saleor/graphql/__pycache__/__init__.cpython-37.pyc + modified: saleor/menu/__pycache__/__init__.cpython-37.pyc + modified: saleor/menu/__pycache__/models.cpython-37.pyc + modified: saleor/order/__pycache__/__init__.cpython-37.pyc + modified: saleor/order/__pycache__/models.cpython-37.pyc + modified: saleor/page/__pycache__/__init__.cpython-37.pyc + modified: saleor/page/__pycache__/models.cpython-37.pyc + modified: saleor/payment/__pycache__/__init__.cpython-37.pyc + modified: saleor/payment/__pycache__/models.cpython-37.pyc + modified: saleor/product/__pycache__/__init__.cpython-37.pyc + modified: saleor/product/__pycache__/models.cpython-37.pyc + modified: saleor/search/__pycache__/__init__.cpython-37.pyc + modified: saleor/seo/__pycache__/__init__.cpython-37.pyc + modified: saleor/seo/__pycache__/models.cpython-37.pyc + modified: saleor/shipping/__pycache__/__init__.cpython-37.pyc + modified: saleor/shipping/__pycache__/models.cpython-37.pyc + modified: saleor/shipping/__pycache__/utils.cpython-37.pyc + modified: saleor/site/__pycache__/__init__.cpython-37.pyc + modified: saleor/site/__pycache__/models.cpython-37.pyc + modified: saleor/site/__pycache__/patch_sites.cpython-37.pyc + modified: saleor/wsgi/__pycache__/__init__.cpython-37.pyc + modified: saleor/wsgi/__pycache__/health_check.cpython-37.pyc + +Untracked files: + (use "git add ..." to include in what will be committed) + + virtual-env + +no changes added to commit (use "git add" and/or "git commit -a") + +``` +===Google=== +* [[skip_files - sample|https://cloud.google.com/appengine/docs/standard/python/config/appref#skip_files]] +* [[gcloudignore - sample|https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore]] + + + +==Auth== +* [[Accessing private GitHub repositories|https://cloud.google.com/cloud-build/docs/access-private-github-repos]] +===GitHub=== +* [[Cara koneksi ke GitHub|https://help.github.com/articles/requesting-organization-approval-for-oauth-apps/]] + +===Google=== +* [[Cara koneksi ke Google|https://cloud.google.com/source-repositories/docs/cloning-repositories]] + +==Repo== +* Cara buat repository baru: [[GitHub|https://help.github.com/en/articles/creating-a-new-repository]] dan [[Google|https://cloud.google.com/source-repositories/docs/creating-an-empty-repository]] + +===GitHub=== +* Setel [[Private atau Public|https://help.github.com/en/articles/setting-repository-visibility]] + +====Buat==== +Untuk Aplikasi Saleor ''[[dibuat Repo baru di GitHub|https://github.com/new]]'' secara kosongan dan disetel private. + +[[|https://chetabahana.github.io/images/github/github-repo.png]] + +====Push==== +Login ssh ke instance dan Kirim konten ([[push|https://gist.github.com/ucheng/5501366]]) yang dibuat ''[[Instalasi-di-GAE#via-build-image|via-build-image]]'' dari [[Apa-Itu-Codefresh|Coderesh]]. + +``` +$ docker run -d r.cfcr.io/chetabahana/saleor +$ CONTAINER_ID=$(docker ps -alq) +$ docker cp $CONTAINER_ID:/app . +$ docker stop $CONTAINER_ID +$ cd app +$ git config --global user.name "chetabahana" +$ git config --global user.email "chetabahana@gmail.com" +$ git init +$ git add . +$ git commit -m "initial commit" +$ git remote add origin https://github.com/chetabahana/market.git +$ git push -u origin master +Username for 'https://github.com': chetabahana +Password for 'https://chetabahana@github.com': ***** +Counting objects: 3711, done. +Compressing objects: 100% (3584/3584), done. +Writing objects: 100% (3711/3711), 22.19 MiB | 9.94 MiB/s, done. +Total 3711 (delta 745), reused 0 (delta 0) +remote: Resolving deltas: 100% (745/745), done. +To https://github.com/chetabahana/market.git + de02deb..f5af36b master -> master +Branch 'master' set up to track remote branch 'master' from 'origin'. +``` +====Token==== +* [[Creating a personal access token for the command line|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] +``` +#!/bin/sh +if [ -d compose ]; then rm -Rf compose; fi +git clone https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git +cd compose && git remote rm origin +git config --global user.name "chetabahana" +git config --global user.email "chetabahana@gmail.com" +git remote add origin https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git +sed -i "s/-[0-9]\{1,\}-\([a-zA-Z0-9_]*\)'/-`date +%d%H%M`-cron'/g" cloudbuild.yaml +git status && git add . && git commit -m "codefresh commit" && git push -u origin master + +``` +====Config==== +* [[Make .gitconfig Work for You|http://michaelwales.com/articles/make-gitconfig-work-for-you/]] +* [[Sample of git config file (Example .gitconfig)|https://gist.github.com/pksunkara/988716]] +``` +[user] + name = Michael Wales + email = webmaster@michaelwales.com + +[credential] + helper = osxkeychain + +[alias] + ci = commit + co = checkout + +[push] + default = simple + +[url "https://bitbucket.org/"] + insteadOf = bb: + +[url "https://github.com/"] + insteadOf = gh: + +[url "https://gist.github.com/"] + insteadOf = gist: +``` + +Contoh command +``` +$ git clone gh:walesmd/walesmd.github.io +$ git clone gist:walesmd/7315613 +$ git clone bb:walesmd/codeigniter-erkana-auth +``` + + +====Update==== +* [[Pushing to a remote|https://help.github.com/en/articles/pushing-to-a-remote]] +Update repo va local PC atau via instance +``` +$ cd ~ +$ git clone https://github.com/chetabahana/market.git +$ cd market +~/market$ cp -rf ../app/* ../*.yaml ../ . #juga file-file lain yang ingin diubah/ditambah +~/market$ git add . +~/market$ git commit -m "update commit" +~/market$ git push -u origin master +``` +====Merging==== +* [[Penggabungan|https://git-scm.com/book/id/v1/Branching-Pada-Git-Dasar-Pencabangan-Branching-dan-Penggabungan-Merging]] + +[[|https://git-scm.com/book/id/v1/Branching-Pada-Git-Dasar-Pencabangan-Branching-dan-Penggabungan-Merging]] + +====AutoSync==== +* [[Auto Syncing a Forked Git Repository With the Parent|https://h3manth.com/new/blog/2013/auto-syncing-a-forked-git-repository-with-the-parent/]] +``` +#!/bin/sh +# crontab -l: 0 * * * * sh cron.sh +cd ~/.gits/Tutorial-Buka-Toko +eval `ssh-agent` && expect ~/.ssh/agent && ssh-add -l +upstream=git://github.com/mirumee/saleor.git +git remote add upstream $upstream +git checkout master +git pull --rebase +git push origin master +eval `ssh-agent -k` +``` +====GitHub App==== +* [[Running builds on GitHub|https://cloud.google.com/cloud-build/docs/run-builds-on-github]] + +[[|https://stackoverflow.com/questions/52191307/syncing-git-repo-to-google-cloud/56880897#56880897]] + +===Google=== +* [[Pushing code from an existing repository|https://cloud.google.com/source-repositories/docs/pushing-code-from-a-repository]] + +====Koneksi==== +Repo ''[[dibuat baru di Google dan dikoneksi|https://source.cloud.google.com/repo/connect]]'' ke GitHub + +[[|https://chetabahana.github.io/images/google/google-repo.png]] + +====Pemicu==== +Buat [[pemicu di Google|https://console.cloud.google.com/cloud-build/triggers/add]] disetel dengan cloudbuild.yaml + +``` +steps: +- name: "gcr.io/cloud-builders/gcloud" + args: ["app", "deploy", '--version=v1-1'] +timeout: "1600s" +``` + +====Update==== +Dengan configurasi diatas maka semua repo dimanapun perubahan code dilakukan akan sinkron satu sama lain demikian juga aplikasi yang di deploy via trigger cloudbuild.yaml. +``` +starting build "c450d07e-e5d6-4e46-bef4-2b2fa1519b8e" + +FETCHSOURCE +Initialized empty Git repository in /workspace/.git/ +From https://source.developers.google.com/p/chetabahana/r/github_chetabahana_market + * branch 057b04509c941ce92ceeff5e1d6b5211a32943ca -> FETCH_HEAD +HEAD is now at 057b045 /market/static +BUILD +Already have image (with digest): gcr.io/cloud-builders/gcloud +Services to deploy: + +descriptor: [/workspace/app.yaml] +source: [/workspace] +target project: [chetabahana] +target service: [market] +target version: [v1-1] +target url: [https://market-dot-chetabahana.appspot.com] + + +Do you want to continue (Y/n)? +Beginning deployment of service [market]... +Created .gcloudignore file. See `gcloud topic gcloudignore` for details. +#============================================================# +#= Uploading 4 files to Google Cloud Storage =# +#============================================================# +File upload done. +Updating service [market]... +................................................................................... +.......................................done. +Setting traffic split for service [market]... +................................................................................... +.......................................done. +Deployed service [market] to [https://market-dot-chetabahana.appspot.com] + +You can stream logs from the command line by running: + $ gcloud app logs tail -s market + +To view your application in the web browser run: + $ gcloud app browse -s market --project=chetabahana +PUSH +DONE +``` + +====Security==== +* [[Detecting security keys|https://cloud.google.com/source-repositories/docs/detecting-security-keys]] +Pastikan tidak menyimpan kunci keamanan dalam [[sistem repository|https://console.cloud.google.com/cloud-resource-manager]]. Repositori Google Cloud dapat membantu Anda mencegah pengguna menyimpan kunci keamanan dalam repositori. + +``` +gcloud init +gcloud source project-configs update --enable-pushblock +``` + +[[Aktifkan fitur|https://cloud.google.com/source-repositories/docs/detecting-security-keys]] ini untuk meminta Google memeriksa jenis kunci keamanan berikut: + +# Kredensial akun layanan Google Cloud Platform (format JSON) +# Kunci privat berkode PEM (termasuk RSA, DSA, dan PGP) +Fitur ini tersedia di semua repositori tanpa biaya. + diff --git a/SSH-Key.mediawiki b/SSH-Key.mediawiki new file mode 100644 index 000000000000..2b8093be62c4 --- /dev/null +++ b/SSH-Key.mediawiki @@ -0,0 +1,372 @@ +==GitHub== +===SSH Key=== +* [[Using SSH key for Data transfer|https://stackoverflow.com/a/56204733/4058484]] + +====Cek Remote==== +Lihat [[daftar key di GitHub|https://github.com/settings/keys]] + +====Cek Local==== +Lihat [[daftar key di local PC|https://help.github.com/en/articles/checking-for-existing-ssh-keys]] +``` +$ ls -al ~/.ssh +``` +default adalah +* id_dsa.pub +* id_ecdsa.pub +* id_ed25519.pub +* id_rsa.pub +Jika tidak ditemukan coba cek dengan +``` +$ ssh -vT git@github.com +``` +====Buat Baru==== +* [[Setup SSH Keys on a Linux / Unix System|https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/]] + +Jika tidak ditemukan maka [[buat baru|https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent]] +``` +$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C "your_email@example.com" + +``` +contoh +``` +$ ssh-keygen -t rsa -b 4096 -C "chetabahana@gmail.com" +Generating public/private rsa key pair. +Enter file in which to save the key (/home/chetabahana/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/chetabahana/.ssh/id_rsa. +Your public key has been saved in /home/chetabahana/.ssh/id_rsa.pub. +The key fingerprint is: +SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx chetabahana@gmail.com +The key's randomart image is: ++---[RSA 4096]----+ +| ..=o.o ..o | +''' + +$ ls -al ~/.ssh +total 104 +drwx------ 2 chetabahana docker 4096 Mar 30 15:04 . +drwxr-xr-x 8 chetabahana docker 4096 Mar 30 05:37 .. +-rw------- 1 chetabahana docker 3326 Mar 30 15:04 id_rsa +-rw-r--r-- 1 chetabahana docker 747 Mar 30 15:04 id_rsa.pub + +$ clip < ~/.ssh/id_rsa.pub +``` + +Jika ingin ubah passphrase +``` + ssh-keygen -p +``` + +===Tes SSH=== +Copy dan [[masukkan id_rsa.pub ke GitHub|https://github.com/settings/ssh/new]] lalu tes sbb + +``` +$ ssh -T git@github.com +Enter passphrase for key '/home/chetabahana/.ssh/id_rsa': xxxxxxxxx +Hi chetabahana! You've successfully authenticated, ...... + +``` + +====SSH Agent==== +Anda dapat mengamankan kunci SSH dan mengkonfigurasi SSH Agent otentikasi sehingga Anda tidak perlu memasukkan kembali passphrase Anda setiap kali menggunakan kunci SSH. + +* Jika Anda pakai [[GitHub Desktop|https://desktop.github.com/]] tidak perlu langkah ini, agent akan start otomatis. +* Jika pakai terminal lain ikuti cara [[Auto-launching ssh-agent|https://help.github.com/en/articles/working-with-ssh-key-passphrases#auto-launching-ssh-agent-on-git-for-windows]]. +``` +$ eval $(ssh-agent -s) +Agent pid 5054 + +$ ssh-add ~/.ssh/id_rsa +Enter passphrase for /home/chetabahana/.ssh/id_rsa: xxxxxxxxx +Identity added: /home/chetabahana/.ssh/id_rsa (/home/chetabahana/.ssh/id_rsa) + +$ ssh-add -l +SHA256:xefGz0.../wmtCvyIVLdqNtJOGX..... /home/chetabahana/.ssh/id_rsa (RSA) + +$ ssh -T git@github.com +Hi chetabahana! You've successfully authenticated, + +``` + +====Expect==== +* [[interactive login|https://stackoverflow.com/a/55779022/4058484]] +* [[ssh-add automatically|https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-a-password-prompt]] +~/.ssh/agent +``` +#!/usr/bin/expect -f +spawn ssh-add /home/chetabahana/.ssh/id_rsa +expect "Enter passphrase for /home/chetabahana/.ssh/id_rsa:" +send "[passphrase]\n"; +expect "Identity added: /home/chetabahana/.ssh/id_rsa (/home/chetabahana/.ssh/id_rsa)" +interact +``` + +instal expect +``` +$ sudo apt-get --assume-yes install expect + +$ expect ~/.ssh/agent +Agent pid 5516 +spawn ssh-add /home/chetabahana/.ssh/id_rsa +Enter passphrase for /home/chetabahana/.ssh/id_rsa: +Identity added: /home/chetabahana/.ssh/id_rsa (/home/chetabahana/.ssh/id_rsa) + +``` +====Issue==== +Jika masih belum bisa koneksi coba langkah berikut + +* Buka Control Panel dari menu Start +* Pilih Akun Pengguna +* Pilih "Kelola kredensial Anda" di menu sebelah kiri +* Hapus kredensial yang terkait dengan Git atau GitHub +* Kemudian ulangi dari awal lagi.. + +==Cloud Builder== +* Jika Anda pakai [[Build configuration overview|https://cloud.google.com/cloud-build/docs/build-config]]. +===SSH Remote=== + +cloudbuild.yaml +``` +- name: "gcr.io/cloud-builders/gcloud" + args: ["compute", "ssh", "${_USER_NAME}@${_INSTANCE_NAME}", "--zone", "${_ZONE}", + "--command", "pwd"] + +- name: 'gcr.io/cloud-builders/gsutil' + args: ["cp", "-rPv", "/builder/home/.ssh", "gs://${_BUCKET_NAME}/builder/"] + +substitutions: + _ZONE: us-central1-c + _USER_NAME: chetabahana # default value + _BUCKET_NAME: appspot.chetabahana.com + _INSTANCE_NAME: backend # default value + _DOCKER_DIRECTORY: /home/chetabahana/.docker # default value +``` + +====Response==== + +``` +Starting Step #1 +Step #1: Already have image (with digest): gcr.io/cloud-builders/gcloud +Step #1: WARNING: The public SSH key file for gcloud does not exist. +Step #1: WARNING: The private SSH key file for gcloud does not exist. +Step #1: WARNING: You do not have an SSH key for gcloud. +Step #1: WARNING: SSH keygen will be executed to generate a key. +Step #1: This tool needs to create the directory [/builder/home/.ssh] before +Step #1: being able to generate SSH keys. +Step #1: +Step #1: Do you want to continue (Y/n)? +Step #1: Generating public/private rsa key pair. +Step #1: Your identification has been saved in /builder/home/.ssh/google_compute_engine. +Step #1: Your public key has been saved in /builder/home/.ssh/google_compute_engine.pub. +Step #1: The key fingerprint is: +Step #1: SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX root@XXXXXXXXXX +Step #1: The key's randomart image is: +Step #1: +---[RSA 2048]----+ +Step #1: | .+X .++| +Step #1: | .o.oo=+| +Step #1: | o o .=E| +Step #1: | . . = +.+| +Step #1: | x S + .o =.| +Step #1: | * + . .. + =| +Step #1: | o O = . o.| +Step #1: | X B | +Step #1: | .x B . | +Step #1: +----[SHA256]-----+ +Step #1: Updating project ssh metadata... +Step #1: ............................................................................... +..............Updated [https://www.googleapis.com/compute/v1/projects/chetabahana]. +Step #1: .done. +Step #1: Waiting for SSH key to propagate. +Step #1: Warning: Permanently added 'compute.XXXX' (ECDSA) to the list of known hosts. +Step #1: /home/chetabahana +Finished Step #1 +Starting Step #2 +Step #2: Already have image (with digest): gcr.io/cloud-builders/gsutil +Step #2: Copying file:///builder/home/.ssh/google_compute_known_hosts \ + [Content-Type=application/octet-stream]... +Step #2: / [0 files][ 0.0 B/ 222.0 B] + / [1 files][ 222.0 B/ 222.0 B] + Created: gs://appspot.chetabahana.com/builder/.ssh/ + google_compute_known_hosts#1555082519040128 +Step #2: Copying file:///builder/home/.ssh/google_compute_engine \ + [Content-Type=application/octet-stream]... +Step #2: / [1 files][ 222.0 B/ 1.9 KiB] + / [2 files][ 1.9 KiB/ 1.9 KiB] + Created: gs://appspot.chetabahana.com/builder/.ssh/ + google_compute_engine#1555082519405651 +Step #2: Copying file:///builder/.ssh/google_compute_engine.pub + [Content-Type=application/octet-stream]... +Step #2: - [2 files][ 1.9 KiB/ 2.2 KiB] + - [3 files][ 2.2 KiB/ 2.2 KiB] + Created: gs://appspot.chetabahana.com/builder/.ssh/ + google_compute_engine.pub#1555082519727233 +Step #2: Operation completed over 3 objects/2.2 KiB. +Finished Step #2 +PUSH +DONE +``` + +====Result==== +``` +$ gsutil ls gs://appspot.chetabahana.com/builder/.ssh/ +gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine +gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine.pub +gs://appspot.chetabahana.com/builder/.ssh/google_compute_known_hosts + +$ gsutil ls -alR gs://appspot.chetabahana.com/builder/.ssh/ +gs://appspot.chetabahana.com/builder/.ssh/: +1675 2019-04-12T15:21:59Z gs://appspot.chetabahana.com/builder/.ssh/ +google_compute_engine#1555082519405651 metageneration=1 +399 2019-04-12T15:21:59Z gs://appspot.chetabahana.com/builder/.ssh/ +google_compute_engine.pub#1555082519727233 metageneration=1 +222 2019-04-12T15:21:59Z gs://appspot.chetabahana.com/builder/.ssh/ +google_compute_known_hosts#1555082519040128 metageneration=1 +TOTAL: 3 objects, 2296 bytes (2.24 KiB) +``` + +===SSH Reverse=== +cloudbuild.yaml +``` +steps: +- name: "gcr.io/cloud-builders/gsutil" + args: ["cp", "-rv", "gs://${_BUCKET_NAME}/builder/.ssh", "/builder/home/"] + +- name: "gcr.io/cloud-builders/gcloud" + args: ["compute", "ssh", "${_USER_NAME}@${_INSTANCE_NAME}", "--zone", "${_ZONE}", + "--command", "pwd"] + +substitutions: + _ZONE: us-central1-c + _USER_NAME: chetabahana # default value + _BUCKET_NAME: appspot.chetabahana.com + _INSTANCE_NAME: backend # default value + _DOCKER_DIRECTORY: /home/chetabahana/.docker # default value + +timeout: "1800s" +``` + +====Response==== + +``` +Starting Step #0 +Step #0: Already have image (with digest): gcr.io/cloud-builders/gsutil +Step #0: Copying gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine... +Step #0: / [0 files][ 0.0 B/ 1.6 KiB] +/ [1 files][ 1.6 KiB/ 1.6 KiB] +Created: file:///builder/home/.ssh/google_compute_engine +Step #0: Copying gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine.pub +Step #0: / [1 files][ 1.6 KiB/ 2.0 KiB] +/ [2 files][ 2.0 KiB/ 2.0 KiB] +Created: file:///builder/home/.ssh/google_compute_engine.pub +Step #0: Copying gs://appspot.chetabahana.com/builder/.ssh/google_compute_known_hosts +Step #0: / [2 files][ 2.0 KiB/ 2.2 KiB] +- +- [3 files][ 2.2 KiB/ 2.2 KiB] +Created: file:///builder/home/.ssh/google_compute_known_hosts +Step #0: +Step #0: Operation completed over 3 objects/2.2 KiB. +Finished Step #0 +Starting Step #1 +Step #1: Already have image (with digest): gcr.io/cloud-builders/gcloud +Step #1: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +Step #1: @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ +Step #1: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +Step #1: Permissions 0644 for '/builder/home/.ssh/google_compute_engine' are too open. +Step #1: It is required that your private key files are NOT accessible by others. +Step #1: This private key will be ignored. +Step #1: Load key "/builder/home/.ssh/google_compute_engine": bad permissions +Step #1: Permission denied (publickey). +Step #1: ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255]. +Finished Step #1 +ERROR +ERROR: build step 1 "gcr.io/cloud-builders/gcloud" failed: exit status 255 + +``` + +====Atribut==== +* [[cp - Copy files and objects|https://cloud.google.com/storage/docs/gsutil/commands/cp]] + +Jika Anda menemui masalah di atas maka kita harus merubah type isi file ssh namun bukan di gcs tapi di lokasi lain dan di copy dengan bendera -P. +``` +$ gsutil cp --help + +-P Menyebabkan atribut POSIX yang akan dipertahankan ketika objek berada +                  disalin. Dengan fitur ini diaktifkan, gsutil cp akan menyalin bidang +                  disediakan oleh stat. Ini adalah ID pengguna pemilik, grup +                  ID grup pemilik, mode (izin) file, dan +                  waktu akses / modifikasi file. Untuk unduhan, ini +                  atribut hanya akan ditetapkan jika objek sumber diunggah +                  dengan bendera ini diaktifkan. + +                  Pada Windows, flag ini hanya akan mengatur dan mengembalikan waktu + akses dan modifikasi. Ini karena Windows tidak memiliki +                  Gagasan POSIX uid / gid / mode. + +-R, -r Opsi -R dan -r identik. + Penyebab direktori, +                  bucket, dan subdirektori bucket untuk disalin secara rekursif. +                  Jika Anda lalai untuk menggunakan opsi ini untuk mengunggah, gsutil + akan melakukannya salin semua file yang ditemukannya dan lewati + direktori mana pun. Demikian pula, +                  lalai menentukan opsi untuk unduhan akan menyebabkan +                  gsutil untuk menyalin objek apa pun di direktori bucket saat ini +                  tingkatkan, dan lewati setiap subdirektori. +``` +* [[unprotected private key file|https://stackoverflow.com/questions/25869207/unprotected-private-key-file]]. + +``` +$ mkdir dummy +$ export BOTO_CONFIG=/dev/null +$ export BUCKET_NAME=appspot.chetabahana.com +$ gsutil cp -rv gs://${BUCKET_NAME}/builder/.ssh dummy +$ chmod 400 dummy/.ssh/* +$ gsutil cp -rPv dummy/.ssh gs://${BUCKET_NAME}/builder +Copying file://dummy/.ssh/google_compute_known_hosts [Content-Type=application/octet-stream]... +Created: gs://appspot.chetabahana.com/builder/.ssh/google_compute_known_hosts#1557034548447582 +Copying file://dummy/.ssh/google_compute_engine.ppk [Content-Type=application/octet-stream]... +Created: gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine.ppk#1557034548618063 +Copying file://dummy/.ssh/google_compute_engine [Content-Type=application/octet-stream]... +Created: gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine#1557034548912606 +Copying file://dummy/.ssh/google_compute_engine.pub [Content-Type=application/octet-stream]... +Created: gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine.pub#1557034549362622 + +Operation completed over 4 objects/3.7 KiB. +$ rm -rf dummy + +``` + +====Result==== + +``` +Starting Step #0 +Step #0: Already have image (with digest): gcr.io/cloud-builders/gsutil +Step #0: Copying gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine... +Step #0: / [0 files][ 0.0 B/ 1.6 KiB] + / [1 files][ 1.6 KiB/ 1.6 KiB] + Created: file:///builder/home/.ssh/google_compute_engine +Step #0: Copying gs://appspot.chetabahana.com/builder/.ssh/google_compute_engine.pub +Step #0: / [1 files][ 1.6 KiB/ 2.0 KiB] + / [2 files][ 2.0 KiB/ 2.0 KiB] + Created: file:///builder/home/.ssh/google_compute_engine.pub +Step #0: Copying gs://appspot.chetabahana.com/builder/.ssh/google_compute_known_hosts +Step #0: / [2 files][ 2.0 KiB/ 2.2 KiB] + / [3 files][ 2.2 KiB/ 2.2 KiB] + Created: file:///builder/home/.ssh/google_compute_known_hosts +Step #0: Operation completed over 3 objects/2.2 KiB. +Finished Step #0 +Starting Step #1 +Step #1: Already have image (with digest): gcr.io/cloud-builders/gcloud +Step #1: /home/chetabahana +Finished Step #1 +PUSH +DONE + +``` + + +==Referensi== +* https://console.cloud.google.com/compute/metadata/sshKeys +* https://cloud.google.com/compute/docs/instances/connecting-to-instance +* https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys + diff --git a/Setel-Akun.mediawiki b/Setel-Akun.mediawiki new file mode 100644 index 000000000000..f6f3b1228afe --- /dev/null +++ b/Setel-Akun.mediawiki @@ -0,0 +1,3 @@ +==''Referensi''== +* [[ReCaptcha|https://docs.getsaleor.com/en/latest/guides/recaptcha.html]] +* [[Facebook and Gmail login feature|https://github.com/mirumee/saleor/issues/2066]] diff --git a/Setel-Charts.mediawiki b/Setel-Charts.mediawiki new file mode 100644 index 000000000000..27b84d1d9086 --- /dev/null +++ b/Setel-Charts.mediawiki @@ -0,0 +1,13 @@ +Sesi ini kita akan kupas tentang cara mempersiapkan [[Apa Itu HELM Charts|Instalasi Saleor - HELM Charts]] +__TOC__ + +==Integrasi== +Dengan mendaftar layanan spt ''[[Codefresh|https://g.codefresh.io/signup?ref=ByhLQyoQ4]]'' kita bisa otomatisasi robot (Built»Test»Deploy) dalam membuat aplikasi ''[[Docker|https://www.docker.com/]]'' dan menjalankannya di ''[[Google Cloud|https://cloud.google.com/]]''. + +Untuk membuat akun Anda bisa masuk dengan akun Google Anda di ataupun akun project Anda di ''[[GitHub|https://github.com/]]'', ''[[GitLab|https://gitlab.com/]]'', ''[[BitBucket|https://bitbucket.org/]]'', ''[[Stash|https://www.atlassian.com/git]]'' dan ''[[Azure|https://azure.microsoft.com]]''. Karena kita menyiapkan aplikasi kita di Google maka saya anjurkan untuk menggunakan Akun Google Anda yang Anda gunakan di ''[[Google Registry (GCR)|https://cloud.google.com/container-registry/]]''. + +Setelah Anda mendapatkan ''[[Akun Codefresh|https://codefresh.io/docs/docs/getting-started/create-a-codefresh-account/]]'' maka langkah pertama adalah ''[[integrasikan|https://g.codefresh.io/https://g.codefresh.io/account-admin/account-conf/integration]]'' semua akun di atas via ''[[Token Codefresh|https://g.codefresh.io/account-admin/account-conf/tokens]]'' agar terkoneksi dengan ''[[Google Registry|https://g.codefresh.io/account-admin/account-conf/integration/registry]]'' dan ''[[Kubernetes Cluster|https://g.codefresh.io/account-admin/account-conf/integration/kubernetes]]''. Hal yang sama bisa kita lakukan juga untuk ''[[Akun HELM|https://g.codefresh.io/account-admin/account-conf/integration/helm]]'', ''[[Akun Slack|https://g.codefresh.io/account-admin/account-conf/integration/slack]]'', dan ''[[Akun Cloud Storage|https://g.codefresh.io/account-admin/account-conf/integration/google]]''. + +==Referensi== +* https://github.com/stephenmoloney/saleor-helm/tree/master/deployment/helm + diff --git a/Setel-Database.mediawiki b/Setel-Database.mediawiki new file mode 100644 index 000000000000..a5b2d4330561 --- /dev/null +++ b/Setel-Database.mediawiki @@ -0,0 +1,246 @@ + +__TOC__ +==Uji Koneksi== +Lihat panduan ''[[set environment variables|https://docs.getsaleor.com/en/latest/gettingstarted/configuration.html]]''.
+ +Untuk tes koneksi SQL di saleor amannya kita tidak setel '''DATABASE_URL''' spt dijelaskan di sbb: +``` +Note (5. Create a PostgreSQL user) +You need to create the user to use within your project. +Username and password are extracted from the DATABASE_URL environmental variable. +If absent they both default to saleor. + +Note (6. Create a PostgreSQL database) +Database name is extracted from the DATABASE_URL environment variable. +If absent it defaults to saleor. +``` +===Console=== +Buat user ''saleor'' dengan password ''saleor'' di ''[[PENGGUNA|https://console.cloud.google.com/sql/instances/cloud-sql-postgres-instance/users]]'' dan database ''saleor'' di ''[[BASIS DATA|https://console.cloud.google.com/sql/instances/cloud-sql-postgres-instance/databases]]'' + +===CloudShell=== +https://console.cloud.google.com/cloudshell/environment/view
+Matikan dahulu SSL dengan cara ''Izinkan koneksi yang tidak aman'' di ''[[KONEKSI|https://console.cloud.google.com/sql/instances/cloud-sql-postgres-instance/connections]]'' +```bash +gcloud sql connect cloud-sql-postgres-instance --user=saleor +``` +Output +```bash +Whitelisting your IP for incoming connection for 5 minutes...done. +Connecting to database with SQL user [saleor].Password for user saleor: +``` +Masukan password ''saleor'' tekan ''Enter''. Outputnya spt berikut: +```bash +psql (9.6.10) +SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off) +Type "help" for help. +saleor=> +``` +Tekan ''Ctrl+C'' untuk keluar..
+ +==Setel IP== +===Public=== +===Private=== +Lihat ''[[Cloud SQL - Private Connections|https://gweb-cloudblog-publish.appspot.com/products/databases/cloud-sql-now-supports-private-connections-and-app-engine-second-generation-runtimes/amp/]]'' + +==Setel Proxy== +Aktifkan SSL dengan cara ''Hanya izinkan koneksi yang aman'' di ''[[KONEKSI|https://console.cloud.google.com/sql/instances/cloud-sql-postgres-instance/connections]]'' + +===Tes Proxy=== +[[|https://codelabs.developers.google.com/codelabs/cloud-postgresql-gke-memegen/#5]] +https://codelabs.developers.google.com/codelabs/cloud-postgresql-gke-memegen/#5 + +```bash +gcloud iam service-accounts create proxy-user --display-name "proxy-user" +gcloud iam service-accounts list + +gcloud projects add-iam-policy-binding marketstore \ +--member serviceAccount:proxy-user@marketstore.iam.gserviceaccount.com \ +--role roles/cloudsql.client + +gcloud iam service-accounts keys create key.json \ +--iam-account proxy-user@marketstore.iam.gserviceaccount.com + +``` +Directory +```bash +~$ ls +cloud_sql_proxy key.json Pipfile Pipfile.lock Tutorial-Buka-Toko +``` + +Run Proxy +```bash +export CONNECTION_NAME=marketstore:asia-southeast1:cloud-sql-postgres-instance +export INSTANCE_CONNECTION_NAME="$CONNECTION_NAME=tcp:5432" +./cloud_sql_proxy -instances=$INSTANCE_CONNECTION_NAME -credential_file=key.json & +``` +Output +```bash +2019/02/09 09:59:47 Rlimits for file descriptors set to {&{8500 1048576}} +2019/02/09 09:59:47 using credential file for authentication; email=proxy-user@marketstore.iam.gserviceaccount.com +2019/02/09 09:59:47 Listening on 127.0.0.1:5432 for marketstore:asia-southeast1:cloud-sql-postgres-instance +2019/02/09 09:59:47 Ready for new connections +``` +Open Proxy +Buka ''CloudShell'' baru..
+Proxy dibuka menggunakan '''tcp:5432'''
+Jadi untuk tes kita gunakan ''[[TCP Socket|https://cloud.google.com/sql/docs/postgres/connect-admin-proxy]]'' (bukan Unix Socket) sbb: +```bash +psql "host=127.0.0.1 sslmode=disable dbname=saleor user=saleor" +``` +masukkan password: ''saleor''
. Outputnya spt berikut: +```bash +psql (9.6.10) +Type "help" for help. + +saleor=> +``` +Masukkan ''/q'' dan tekan ''Enter'' untuk keluar.. + +Di ''CloudShell'' sebelumnya akan didapat output sbb: +```bash +2019/02/09 10:08:20 New connection for "marketstore:asia-southeast1:cloud-sql-postgres-instance" +2019/02/09 10:08:21 Client closed local connection on 127.0.0.1:5432 +2019/02/09 09:59:47 Ready for new connections +``` +Stop Proxy +```bash +killall cloud_sql_proxy +``` + +===Deploy Proxy=== + +Follow a guide to setup "generic" ''[[Kubernetes cluster|https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#step_4_create_a_container_cluster]]'' and remember to '''''[[set environment variables|https://docs.getsaleor.com/en/latest/gettingstarted/configuration.html]]''''' when creating your ''[[workload|https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/]]'' based on the uploaded image. +```bash +kubectl create secret generic cloudsql-instance-credentials \ +--from-file=credentials.json=key.json + +kubectl create secret generic cloudsql-db-credentials \ + --from-literal=secretKey=[SECRET_KEY] \ + --from-literal=allowedHosts=shop.chetabahana.com \ + --from-literal=currency=Rp +``` +File Deployment yaml +Nama: saleor_deployment.yaml
+Sumber: [[gmemegen_deployment.yaml|https://github.com/GoogleCloudPlatform/gmemegen/blob/master/gmemegen_deployment.yaml]]
+Ikuti [[Pedoman Kubernetes|https://kubernetes.io/docs/tasks/access-application-cluster/connecting-frontend-backend/#creating-the-backend-using-a-deployment]]. Hasil modifikasi: +```bash +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: saleor + labels: + app: saleor +spec: + selector: + matchLabels: + app: saleor + tier: backend + track: stable + template: + metadata: + labels: + app: saleor + tier: backend + track: stable + spec: + # This section describes the containers that make up the deployment + containers: + - name: saleor + image: gcr.io/marketstore/saleor + ports: + - name: http + containerPort: 8000 + # Set env variables used for Postgres Connection + env: + - name: SECRET_KEY + valueFrom: + secretKeyRef: + name: cloudsql-db-credentials + key: secretKey + - name: ALLOWED_HOSTS + valueFrom: + secretKeyRef: + name: cloudsql-db-credentials + key: allowedHosts + - name: DEFAULT_CURRENCY + valueFrom: + secretKeyRef: + name: cloudsql-db-credentials + key: currency + # Change here to include your GCP + # project, the region of your Cloud SQL instance and the name + # of your Cloud SQL instance. The format is $PROJECT:$REGION:$INSTANCE + - name: cloudsql-proxy + image: gcr.io/cloudsql-docker/gce-proxy:1.11 + command: ["/cloud_sql_proxy", + "-instances=marketstore:asia-southeast1:cloud-sql-postgres-instance=tcp:5432", + "-credential_file=/secrets/cloudsql/credentials.json"] + volumeMounts: + - name: my-secrets-volume + mountPath: /secrets/cloudsql + readOnly: true + volumes: + - name: my-secrets-volume + secret: + secretName: cloudsql-instance-credentials +``` +Backend yaml +Nama: saleor_backend_tier.yaml
+Ikuti [[Pedoman Backend Kubernetes|https://kubernetes.io/docs/tasks/access-application-cluster/connecting-frontend-backend/#creating-the-backend-service-object]]. Hasil modifikasi: +```bash +kind: Service +apiVersion: v1 +metadata: + name: web-map-backend-tier-saleor +spec: + selector: + app: saleor + tier: backend + ports: + - protocol: TCP + port: 8000 + targetPort: http +``` + +Deploy +```bash +kubectl delete deployment saleor +kubectl get deployments --all-namespaces + +kubectl delete service saleor +kubectl get service + +kubectl create -f saleor_deployment.yaml +kubectl create -f saleor_backend_tier.yaml +kubectl get pods +kubectl expose deployment saleor --type=LoadBalancer --port 80 --target-port 8000 +``` + +==Pembiayaan== +Untuk melihat harga masing layanan kita bisa lihat di ''[[Price List|https://cloud.google.com/pricing/list]]''. Pada ujung sesi dari dokumentasi ini kita akan ulas [[secara keseluruhan|https://github.com/MarketLeader/Toko-Chetabahana/wiki/Optimasi-Biaya]]. + +Berikut ini kita bahas masing² komponen biaya yang terkait dengan Database. + +===GCE=== +===Cloud SQL=== +===Kubernetes=== + +==Referensi== +* [[PostgreSQL server configuration|https://www.postgresql.org/docs/9.6/static/runtime-config.html]] +* https://docs.getsaleor.com/en/latest/gettingstarted/configuration.html +* https://codelabs.developers.google.com/codelabs/cloud-postgresql-gke-memegen/#7 +* https://codeburst.io/beginners-guide-to-deploying-a-django-postgresql-project-on-google-cloud-s-flexible-app-engine-e3357b601b91 diff --git a/Setel-Domain.mediawiki b/Setel-Domain.mediawiki new file mode 100644 index 000000000000..fd5c195d40bb --- /dev/null +++ b/Setel-Domain.mediawiki @@ -0,0 +1,25 @@ +__TOC__ + +==Cek Setelan== +* https://viewdns.info/ +* https://dnsspy.io/scan + +Daftarkan aplikasi Anda untuk Google Cloud DNS API di Google Cloud Platform +Google Cloud Platform memungkinkan Anda untuk mengelola aplikasi dan memantau penggunaan API. + +Pilih sebuah project di mana aplikasi Anda akan didaftarkan +Anda dapat menggunakan salah satu project untuk mengelola semua aplikasi, atau Anda dapat membuat project berbeda untuk setiap aplikasi. + +[[|https://cloud.google.com/load-balancing/docs/backend-service?hl=in]] + +* [[Domain Google|https://domains.google.com/]] +* [[Meneruskan domain Google Anda|https://support.google.com/domains/answer/4522141?hl=id#301-302]] +* [[GAE Standard - How Requests are Routed| https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed?hl=in]] +* [[GAE Standard - Securing Custom Domains with SSL|https://cloud.google.com/appengine/docs/standard/python/securing-custom-domains-with-ssl]] +* https://cloud.google.com/dns/zones/?hl=in +* https://cloud.google.com/dns/docs/quickstart +* https://console.cloud.google.com/flows/enableapi?apiid=dns +* https://cloud.google.com/docs/authentication/production?hl=in +* https://www.onepagezen.com/transfer-domain-google-cloud-platform/ +* [[Configuring Domain Names with Static IP Addresses|https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip]] +* [[Configuring HTTPS to a Web Service on Google Kubernetes Engine|https://estl.tech/configuring-https-to-a-web-service-on-google-kubernetes-engine-2d71849520d]] diff --git a/Setel-Email.mediawiki b/Setel-Email.mediawiki new file mode 100644 index 000000000000..045b87d2901b --- /dev/null +++ b/Setel-Email.mediawiki @@ -0,0 +1,3 @@ +https://docs.getsaleor.com/en/latest/customization/emails.html + +https://docs.getsaleor.com/en/latest/guides/email_integration.html \ No newline at end of file diff --git a/Setel-Konfigurasi.mediawiki b/Setel-Konfigurasi.mediawiki new file mode 100644 index 000000000000..cfae9ff38132 --- /dev/null +++ b/Setel-Konfigurasi.mediawiki @@ -0,0 +1 @@ +https://stackoverflow.com/a/55764254/4058484 \ No newline at end of file diff --git a/Setel-Menu-Taxonomy.mediawiki b/Setel-Menu-Taxonomy.mediawiki new file mode 100644 index 000000000000..2414a9d02a57 --- /dev/null +++ b/Setel-Menu-Taxonomy.mediawiki @@ -0,0 +1,3 @@ +https://github.com/mirumee/saleor/issues/1297#issuecomment-496143121 + +https://www.academia.edu/2089185/Penyusunan_Taksonomi_Rekayasa_Perangkat_Lunak_Berdasarkan_Penelusuran_Mesin_Pencari \ No newline at end of file diff --git a/Setel-Mobile.mediawiki b/Setel-Mobile.mediawiki new file mode 100644 index 000000000000..46a1049550b3 --- /dev/null +++ b/Setel-Mobile.mediawiki @@ -0,0 +1,113 @@ +__TOC__ + +==Saleor== +https://github.com/facebook/create-react-app +``` +my-app +├── .gitignore +├── README.md +├── node_modules +├── package.json +├── public +│ ├── favicon.ico +│ ├── index.html +│ └── manifest.json +└── src + ├── App.css + ├── App.js + ├── App.test.js + ├── index.css + ├── index.js + ├── logo.svg + └── serviceWorker.js +``` + +===Update=== +''' +Lihat [[fresh installation of laravel|https://github.com/JeffreyWay/laravel-mix/issues/623#issuecomment-289682729]] +run composer install; +npm install; +npm install cross-env -D (read it from laravel/framework#18446); +npm run dev

Exponentiation Zones (31-36)

+
+ + Tip +
+
+

This section is referring to wiki page-4 of zone section-4 that is inherited from the zone section-zones by prime spin-19 and span-exponentiation with the partitions as below.

+
+

/Tutorial-Buka-Toko

Untitled

gradien

In the standard (Mispar hechrechi) version of gematria, each letter is given a numerical value between 1 and 400, as shown in the following table. In the Mispar gadol variation, the five final letters are given their own values, ranging from 500 to 900.

Δ prime = 114th prime - 19 = (6 x 19)th prime - 19 = 619 - 19 = 600

  Sub  | i  |  β  | f   
+=======+====+=====+=======  ===   ===   ===   ===   ===   ===
+ 1:1:0 | 1  |   1 | 2 {71}   1     1     |     |     |     |
+-------+----+-----+-------  ---   ---    |     |     |     |
+ 1:2:1 | 2  |   2 | 3 {71}         |     |     |     |     |
+-------+----+-----+----            |     |     |     |     |
+*1:2:2 | 3  |   3 | 7 = 1 + 2x3    |     |     |     |     |
+-------+----+-----+----            |     |     |     |     |
+*1:3:3 | 4  |   4 | 10 = 9 + 1     |     |     |     |     |  
+-------+----+-----+----            |     |     |     |     |
+ 1:3:4 | 5  |   5 | 11 = 9 + 2     |     |     |     |     |
+-------+----+-----+----            9     1‘    |    Δ100   |
+*1:3:5 | 6  |   6 | 12 = 9 + 3     |     |     |     |     |
+-------+----+-----+----            |     |     |     |     |
+*1:4:6 | 7  |   7 | 13 = 9 + 4     |     |     |     |     |
+-------+----+-----+----            |     |     |     |     |
+ 1:4:7 | 8  |   8 | 14 = 9 + 5     |     |     |     |     |
+-------+----+-----+----            |     |     |     |     |
+*1:4:8 |{9} |   9 | 15 = 9 + 6     |     |     |     |     |
+-------+----+-----+----            |     |     |     |     |
+*1:4:9 |{10}|  10 | 19 = 9 + 10    |     |     |     |     |
+=======+====+=====+====           ===   ---    1"   ---    |
+ 2:1:0 | 11 |  20 | 20 = 19 + log 10¹    |     |     |     |
+-------+----+-----+----                  |     |     |     |
+ 2:2:1 | 12 |  30 | 26 = 20 + 2x3        |     |     |     |
+-------+----+-----+----                  |     |     |     |
+*2:2:2 | 13 |  40 | 27 = 26 + 1          |     |     |     |
+-------+----+-----+----                  |     |     |     |
+*2:3:3 | 14 |  50 | 28 = 26 + 2          |     |     |     |
+-------+----+-----+----                  |     |     |     |
+ 2:3:4 | 15 |  60 | 29 = 26 + 3          9‘    |   Δ200  Δ600
+-------+----+-----+----                  |     |     |     |
+*2:3:5 | 16 |  70 | 30 = 26 + 4          |     |     |     |
+-------+----+-----+----                  |     |     |     |
+*2:4:6 | 17 |  80 | 31 = 26 + 5          |     |     |     |
+-------+----+-----+----                  |     |     |     |
+ 2:4:7 |{18}|  90 | 32 = 26 + 6          |     |     |     |
+-------+----+-----+----                  |     |     |     |
+*2:4:8 |{19}| 100 | 36 = 26 + 10         |     |     |     |
+=======+====+=====+====                 ===   ---   ---    |
+*2:4:9 | 20 | 200 | 38 = 36 + log 10²          |     |     |
+-------+----+-----+----                        |     |     |
+ 3:1:0 | 21 | 300 | 40 = 36 + 2 x log 10²      |     |     |
+-------+----+-----+----                        |     |     |
+ 3:2:1 | 22 | 400 | 41 = 40 + 1                |     |     |
+-------+----+-----+----                        |     |     |
+*3:2:2 | 23 | 500 | 42 = 40 + 2                |     |     |
+-------+----+-----+----                        |     |     |
+*3:3:3 | 24 | 600 | 43 = 40 + 3                9"  Δ300    |
+-------+----+-----+----                        |     |     |
+ 3:3:4 | 25 | 700 | 44 = 40 + 4                |     |     |
+-------+----+-----+----                        |     |     |
+*3:3:5 | 26 | 800 | 45 = 40 + 5                |     |     |
+-------+----+-----+----                        |     |     |
+*3:4:6 | 27 | 900 | 46 = 40 + 6                |     |     |
+-------+----+-----+----                        |     |     |
+ 3:4:7 |{28}|1000 | 50 = 40 + 10               |     |     |
+=======+====+=====+====                       ===  ====  ----
+*3:4:8 |{29}|2000 | 68 = 50 + 3 x (2x3)      {10³} Δ600  Δ300
+=======+====+=====+====                        Δ         ====
+ 3:4:9 |{30}|3000 |{71}= 68 + log 10³ ---------¤         Δ900   
+

You may see this scheme is build by 3 (three) layers where the next layer will continue the primes object by carrying the tensor of prime 31 and 71 of previous layer. So it will return to the beginning position within 60+40=100 nodes per layer.

recycle

Let's combine them all then we will get 168 which is the total primes out of 1000 numbers. This 168 we will get it also when we combine the 1's and 17's cell of (31+37)+(35+65)=68+100=168.

Relation to the primes

The Ulam spiral or prime spiral is a graphical depiction of the set of prime numbers, devised by mathematician Stanisław Ulam in 1963 and popularized in Martin Gardner's Mathematical Games column in Scientific American a short time later.

Both Ulam and Gardner noted that the existence of such prominent lines is not unexpected, as lines in the spiral correspond to quadratic polynomials, and certain such polynomials, such as Euler's prime-generating polynomial x²-x+41, are believed to produce a high density of prime numbers. Nevertheless, the Ulam spiral is connected with major unsolved problems in number theory such as Landau's problems (Wikipedia).

prime Sacks_spiral

According to the results of Princeton University USA in 1972, the distribution of the prime numbers shows in the Riemann zeta function between the position of its complex zeros and middle axis is identical with the rotation curve of energy distribution.

37 + 12 = 61 - 12 = 49 = 7 x 7 = d(13)

image

In the second opposing member, the position 19 in the second term gives a redundant value of the template 7 of 7 × 7 = 49. The opposite prime position 11 as a prime number is now forced to determine a new axis-symmetrical zero position.

Note that when 77 contains ‘Lucky 7 and 11' as prime factors it is also the product of the middle two numbers of this sequence (11*7 = 77) (Prime Curios!).

MEC30 Localization

tensorflow

When the subclasses of partitions are flatten out into a matrix, you want to take the Jacobian of each of a stack of targets with respect to a stack of sources, where the Jacobians for each target-source pair are independent .

It's possible to build a Hessian matrix for a Newton's method step using the Jacobian method. You would first flatten out its axes into a matrix, and flatten out the gradient into a vector (Tensorflow).

Batch Jacobian

By observing more detail we spread the power of 7.

168 + 329 + 289 - 619 - 30 - 30 - 5 = 786 - 619 - 65 = 102

By parsering π(1000)=168 primes of the 1000 id's across π(π(10000))-1=200 of this syntax then the (Δ1) would be initiated.


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/exponentiation/span17/spin_5.txt b/exponentiation/span17/spin_5.txt new file mode 100644 index 000000000000..185ff0aa7393 --- /dev/null +++ b/exponentiation/span17/spin_5.txt @@ -0,0 +1,33 @@ +1009 3 -1 -3 +1013 2 -1 -3 +1019 2 1 -3 +1021 3 1 -3 +1031 4 1 -3 +1033 5 1 -3 +1039 5 -1 -3 +1049 4 -1 -3 +1051 3 -1 -3 +1061 2 -1 -3 +1063 1 -1 -3 +1069 1 1 -3 +1087 1 -1 -3 +1091 0 -1 -3 +1093 5 -1 -4 +1097 4 -1 -4 +1103 4 1 -4 +1109 4 -1 -4 +1117 3 -1 -4 +1123 3 1 -4 +1129 3 -1 -4 +1151 2 -1 -4 +1153 1 -1 -4 +1163 0 -1 -4 +1171 5 -1 -5 +1181 4 -1 -5 +1187 4 1 -5 +1193 4 -1 -5 +1201 3 -1 -5 +1213 3 1 -5 +1217 4 1 -5 +1223 4 -1 -5 +1229 4 1 -5 diff --git a/exponentiation/span17/spin_6.txt b/exponentiation/span17/spin_6.txt new file mode 100644 index 000000000000..c3605570ccd4 --- /dev/null +++ b/exponentiation/span17/spin_6.txt @@ -0,0 +1,800 @@ +1231 5 1 -5 +1237 5 -1 -5 +1249 5 1 -5 +1259 0 1 -4 +1277 0 -1 -4 +1279 5 -1 -5 +1283 4 -1 -5 +1289 4 1 -5 +1291 5 1 -5 +1297 5 -1 -5 +1301 4 -1 -5 +1303 3 -1 -5 +1307 2 -1 -5 +1319 2 1 -5 +1321 3 1 -5 +1327 3 -1 -5 +1361 2 -1 -5 +1367 2 1 -5 +1373 2 -1 -5 +1381 1 -1 -5 +1399 1 1 -5 +1409 2 1 -5 +1423 3 1 -5 +1427 4 1 -5 +1429 5 1 -5 +1433 0 1 -4 +1439 0 -1 -4 +1447 5 -1 -5 +1451 4 -1 -5 +1453 3 -1 -5 +1459 3 1 -5 +1471 3 -1 -5 +1481 2 -1 -5 +1483 1 -1 -5 +1487 0 -1 -5 +1489 5 -1 -6 +1493 4 -1 -6 +1499 4 1 -6 +1511 4 -1 -6 +1523 4 1 -6 +1531 5 1 -6 +1543 5 -1 -6 +1549 5 1 -6 +1553 0 1 -5 +1559 0 -1 -5 +1567 5 -1 -6 +1571 4 -1 -6 +1579 3 -1 -6 +1583 2 -1 -6 +1597 1 -1 -6 +1601 0 -1 -6 +1607 0 1 -6 +1609 1 1 -6 +1613 2 1 -6 +1619 2 -1 -6 +1621 1 -1 -6 +1627 1 1 -6 +1637 2 1 -6 +1657 3 1 -6 +1663 3 -1 -6 +1667 2 -1 -6 +1669 1 -1 -6 +1693 1 1 -6 +1697 2 1 -6 +1699 3 1 -6 +1709 4 1 -6 +1721 4 -1 -6 +1723 3 -1 -6 +1733 2 -1 -6 +1741 1 -1 -6 +1747 1 1 -6 +1753 1 -1 -6 +1759 1 1 -6 +1777 1 -1 -6 +1783 1 1 -6 +1787 2 1 -6 +1789 3 1 -6 +1801 3 -1 -6 +1811 2 -1 -6 +1823 2 1 -6 +1831 3 1 -6 +1847 4 1 -6 +1861 5 1 -6 +1867 5 -1 -6 +1871 4 -1 -6 +1873 3 -1 -6 +1877 2 -1 -6 +1879 1 -1 -6 +1889 0 -1 -6 +1901 0 1 -6 +1907 0 -1 -6 +1913 0 1 -6 +1931 0 -1 -6 +1933 5 -1 -7 +1949 4 -1 -7 +1951 3 -1 -7 +1973 2 -1 -7 +1979 2 1 -7 +1987 3 1 -7 +1993 3 -1 -7 +1997 2 -1 -7 +1999 1 -1 -7 +2003 0 -1 -7 +2011 5 -1 -8 +2017 5 1 -8 +2027 0 1 -7 +2029 1 1 -7 +2039 2 1 -7 +2053 3 1 -7 +2063 4 1 -7 +2069 4 -1 -7 +2081 4 1 -7 +2083 5 1 -7 +2087 0 1 -6 +2089 1 1 -6 +2099 2 1 -6 +2111 2 -1 -6 +2113 1 -1 -6 +2129 0 -1 -6 +2131 5 -1 -7 +2137 5 1 -7 +2141 0 1 -6 +2143 1 1 -6 +2153 2 1 -6 +2161 3 1 -6 +2179 3 -1 -6 +2203 3 1 -6 +2207 4 1 -6 +2213 4 -1 -6 +2221 3 -1 -6 +2237 2 -1 -6 +2239 1 -1 -6 +2243 0 -1 -6 +2251 5 -1 -7 +2267 4 -1 -7 +2269 3 -1 -7 +2273 2 -1 -7 +2281 1 -1 -7 +2287 1 1 -7 +2293 1 -1 -7 +2297 0 -1 -7 +2309 0 1 -7 +2311 1 1 -7 +2333 2 1 -7 +2339 2 -1 -7 +2341 1 -1 -7 +2347 1 1 -7 +2351 2 1 -7 +2357 2 -1 -7 +2371 1 -1 -7 +2377 1 1 -7 +2381 2 1 -7 +2383 3 1 -7 +2389 3 -1 -7 +2393 2 -1 -7 +2399 2 1 -7 +2411 2 -1 -7 +2417 2 1 -7 +2423 2 -1 -7 +2437 1 -1 -7 +2441 0 -1 -7 +2447 0 1 -7 +2459 0 -1 -7 +2467 5 -1 -8 +2473 5 1 -8 +2477 0 1 -7 +2503 1 1 -7 +2521 1 -1 -7 +2531 0 -1 -7 +2539 5 -1 -8 +2543 4 -1 -8 +2549 4 1 -8 +2551 5 1 -8 +2557 5 -1 -8 +2579 4 -1 -8 +2591 4 1 -8 +2593 5 1 -8 +2609 0 1 -7 +2617 1 1 -7 +2621 2 1 -7 +2633 2 -1 -7 +2647 1 -1 -7 +2657 0 -1 -7 +2659 5 -1 -8 +2663 4 -1 -8 +2671 3 -1 -8 +2677 3 1 -8 +2683 3 -1 -8 +2687 2 -1 -8 +2689 1 -1 -8 +2693 0 -1 -8 +2699 0 1 -8 +2707 1 1 -8 +2711 2 1 -8 +2713 3 1 -8 +2719 3 -1 -8 +2729 2 -1 -8 +2731 1 -1 -8 +2741 0 -1 -8 +2749 5 -1 -9 +2753 4 -1 -9 +2767 3 -1 -9 +2777 2 -1 -9 +2789 2 1 -9 +2791 3 1 -9 +2797 3 -1 -9 +2801 2 -1 -9 +2803 1 -1 -9 +2819 0 -1 -9 +2833 5 -1 -10 +2837 4 -1 -10 +2843 4 1 -10 +2851 5 1 -10 +2857 5 -1 -10 +2861 4 -1 -10 +2879 4 1 -10 +2887 5 1 -10 +2897 0 1 -9 +2903 0 -1 -9 +2909 0 1 -9 +2917 1 1 -9 +2927 2 1 -9 +2939 2 -1 -9 +2953 1 -1 -9 +2957 0 -1 -9 +2963 0 1 -9 +2969 0 -1 -9 +2971 5 -1 -10 +2999 4 -1 -10 +3001 3 -1 -10 +3011 2 -1 -10 +3019 1 -1 -10 +3023 0 -1 -10 +3037 5 -1 -11 +3041 4 -1 -11 +3049 3 -1 -11 +3061 3 1 -11 +3067 3 -1 -11 +3079 3 1 -11 +3083 4 1 -11 +3089 4 -1 -11 +3109 3 -1 -11 +3119 2 -1 -11 +3121 1 -1 -11 +3137 0 -1 -11 +3163 5 -1 -12 +3167 4 -1 -12 +3169 3 -1 -12 +3181 3 1 -12 +3187 3 -1 -12 +3191 2 -1 -12 +3203 2 1 -12 +3209 2 -1 -12 +3217 1 -1 -12 +3221 0 -1 -12 +3229 5 -1 -13 +3251 4 -1 -13 +3253 3 -1 -13 +3257 2 -1 -13 +3259 1 -1 -13 +3271 1 1 -13 +3299 2 1 -13 +3301 3 1 -13 +3307 3 -1 -13 +3313 3 1 -13 +3319 3 -1 -13 +3323 2 -1 -13 +3329 2 1 -13 +3331 3 1 -13 +3343 3 -1 -13 +3347 2 -1 -13 +3359 2 1 -13 +3361 3 1 -13 +3371 4 1 -13 +3373 5 1 -13 +3389 0 1 -12 +3391 1 1 -12 +3407 2 1 -12 +3413 2 -1 -12 +3433 1 -1 -12 +3449 0 -1 -12 +3457 5 -1 -13 +3461 4 -1 -13 +3463 3 -1 -13 +3467 2 -1 -13 +3469 1 -1 -13 +3491 0 -1 -13 +3499 5 -1 -14 +3511 5 1 -14 +3517 5 -1 -14 +3527 4 -1 -14 +3529 3 -1 -14 +3533 2 -1 -14 +3539 2 1 -14 +3541 3 1 -14 +3547 3 -1 -14 +3557 2 -1 -14 +3559 1 -1 -14 +3571 1 1 -14 +3581 2 1 -14 +3583 3 1 -14 +3593 4 1 -14 +3607 5 1 -14 +3613 5 -1 -14 +3617 4 -1 -14 +3623 4 1 -14 +3631 5 1 -14 +3637 5 -1 -14 +3643 5 1 -14 +3659 0 1 -13 +3671 0 -1 -13 +3673 5 -1 -14 +3677 4 -1 -14 +3691 3 -1 -14 +3697 3 1 -14 +3701 4 1 -14 +3709 5 1 -14 +3719 0 1 -13 +3727 1 1 -13 +3733 1 -1 -13 +3739 1 1 -13 +3761 2 1 -13 +3767 2 -1 -13 +3769 1 -1 -13 +3779 0 -1 -13 +3793 5 -1 -14 +3797 4 -1 -14 +3803 4 1 -14 +3821 4 -1 -14 +3823 3 -1 -14 +3833 2 -1 -14 +3847 1 -1 -14 +3851 0 -1 -14 +3853 5 -1 -15 +3863 4 -1 -15 +3877 3 -1 -15 +3881 2 -1 -15 +3889 1 -1 -15 +3907 1 1 -15 +3911 2 1 -15 +3917 2 -1 -15 +3919 1 -1 -15 +3923 0 -1 -15 +3929 0 1 -15 +3931 1 1 -15 +3943 1 -1 -15 +3947 0 -1 -15 +3967 5 -1 -16 +3989 4 -1 -16 +4001 4 1 -16 +4003 5 1 -16 +4007 0 1 -15 +4013 0 -1 -15 +4019 0 1 -15 +4021 1 1 -15 +4027 1 -1 -15 +4049 0 -1 -15 +4051 5 -1 -16 +4057 5 1 -16 +4073 0 1 -15 +4079 0 -1 -15 +4091 0 1 -15 +4093 1 1 -15 +4099 1 -1 -15 +4111 1 1 -15 +4127 2 1 -15 +4129 3 1 -15 +4133 4 1 -15 +4139 4 -1 -15 +4153 3 -1 -15 +4157 2 -1 -15 +4159 1 -1 -15 +4177 1 1 -15 +4201 1 -1 -15 +4211 0 -1 -15 +4217 0 1 -15 +4219 1 1 -15 +4229 2 1 -15 +4231 3 1 -15 +4241 4 1 -15 +4243 5 1 -15 +4253 0 1 -14 +4259 0 -1 -14 +4261 5 -1 -15 +4271 4 -1 -15 +4273 3 -1 -15 +4283 2 -1 -15 +4289 2 1 -15 +4297 3 1 -15 +4327 3 -1 -15 +4337 2 -1 -15 +4339 1 -1 -15 +4349 0 -1 -15 +4357 5 -1 -16 +4363 5 1 -16 +4373 0 1 -15 +4391 0 -1 -15 +4397 0 1 -15 +4409 0 -1 -15 +4421 0 1 -15 +4423 1 1 -15 +4441 1 -1 -15 +4447 1 1 -15 +4451 2 1 -15 +4457 2 -1 -15 +4463 2 1 -15 +4481 2 -1 -15 +4483 1 -1 -15 +4493 0 -1 -15 +4507 5 -1 -16 +4513 5 1 -16 +4517 0 1 -15 +4519 1 1 -15 +4523 2 1 -15 +4547 2 -1 -15 +4549 1 -1 -15 +4561 1 1 -15 +4567 1 -1 -15 +4583 0 -1 -15 +4591 5 -1 -16 +4597 5 1 -16 +4603 5 -1 -16 +4621 5 1 -16 +4637 0 1 -15 +4639 1 1 -15 +4643 2 1 -15 +4649 2 -1 -15 +4651 1 -1 -15 +4657 1 1 -15 +4663 1 -1 -15 +4673 0 -1 -15 +4679 0 1 -15 +4691 0 -1 -15 +4703 0 1 -15 +4721 0 -1 -15 +4723 5 -1 -16 +4729 5 1 -16 +4733 0 1 -15 +4751 0 -1 -15 +4759 5 -1 -16 +4783 5 1 -16 +4787 0 1 -15 +4789 1 1 -15 +4793 2 1 -15 +4799 2 -1 -15 +4801 1 -1 -15 +4813 1 1 -15 +4817 2 1 -15 +4831 3 1 -15 +4861 3 -1 -15 +4871 2 -1 -15 +4877 2 1 -15 +4889 2 -1 -15 +4903 1 -1 -15 +4909 1 1 -15 +4919 2 1 -15 +4931 2 -1 -15 +4933 1 -1 -15 +4937 0 -1 -15 +4943 0 1 -15 +4951 1 1 -15 +4957 1 -1 -15 +4967 0 -1 -15 +4969 5 -1 -16 +4973 4 -1 -16 +4987 3 -1 -16 +4993 3 1 -16 +4999 3 -1 -16 +5003 2 -1 -16 +5009 2 1 -16 +5011 3 1 -16 +5021 4 1 -16 +5023 5 1 -16 +5039 0 1 -15 +5051 0 -1 -15 +5059 5 -1 -16 +5077 5 1 -16 +5081 0 1 -15 +5087 0 -1 -15 +5099 0 1 -15 +5101 1 1 -15 +5107 1 -1 -15 +5113 1 1 -15 +5119 1 -1 -15 +5147 0 -1 -15 +5153 0 1 -15 +5167 1 1 -15 +5171 2 1 -15 +5179 3 1 -15 +5189 4 1 -15 +5197 5 1 -15 +5209 5 -1 -15 +5227 5 1 -15 +5231 0 1 -14 +5233 1 1 -14 +5237 2 1 -14 +5261 2 -1 -14 +5273 2 1 -14 +5279 2 -1 -14 +5281 1 -1 -14 +5297 0 -1 -14 +5303 0 1 -14 +5309 0 -1 -14 +5323 5 -1 -15 +5333 4 -1 -15 +5347 3 -1 -15 +5351 2 -1 -15 +5381 2 1 -15 +5387 2 -1 -15 +5393 2 1 -15 +5399 2 -1 -15 +5407 1 -1 -15 +5413 1 1 -15 +5417 2 1 -15 +5419 3 1 -15 +5431 3 -1 -15 +5437 3 1 -15 +5441 4 1 -15 +5443 5 1 -15 +5449 5 -1 -15 +5471 4 -1 -15 +5477 4 1 -15 +5479 5 1 -15 +5483 0 1 -14 +5501 0 -1 -14 +5503 5 -1 -15 +5507 4 -1 -15 +5519 4 1 -15 +5521 5 1 -15 +5527 5 -1 -15 +5531 4 -1 -15 +5557 3 -1 -15 +5563 3 1 -15 +5569 3 -1 -15 +5573 2 -1 -15 +5581 1 -1 -15 +5591 0 -1 -15 +5623 5 -1 -16 +5639 4 -1 -16 +5641 3 -1 -16 +5647 3 1 -16 +5651 4 1 -16 +5653 5 1 -16 +5657 0 1 -15 +5659 1 1 -15 +5669 2 1 -15 +5683 3 1 -15 +5689 3 -1 -15 +5693 2 -1 -15 +5701 1 -1 -15 +5711 0 -1 -15 +5717 0 1 -15 +5737 1 1 -15 +5741 2 1 -15 +5743 3 1 -15 +5749 3 -1 -15 +5779 3 1 -15 +5783 4 1 -15 +5791 5 1 -15 +5801 0 1 -14 +5807 0 -1 -14 +5813 0 1 -14 +5821 1 1 -14 +5827 1 -1 -14 +5839 1 1 -14 +5843 2 1 -14 +5849 2 -1 -14 +5851 1 -1 -14 +5857 1 1 -14 +5861 2 1 -14 +5867 2 -1 -14 +5869 1 -1 -14 +5879 0 -1 -14 +5881 5 -1 -15 +5897 4 -1 -15 +5903 4 1 -15 +5923 5 1 -15 +5927 0 1 -14 +5939 0 -1 -14 +5953 5 -1 -15 +5981 4 -1 -15 +5987 4 1 -15 +6007 5 1 -15 +6011 0 1 -14 +6029 0 -1 -14 +6037 5 -1 -15 +6043 5 1 -15 +6047 0 1 -14 +6053 0 -1 -14 +6067 5 -1 -15 +6073 5 1 -15 +6079 5 -1 -15 +6089 4 -1 -15 +6091 3 -1 -15 +6101 2 -1 -15 +6113 2 1 -15 +6121 3 1 -15 +6131 4 1 -15 +6133 5 1 -15 +6143 0 1 -14 +6151 1 1 -14 +6163 1 -1 -14 +6173 0 -1 -14 +6197 0 1 -14 +6199 1 1 -14 +6203 2 1 -14 +6211 3 1 -14 +6217 3 -1 -14 +6221 2 -1 -14 +6229 1 -1 -14 +6247 1 1 -14 +6257 2 1 -14 +6263 2 -1 -14 +6269 2 1 -14 +6271 3 1 -14 +6277 3 -1 -14 +6287 2 -1 -14 +6299 2 1 -14 +6301 3 1 -14 +6311 4 1 -14 +6317 4 -1 -14 +6323 4 1 -14 +6329 4 -1 -14 +6337 3 -1 -14 +6343 3 1 -14 +6353 4 1 -14 +6359 4 -1 -14 +6361 3 -1 -14 +6367 3 1 -14 +6373 3 -1 -14 +6379 3 1 -14 +6389 4 1 -14 +6397 5 1 -14 +6421 5 -1 -14 +6427 5 1 -14 +6449 0 1 -13 +6451 1 1 -13 +6469 1 -1 -13 +6473 0 -1 -13 +6481 5 -1 -14 +6491 4 -1 -14 +6521 4 1 -14 +6529 5 1 -14 +6547 5 -1 -14 +6551 4 -1 -14 +6553 3 -1 -14 +6563 2 -1 -14 +6569 2 1 -14 +6571 3 1 -14 +6577 3 -1 -14 +6581 2 -1 -14 +6599 2 1 -14 +6607 3 1 -14 +6619 3 -1 -14 +6637 3 1 -14 +6653 4 1 -14 +6659 4 -1 -14 +6661 3 -1 -14 +6673 3 1 -14 +6679 3 -1 -14 +6689 2 -1 -14 +6691 1 -1 -14 +6701 0 -1 -14 +6703 5 -1 -15 +6709 5 1 -15 +6719 0 1 -14 +6733 1 1 -14 +6737 2 1 -14 +6761 2 -1 -14 +6763 1 -1 -14 +6779 0 -1 -14 +6781 5 -1 -15 +6791 4 -1 -15 +6793 3 -1 -15 +6803 2 -1 -15 +6823 1 -1 -15 +6827 0 -1 -15 +6829 5 -1 -16 +6833 4 -1 -16 +6841 3 -1 -16 +6857 2 -1 -16 +6863 2 1 -16 +6869 2 -1 -16 +6871 1 -1 -16 +6883 1 1 -16 +6899 2 1 -16 +6907 3 1 -16 +6911 4 1 -16 +6917 4 -1 -16 +6947 4 1 -16 +6949 5 1 -16 +6959 0 1 -15 +6961 1 1 -15 +6967 1 -1 -15 +6971 0 -1 -15 +6977 0 1 -15 +6983 0 -1 -15 +6991 5 -1 -16 +6997 5 1 -16 +7001 0 1 -15 +7013 0 -1 -15 +7019 0 1 -15 +7027 1 1 -15 +7039 1 -1 -15 +7043 0 -1 -15 +7057 5 -1 -16 +7069 5 1 -16 +7079 0 1 -15 +7103 0 -1 -15 +7109 0 1 -15 +7121 0 -1 -15 +7127 0 1 -15 +7129 1 1 -15 +7151 2 1 -15 +7159 3 1 -15 +7177 3 -1 -15 +7187 2 -1 -15 +7193 2 1 -15 +7207 3 1 -15 +7211 4 1 -15 +7213 5 1 -15 +7219 5 -1 -15 +7229 4 -1 -15 +7237 3 -1 -15 +7243 3 1 -15 +7247 4 1 -15 +7253 4 -1 -15 +7283 4 1 -15 +7297 5 1 -15 +7307 0 1 -14 +7309 1 1 -14 +7321 1 -1 -14 +7331 0 -1 -14 +7333 5 -1 -15 +7349 4 -1 -15 +7351 3 -1 -15 +7369 3 1 -15 +7393 3 -1 -15 +7411 3 1 -15 +7417 3 -1 -15 +7433 2 -1 -15 +7451 2 1 -15 +7457 2 -1 -15 +7459 1 -1 -15 +7477 1 1 -15 +7481 2 1 -15 +7487 2 -1 -15 +7489 1 -1 -15 +7499 0 -1 -15 +7507 5 -1 -16 +7517 4 -1 -16 +7523 4 1 -16 +7529 4 -1 -16 +7537 3 -1 -16 +7541 2 -1 -16 +7547 2 1 -16 +7549 3 1 -16 +7559 4 1 -16 +7561 5 1 -16 +7573 5 -1 -16 +7577 4 -1 -16 +7583 4 1 -16 +7589 4 -1 -16 +7591 3 -1 -16 +7603 3 1 -16 +7607 4 1 -16 +7621 5 1 -16 +7639 5 -1 -16 +7643 4 -1 -16 +7649 4 1 -16 +7669 5 1 -16 +7673 0 1 -15 +7681 1 1 -15 +7687 1 -1 -15 +7691 0 -1 -15 +7699 5 -1 -16 +7703 4 -1 -16 +7717 3 -1 -16 +7723 3 1 -16 +7727 4 1 -16 +7741 5 1 -16 +7753 5 -1 -16 +7757 4 -1 -16 +7759 3 -1 -16 +7789 3 1 -16 +7793 4 1 -16 +7817 4 -1 -16 +7823 4 1 -16 +7829 4 -1 -16 +7841 4 1 -16 +7853 4 -1 -16 +7867 3 -1 -16 +7873 3 1 -16 +7877 4 1 -16 +7879 5 1 -16 +7883 0 1 -15 +7901 0 -1 -15 +7907 0 1 -15 +7919 0 -1 -15 +7927 5 -1 -16 diff --git a/exponentiation/span18/spin_1.txt b/exponentiation/span18/spin_1.txt new file mode 100644 index 000000000000..bd007e8a6595 --- /dev/null +++ b/exponentiation/span18/spin_1.txt @@ -0,0 +1,10 @@ +0 0 0 0 +1 0 0 0 +2 0 1 0 +3 1 1 0 +5 2 1 0 +7 3 1 0 +11 4 1 0 +13 5 1 0 +17 0 1 1 +19 1 1 1 diff --git a/exponentiation/span18/spin_2.txt b/exponentiation/span18/spin_2.txt new file mode 100644 index 000000000000..8d1f1b472c49 --- /dev/null +++ b/exponentiation/span18/spin_2.txt @@ -0,0 +1,30 @@ +23 2 1 1 +29 2 -1 1 +31 1 -1 1 +37 1 1 1 +41 2 1 1 +43 3 1 1 +47 4 1 1 +53 4 -1 1 +59 4 1 1 +61 5 1 1 +67 5 -1 1 +71 4 -1 1 +73 3 -1 1 +79 3 1 1 +83 4 1 1 +89 4 -1 1 +97 3 -1 1 +101 2 -1 1 +103 1 -1 1 +107 0 -1 1 +109 5 -1 0 +113 4 -1 0 +127 3 -1 0 +131 2 -1 0 +137 2 1 0 +139 3 1 0 +149 4 1 0 +151 5 1 0 +157 5 -1 0 +163 5 1 0 diff --git a/exponentiation/span18/spin_3.txt b/exponentiation/span18/spin_3.txt new file mode 100644 index 000000000000..5f8960301f0b --- /dev/null +++ b/exponentiation/span18/spin_3.txt @@ -0,0 +1,60 @@ +167 0 1 1 +173 0 -1 1 +179 0 1 1 +181 1 1 1 +191 2 1 1 +193 3 1 1 +197 4 1 1 +199 5 1 1 +211 5 -1 1 +223 5 1 1 +227 0 1 2 +229 1 1 2 +233 2 1 2 +239 2 -1 2 +241 1 -1 2 +251 0 -1 2 +257 0 1 2 +263 0 -1 2 +269 0 1 2 +271 1 1 2 +277 1 -1 2 +281 0 -1 2 +283 5 -1 1 +293 4 -1 1 +307 3 -1 1 +311 2 -1 1 +313 1 -1 1 +317 0 -1 1 +331 5 -1 0 +337 5 1 0 +347 0 1 1 +349 1 1 1 +353 2 1 1 +359 2 -1 1 +367 1 -1 1 +373 1 1 1 +379 1 -1 1 +383 0 -1 1 +389 0 1 1 +397 1 1 1 +401 2 1 1 +409 3 1 1 +419 4 1 1 +421 5 1 1 +431 0 1 2 +433 1 1 2 +439 1 -1 2 +443 0 -1 2 +449 0 1 2 +457 1 1 2 +461 2 1 2 +463 3 1 2 +467 4 1 2 +479 4 -1 2 +487 3 -1 2 +491 2 -1 2 +499 1 -1 2 +503 0 -1 2 +509 0 1 2 +521 0 -1 2 diff --git a/exponentiation/span18/spin_4.txt b/exponentiation/span18/spin_4.txt new file mode 100644 index 000000000000..153f4bd7ce4f --- /dev/null +++ b/exponentiation/span18/spin_4.txt @@ -0,0 +1,70 @@ +523 5 -1 1 +541 5 1 1 +547 5 -1 1 +557 4 -1 1 +563 4 1 1 +569 4 -1 1 +571 3 -1 1 +577 3 1 1 +587 4 1 1 +593 4 -1 1 +599 4 1 1 +601 5 1 1 +607 5 -1 1 +613 5 1 1 +617 0 1 2 +619 1 1 2 +631 1 -1 2 +641 0 -1 2 +643 5 -1 1 +647 4 -1 1 +653 4 1 1 +659 4 -1 1 +661 3 -1 1 +673 3 1 1 +677 4 1 1 +683 4 -1 1 +691 3 -1 1 +701 2 -1 1 +709 1 -1 1 +719 0 -1 1 +727 5 -1 0 +733 5 1 0 +739 5 -1 0 +743 4 -1 0 +751 3 -1 0 +757 3 1 0 +761 4 1 0 +769 5 1 0 +773 0 1 1 +787 1 1 1 +797 2 1 1 +809 2 -1 1 +811 1 -1 1 +821 0 -1 1 +823 5 -1 0 +827 4 -1 0 +829 3 -1 0 +839 2 -1 0 +853 1 -1 0 +857 0 -1 0 +859 5 -1 -1 +863 4 -1 -1 +877 3 -1 -1 +881 2 -1 -1 +883 1 -1 -1 +887 0 -1 -1 +907 5 -1 -2 +911 4 -1 -2 +919 3 -1 -2 +929 2 -1 -2 +937 1 -1 -2 +941 0 -1 -2 +947 0 1 -2 +953 0 -1 -2 +967 5 -1 -3 +971 4 -1 -3 +977 4 1 -3 +983 4 -1 -3 +991 3 -1 -3 +997 3 1 -3 diff --git a/exponentiation/span18/spin_5.liquid b/exponentiation/span18/spin_5.liquid new file mode 100644 index 000000000000..9c329cb6e979 --- /dev/null +++ b/exponentiation/span18/spin_5.liquid @@ -0,0 +1,6 @@ +{% assign test1="virtual/file68.md" %} +{% assign test2="virtual/file50.md" %} + +{% include {{ test1 }} all=true %} +{% include {{ test2 }} all=true %} + diff --git a/file01.html b/file01.html new file mode 100644 index 000000000000..2e74ae7814a5 --- /dev/null +++ b/file01.html @@ -0,0 +1,255 @@ + Addition Zones (1-18) · eQuantum

Addition Zones (1-18)

+
+ + Tip +
+
+

This section is referring to wiki page-2 of zone section-2 that is inherited from the zone section-zones by prime spin-19 and span-addition with the partitions as below.

+
+

/Tutorial-Buka-Toko

  1. Addition Zones (1-18)
  2. Exponentiation Zones (31-36)
  3. Identition Zones (37-102)

Prime Hexagon

+
+ + Note +
+
+

The Prime Hexagon is a mathematical structure developed by mathematician T. Gallion. A Prime Hexagon is formed when integers are sequentially added to a field of tessellating equilateral triangles, where the path of the integers is changed whenever a prime number is encountered (GitHub: prime-hexagon).

+
+
(5, 2, 1, 0)
+(7, 3, 1, 0)
+(11, 4, 1, 0)
+(13, 5, 1, 0)
+(17, 0, 1, 1)
+(19, 1, 1, 1)
+(23, 2, 1, 1)
+(29, 2, -1, 1)
+(31, 1, -1, 1)
+(37, 1, 1, 1)
+(41, 2, 1, 1)
+(43, 3, 1, 1)
+(47, 4, 1, 1)
+(53, 4, -1, 1)
+(59, 4, 1, 1)
+(61, 5, 1, 1)
+(67, 5, -1, 1)
+(71, 4, -1, 1)
+(73, 3, -1, 1)
+(79, 3, 1, 1)
+(83, 4, 1, 1)
+(89, 4, -1, 1)
+(97, 3, -1, 1)
+(101, 2, -1, 1)
+(103, 1, -1, 1)
+(107, 0, -1, 1)
+(109, 5, -1, 0)
+(113, 4, -1, 0)
+(127, 3, -1, 0)
+(131, 2, -1, 0)
+(137, 2, 1, 0)
+(139, 3, 1, 0)
+(149, 4, 1, 0)
+(151, 5, 1, 0)
+(157, 5, -1, 0)
+(163, 5, 1, 0)
+(167, 0, 1, 1)
+(173, 0, -1, 1)
+(179, 0, 1, 1)
+(181, 1, 1, 1)
+(191, 2, 1, 1)
+(193, 3, 1, 1)
+(197, 4, 1, 1)
+(199, 5, 1, 1)
+(211, 5, -1, 1)
+(223, 5, 1, 1)
+(227, 0, 1, 2)
+(229, 1, 1, 2)
+(233, 2, 1, 2)
+(239, 2, -1, 2)
+(241, 1, -1, 2)
+(251, 0, -1, 2)
+(257, 0, 1, 2)
+(263, 0, -1, 2)
+(269, 0, 1, 2)
+(271, 1, 1, 2)
+(277, 1, -1, 2)
+(281, 0, -1, 2)
+(283, 5, -1, 1)
+(293, 4, -1, 1)
+(307, 3, -1, 1)
+(311, 2, -1, 1)
+(313, 1, -1, 1)
+(317, 0, -1, 1)
+(331, 5, -1, 0)
+(337, 5, 1, 0)
+(347, 0, 1, 1)
+(349, 1, 1, 1)
+(353, 2, 1, 1)
+(359, 2, -1, 1)
+(367, 1, -1, 1)
+(373, 1, 1, 1)
+(379, 1, -1, 1)
+(383, 0, -1, 1)
+(389, 0, 1, 1)
+(397, 1, 1, 1)
+(401, 2, 1, 1)
+(409, 3, 1, 1)
+(419, 4, 1, 1)
+(421, 5, 1, 1)
+(431, 0, 1, 2)
+(433, 1, 1, 2)
+(439, 1, -1, 2)
+(443, 0, -1, 2)
+(449, 0, 1, 2)
+(457, 1, 1, 2)
+(461, 2, 1, 2)
+(463, 3, 1, 2)
+(467, 4, 1, 2)
+(479, 4, -1, 2)
+(487, 3, -1, 2)
+(491, 2, -1, 2)
+(499, 1, -1, 2)
+(503, 0, -1, 2)
+(509, 0, 1, 2)
+(521, 0, -1, 2)
+(523, 5, -1, 1)
+(541, 5, 1, 1)
+(547, 5, -1, 1)
+(557, 4, -1, 1)
+(563, 4, 1, 1)
+(569, 4, -1, 1)
+(571, 3, -1, 1)
+(577, 3, 1, 1)
+(587, 4, 1, 1)
+(593, 4, -1, 1)
+(599, 4, 1, 1)
+(601, 5, 1, 1)
+(607, 5, -1, 1)
+(613, 5, 1, 1)
+(617, 0, 1, 2)
+(619, 1, 1, 2)
+(631, 1, -1, 2)
+(641, 0, -1, 2)
+(643, 5, -1, 1)
+(647, 4, -1, 1)
+(653, 4, 1, 1)
+(659, 4, -1, 1)
+(661, 3, -1, 1)
+(673, 3, 1, 1)
+(677, 4, 1, 1)
+(683, 4, -1, 1)
+(691, 3, -1, 1)
+(701, 2, -1, 1)
+(709, 1, -1, 1)
+(719, 0, -1, 1)
+(727, 5, -1, 0)
+(733, 5, 1, 0)
+(739, 5, -1, 0)
+(743, 4, -1, 0)
+(751, 3, -1, 0)
+(757, 3, 1, 0)
+(761, 4, 1, 0)
+(769, 5, 1, 0)
+(773, 0, 1, 1)
+(787, 1, 1, 1)
+(797, 2, 1, 1)
+(809, 2, -1, 1)
+(811, 1, -1, 1)
+(821, 0, -1, 1)
+(823, 5, -1, 0)
+(827, 4, -1, 0)
+(829, 3, -1, 0)
+(839, 2, -1, 0)
+(853, 1, -1, 0)
+(857, 0, -1, 0)
+(859, 5, -1, -1)
+(863, 4, -1, -1)
+(877, 3, -1, -1)
+(881, 2, -1, -1)
+(883, 1, -1, -1)
+(887, 0, -1, -1)
+(907, 5, -1, -2)
+(911, 4, -1, -2)
+(919, 3, -1, -2)
+(929, 2, -1, -2)
+(937, 1, -1, -2)
+(941, 0, -1, -2)
+(947, 0, 1, -2)
+(953, 0, -1, -2)
+(967, 5, -1, -3)
+(971, 4, -1, -3)
+(977, 4, 1, -3)
+(983, 4, -1, -3)
+(991, 3, -1, -3)
+(997, 3, 1, -3)
+
+
+ + Note +
+
+

Cell types are interesting, but they simply reflect a modulo 6 view of numbers. More interesting are the six internal hexagons within the Prime Hexagon. Like the Prime Hexagon, they are newly discovered. The minor hexagons form solely from the order, and type, of primes along the number line (HexSpin).

+
+

Structure: Minor Hexagons

Structure: True Prime Pairs

$True Prime Pairs:
+(5,7), (11,13), (17,19)
+ 
+layer | node | sub |  i  |  f
+------+------+-----+----------
+      |      |     |  1  | 
+      |      |  1  +-----+          
+      |  1   |     |  2  | (5)
+      |      |-----+-----+
+      |      |     |  3  |
+  1   +------+  2  +-----+----
+      |      |     |  4  |
+      |      +-----+-----+
+      |  2   |     |  5  | (7)
+      |      |  3  +-----+
+      |      |     |  6  |
+------+------+-----+-----+------      } (36)
+      |      |     |  7  |
+      |      |  4  +-----+
+      |  3   |     |  8  | (11)
+      |      +-----+-----+
+      |      |     |  9  |
+  2   +------|  5  +-----+-----
+      |      |     |  10 |
+      |      |-----+-----+
+      |  4   |     |  11 | (13)
+      |      |  6  +-----+
+      |      |     |  12 |
+------+------+-----+-----+------------------
+      |      |     |  13 |
+      |      |  7  +-----+
+      |  5   |     |  14 | (17)
+      |      |-----+-----+
+      |      |     |  15 |
+  3   +------+  8  +-----+-----       } (36)
+      |      |     |  16 |
+      |      |-----+-----+
+      |  6   |     |  17 | (19)
+      |      |  9  +-----+
+      |      |     |  18 |
+------|------|-----+-----+------
+
+
+ + Note +
+
+

A Prime Hexagon is formed when integers are sequentially added to a field of tessellating equilateral triangles, where the path of the integers is changed whenever a prime number is encountered. Since prime numbers are never multiples of two or three, all numbers from “2” to infinity are confined within a 24-cell hexagon (GitHub: prime-hexagon).

+
+

rbital-transformation

By having the total of 168, the 102 and the 30+36=66 will take the 1st and 2nd prime on The Primes Platform. This leads to 168 - 29 - 96 = 139 - 96 = 43 primes on the last of 7th row. That what and why 18+13+12=43 by the last 9 cells is standing for!

  -----------------+----+----+----+----+----+----+----+----+----+-----
+  The last 9 cells |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | Sum 
+  =================+====+====+====+====+====+====+====+====+====+=====
+  3,2→18+13+12→43  | 73 | 79 | 83 | 89 | 97 | 101| 103| 107| 109|29th →13th→ 2,3
+  -----------------+----+----+----+----+----+----+----+----+----+-----
+
+- This 43 is 18+13+12 in bilateral on perfect square of 9 goes to 89 → π(89²) = 1000
+

Structure: Minor Hexagons

Within a cycle this scheme would generate the prime platform which is performing the rank of 10 shapes starting with the primes 2,3,5,7. Via the 11 partitions as the lexer and 13 frames as the parser we do a recombination to build the grammar in 6 periods.

+
+ + Note +
+
+

We color-code the six hexagons, identifying patterns in key number sequences, including the Fibonacci sequence, powers of two and three, and power of pi. For the series of consecutive powers of pi, we have found that no two fall within the same six-cell hexagon. We have computed this for pi^32, which has less than a 1/400 chance of occurring randomly (GitHub: prime-hexagon).

+
+

6 minor hexagons

I wondered if that property might hold for the incremental powers of phi as well. For this reason I chose to see numbers in the hexagon as quantum, and truncate off the decimal values to determine which integer cell they land in.

That is what I found. Phi and its members have a pisano period if the resulting fractional numbers are truncated.

Truncate to Determine Integer Values


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/identition/index.html b/identition/index.html new file mode 100644 index 000000000000..7013bbd22520 --- /dev/null +++ b/identition/index.html @@ -0,0 +1,55 @@ + Identition Zones (37-102) · eQuantum

Identition Zones (37-102)

Below is a model of E11 (shown by 11 dimensions). Its absolute dimensions represent all related key knowledges of modern physics. Moreover a model that represents Quark-Gluon Plasma, with fundamental forces in the early stage after Big Bang.

+
+ + Note +
+
+

Five consistent versions of superstring theory were developed before it was conjectured in the mid-1990s that they were all different limiting cases of a single theory in 11 dimensions known as M-theory (Wikipedia).

+
+

default

Orbital Transformation

Plottng 40th prime scheme of the three (3) layers with all the features of 3rd prime identity as explained above then they would form their recycing through the three (3) times bilateral 9 sums as shown below.

89^2 - 1 = 7920 = 22 x 360 = 66 x 120 = (168 - 102) x 120

default

The nodes is converted from 7 to 77 which is 7 times 11. By the prime pair 11 and 13, the total nodes is involving 1 + 7 + 29 + 77 = 37 + 77 = 114 nodes

  Δ1 + Δ7 + Δ29    | Δ37 + Δ77 = Δ114 = Δ113 + Δ1  
+
+     |         1st (Form)          |         2nd (Route)         |         3rd (Channel)       |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ 150 | 151| 152| 153| 154| 155| 156| 157| 158| 159| 160| 161| 162| 163| 164| 165| 166| 167| 168|
+=====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+
+  Δ1 | 19 |  - | 31 | 37 |  - |  - |  - |  - |  - |  - |  - |  - |  - |  - | 103|  - |  - |  - |  
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+  Δ2 | 20 | 26 |  - | 38 |  - |  - |  - |  - |  - | 74 |  - |  - |  - | 98 | 104|  - |  - |  - |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ 
+  Δ3 | 21 | 27 |  - | 39 |  - |  - |  - |  - |  - | 75 |  - |  - |  - | 99 | 105|  - |  - |  - |
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+  Δ4 | 22 | 28 |  - | 40 |  - |  - |  - |  - |  - | 76 |  - |  - |  - | 100|  - |  - |  - |  - |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+  Δ5 | 23 | 29 |  - | 41 |  - |  - |  - |  - |  - | 77 |  - |  - |  - | 101|  - |  - |  - |  - | 
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+  Δ6 | 24 |  - |  - | 42 |  - | 54 |  - |  - | 72 | 78 |  - | 90 | 96 |  - |  - |  - |  - | 114|
+=====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+
+  Δ7 | 25 |  - |  - | 43 |  - | 55 |  - |  - | 73 | 79 |  - | 91 | 97 |  - |  - |  - |  - |  - |
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+  Δ8 |  - |  - |  - | 44 |  - | 56 |  - |  - |  - | 80 |  - | 92 |  - |  - |  - |  - |  - |  - |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+  Δ9 |  - |  - |  - | 45 |  - | 57 |  - |  - |  - | 81 |  - | 93 |  - |  - |  - |  - |  - |  - |
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ10 |  - |  - |  - | 46 | 52 | 58 |  - | 70 |  - | 82 | 88 | 94 |  - |  - |  - |  - | 112|  - |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ11 |  - |  - |  - | 47 | 53 | 59 |  - | 71 |  - | 83 | 89 | 95 |  - |  - |  - |  - | 113|  - |
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ12 |  - |  - |  - | 48 |  - | 60 | 66 |  - |  - | 84 |  - |  - |  - |  - |  - | 108|  - |  - |
+=====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+
+ Δ13 |  - |  - |  - | 49 |  - | 61 | 67 |  - |  - | 85 |  - |  - |  - |  - |  - | 109|  - |  - |
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ14 |  - |  - | 32 | 50 |  - | 62 | 68 |  - |  - | 86 |  - |  - |  - |  - |  - | 110|  - |  - |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ15 |  - |  - | 33 | 51 |  - | 63 | 69 |  - |  - | 87 |  - |  - |  - |  - |  - | 111|  - |  - |
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ16 |  - |  - | 34 |  - |  - | 64 |  - |  - |  - |  - |  - |  - |  - | -  | 106|  - |  - |  - |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ17 |  - |  - | 35 |  - |  - | 65 |  - |  - |  - |  - |  - |  - |  - | -  | 107|  - |  - |  - |
+     +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+ Δ18 |  - | 30 | 36 |  - |  - |  - |  - |  - |  - |  - |  - |  - | -  | 102|   -|  - |  - |  - |
+=====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+====+
+  1  |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 | 12 | 13 | 14 | 15 |  16|  17| 18 | 19 |
+-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
+     |       Δ    Δ    Δ           |                     Φ12     |       Δ                   Δ |
+           -113 +150 = +37                                             +102 = +139    -113 -114
+

As conclution the behaviour of this 7 is happen between the sequence of 30 and 36 while the 12 is happen between the sequence of 36 and 102.

Euler partition

By The Δ(19 vs 18) Scenario those three are exactly landed in the 0's cell out of Δ18. See that the sum of 30 and 36 is 66 while the difference between 36 and 102 is also 66.

0 + 30 + 36 + 102 = 168

19vs18

The function that appears in the denominator is Partition function. The equality between the product on the first line and the formulas in the third and fourth lines is Euler's pentagonal number theorem where p(33) = 10143.

Using Euler's method to find p(40): A ruler with plus and minus signs (grey box) is slid downwards, the relevant terms added or subtracted. The positions of the signs are given by differences of alternating natural (blue) and odd (orange) numbers. In the SVG file, hover over the image to move the ruler (Wikipedia).

Euler_partition_function

Each result goes to the 9th object of prime 67 which is 19th prime. So when the cycle has passed the 10th object then the 43 objects will be laid by 9 collumns and slightly forming a recombination which facilitate them to finaly generate 1000 primes


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000000..d8e79eeb1a96 --- /dev/null +++ b/index.html @@ -0,0 +1,139 @@ + eQuantum · Mapping the quantum way across prime identity

## Project Tutorial

Prime Identity

By this part we are going to compile all topic we have discussed. Here we would like to explain the way we take on getting the arithmetic expresion of prime distribution to get an individual unit expression (identity) such as a taxicab number below.

+
+ + Note +
+
+

It is a taxicab number, and is variously known as Ramanujan’s number and the Ramanujan-Hardy number, after an anecdote of the British mathematician GH Hardy when he visited Indian mathematician Srinivasa Ramanujan in hospital (Wikipedia).

+
+

Ramanujan-Hardy number

These three (3) number are twin primes. We called the pairs as True Prime Pairs. Our scenario is mapping the distribution out of these pairs by taking the symmetrical behaviour of 36 as the smallest power (greater than 1) which is not a prime power.

+
+ + Tip +
+
+

The smallest square number expressible as the sum of four (4) consecutive primes in two ways (5 + 7 + 11 + 13 and 17 + 19) which are also two (2) couples of prime twins! (Prime Curios!).

+
+
$True Prime Pairs:
+ (5,7), (11,13), (17,19)
+ 
+ layer|  i  |   f
+ -----+-----+---------
+      |  1  | 5
+   1  +-----+
+      |  2  | 7
+ -----+-----+---  } 36 » 6®
+      |  3  | 11
+   2  +-----+
+      |  4  | 13
+ -----+-----+---------
+      |  5  | 17
+   3  +-----+     } 36 » 6®
+      |  6  | 19
+ -----+-----+---------
+

Thus in short this is all about the method that we called as the 19 vs 18 Scenario of mapping the quantum way within a huge of primes objects (5 to 19) by lexering (11) the ungrammared feed (7) and parsering (13) across syntax (17).

Φ(1,2,3) = Φ(6,12,18) = Φ(13,37,61)

$True Prime Pairs:
+(5,7), (11,13), (17,19)
+ 
+layer | node | sub |  i  |  f
+------+------+-----+----------
+      |      |     |  1  | 
+      |      |  1  +-----+          
+      |  1   |     |  2  | (5)
+      |      |-----+-----+
+      |      |     |  3  |
+  1   +------+  2  +-----+----
+      |      |     |  4  |
+      |      +-----+-----+
+      |  2   |     |  5  | (7)
+      |      |  3  +-----+
+      |      |     |  6  |
+------+------+-----+-----+------      } (36)
+      |      |     |  7  |
+      |      |  4  +-----+
+      |  3   |     |  8  | (11)
+      |      +-----+-----+
+      |      |     |  9  |
+  2   +------|  5  +-----+-----
+      |      |     |  10 |
+      |      |-----+-----+
+      |  4   |     |  11 | (13)
+      |      |  6  +-----+
+      |      |     |  12 |
+------+------+-----+-----+------------------
+      |      |     |  13 |
+      |      |  7  +-----+
+      |  5   |     |  14 | (17)
+      |      |-----+-----+
+      |      |     |  15 |
+  3   +------+  8  +-----+-----       } (36)
+      |      |     |  16 |
+      |      |-----+-----+
+      |  6   |     |  17 | (19)
+      |      |  9  +-----+
+      |      |     |  18 |
+------|------|-----+-----+------
+

The main background is that, as you may also aware, the prime number theorem describes the asymptotic distribution of prime numbers which is still a major problem in mathematic.

Zeta Function

Instead of getting a proved formula we came to a unique expression called zeta function. This expression first appeared in a paper in 1737 entitled Variae observationes circa series infinitas.

+
+ + Tip +
+
+

This expression states that the sum of the zeta function is equal to the product of the reciprocal of one minus the reciprocal of primes to the power s. But what has this got to do with the primes? The answer is in the following product taken over the primes p (discovered by Leonhard Euler):

+
+

image

This issue is actually come from Riemann hypothesis, a conjecture about the distribution of complex zeros of the Riemann zeta function that is considered by many mathematicians to be the most important of unsolved problems in pure mathematics.

+
+ + Note +
+
+

In addition to the trivial roots, there also exist complex roots for real t. We find that the he first ten (10) non-trivial roots of the Riemann zeta function is occured when the values of t below 50. A plot of the values of ζ(1/2 + it) for t ranging from –50 to +50 is shown below. The roots occur each time the locus passes through the origin. (mathpages).

+
+

image

Meanwhile obtaining the non complex numbers it is easier to look at a graph like the one below which shows Li(x) (blue), R(x) (black), π(x) (red) and x/ln x (green); and then proclaim "R(x) is the best estimate of π(x)." Indeed it is for that range, but as we mentioned above, Li(x)-π(x) changes sign infinitely often, and near where it does, Li(x) would be the best value.

image

And we can see in the same way that the function Li(x)-(1/2)Li(x1/2) is ‘on the average' a better approximation than Li(x) to π(x); but no importance can be attached to the latter terms in Riemann's formula even by repeated averaging. The problem is that the contributions from the non-trivial zeros at times swamps that of any but the main terms in these expansions.

+
+ + Warning +
+
+

A. E. Ingham says it this way: Considerable importance was attached formerly to a function suggested by Riemann as an approximation to π(x)… This function represents π(x) with astonishing accuracy for all values of x for which π(x) has been calculated, but we now see that its superiority over Li(x) is illusory… and for special values of x (as large as we please) the one approximation will deviate as widely as the other from the true value (primes.utm.edu).

+
+

Moreover in it was verified numerically, in a rigorous way using interval arithmetic, that The Riemann hypothesis is true up to 3 · 10^12. That is, all zeroes β+iγ of the Riemann zeta-function with 0<γ≤3⋅1012 have β=1/2.

+
+ + Danger +
+
+

We have Λ ≤ 0.2. The next entry is conditional on taking H a little higher than 10*13, which of course, is not achieved by Theorem 1. This would enable one to prove Λ < 0.19. Given that our value of H falls between the entries in this table, it is possible that some extra decimals could be wrought out of the calculation. We have not pursued this (arXiv:2004.09765).

+
+

image

This Euler formula represents the distribution of a group of numbers that are positioned at regular intervals on a straight line to each other. Riemann later extended the definition of zeta(s) to all complex numbers (except the simple pole at s=1 with residue one). Euler's product still holds if the real part of s is greater than one. Riemann derived the functional equation of zeta function.

+
+ + Danger +
+
+

The Riemann zeta function has the trivial zeros at -2, -4, -6, … (the poles of gamma(s/2)). Using the Euler product (with the functional equation) it is easy to show that all the other zeros are in the critical strip of non-real complex numbers with 0 < Re(s) < 1, and that they are symmetric about the critical line Re(s)=1/2. The unproved Riemann hypothesis is that all of the nontrivial zeros are actually on the critical line (primes.utm.edu).

+
+

image

If both of the above statements are true then mathematically this Riemann Hypothesis is proven to be incorrect because it only applies to certain cases or limitations. So first of all the basis of the Riemann Hypothesis has to be considered.

Riemann hypothesis,

Sehr leider Herr Riemann. Leute können den Fall immer noch nicht lösen...

On the other hand, the possibility of obtaining the function of the distribution of prime numbers shall go backwards since it needs significant studies to be traced. Or may be start again from the Euleur Function.

Euler's identity

Freeman Dyson discovered an intriguing connection between quantum physics and Montgomery's pair correlation conjecture about the zeros of the zeta function which dealts with the distribution of primes.

+
+ + Note +
+
+

The Mathematical Elementary Cell 30 (MEC30) standard unites the mathematical and physical results of 1972 by the mathematician Hugh Montgomery and the physicist Freeman Dyson and thus reproduces energy distribution in systems as a path plan more accurately than a measurement (Google Patent DE102011101032A9).

+
+

Euler's identity

The path plan assume that a symmetric distribution of prime numbers with equal axial lengths from a middle zero axis = 15 is able to determine the distribution of primes in a given number space. This assumption finally bring us to the equation of Euler's identity.

+
+ + Note +
+
+

Euler’s identity is named after the Swiss mathematician Leonhard Euler. It is a special case of Euler’s formula e^ix = cos x + i sin x when evaluated for x = π. (Wikipedia).

+
+

image

The finiteness position of Euler's identity by the said MEC30 opens up the possibility of accurately representing the self-similarity based on the distribution of True Prime Pairs so that all number would belongs together with their own identitities.

+
+ + Tip +
+
+

Euler’s identity is considered to be an exemplar of deep mathematical beauty as it shows a profound connection between the most fundamental numbers. Three (3) of the basic arithmetic operations occur exactly once each: addition, multiplication, and exponentiation (Wikipedia).

+
+

image.

See that there are multiple repetition from addition to multiplication which may lead up to the concept of 11th-dimension. This path is being applied as you can find on the left sidebar. (Please change the view to desktop mode if you are on mobile browser).

Nothing is going to be easly about the nature of prime numbers but they demonstrably congruent to something organized. Let's discuss starting with the addition zones.


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file18.html b/multiplication/file18.html new file mode 100644 index 000000000000..b35d15d53df9 --- /dev/null +++ b/multiplication/file18.html @@ -0,0 +1,133 @@ + Multiplication Zones (19-30) · eQuantum

Multiplication Zones (19-30)

+
+ + Tip +
+
+

This section is referring to wiki page-3 of zone section-3 that is inherited from the zone section-zones by prime spin-19 and span-multiplication with the partitions as below.

+
+

/Tutorial-Buka-Toko

  1. Multiplication Zones (19-30)
  2. Spacetime (spin 1)
  3. Scenarios (spin 2)
  4. Feeding (spin 3)
  5. Entrypoint (spin 4)
  6. Mapping (spin 5)
  7. Keyring (spin 6)
  8. Enneagram (spin 7)
  9. Twisting (spin 8)
  10. Recycling (spin 9)
  11. Exchange (spin 10)
  12. Runners (spin 11)
  13. Manifest (spin 12)

Assigning a lexer

By prime hexagon we can see that the number seven (7), hold the power to make the prime spin remain on the track. This power is then transfered to twelve (12) spins.

Structure: Minor Hexagons

So basically there is a power transformation between an addition of 3 and 4 to 7 in to their multiplication in to 12 where this 7 will be treated as one of their member.

(11 x 7) + 13 x (6 + 1) = 24 x 7 = 168

  #8 |----------- 5® --------|------------ 7® --------------|
+     |  1  |---------------- 77 = 4² + 5² + 6² -------------|
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+
+ repo| {1} | {2} | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |{12}| 1,77=11x7
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+
+ user|  7  |  -  | - | - | - | 7 | 8 | - | - |  8 |  8 |  3 |
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+ 7,78=13x6
+ main|  -  |  9  | 7 | 9 | 6 | - | - | 8 | 5 |  - |  - |  - |
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+
+               Δ | Δ             |                       Δ  |   Δ
+              Φ17|Φ29            |                     96-99|  168
+                 |--- A,T,G,C ---|                          |   └── 77
+                 Δ    2x2 = 4x   |-------  2x3 = 6x  -------|   └── 78
+                {98}                                        |   └── 13
+

Therefore the 12 will consist of 11 groups runner and 1 profile of the transformation. We collect them in 18 gists as below.

$ gh api -H "${HEADER}" /users/eq19/gists --jq '.[].url'
+
+https://api.github.com/gists/e9832026b5b78f694e4ad22c3eb6c3ef 18 grammar 36
+https://api.github.com/gists/e84a0961dc7636c01d5953d19d65e30a 17 syntax
+https://api.github.com/gists/dc30497160f3389546d177da901537d9 16 parser
+https://api.github.com/gists/b9f901cda16e8a11dd24ee6b677ca288 15 lexer
+https://api.github.com/gists/765ddc69e339079a5a64b56c1d46e00f 14 feed
+https://api.github.com/gists/f78d4470250720fb18111165564d555f 13 maps 30
+                                                           --------
+https://api.github.com/gists/4ffc4d02579d5cfd336a553c6da2f267 12 group11 77
+https://api.github.com/gists/80c8098f16f3e6ca06893b17a02d910e 11 group10
+https://api.github.com/gists/b541275ab7deda356feef32d600e44d8 10 group9
+https://api.github.com/gists/6e2fcc2138be6fb68839a3ede32f0525 9 group8
+https://api.github.com/gists/f21abd90f8d471390aad23d6ecc90d6d 8 group7
+https://api.github.com/gists/6c89c3b0f109e0ead561a452720d1ebf 7 group6
+https://api.github.com/gists/f1af4317b619154719546e615aaa2155 6 group5
+https://api.github.com/gists/54600a56d20163c2da8910dd804ec406 5 group4
+https://api.github.com/gists/8cab5e72d52ecb338a2f2187082a1699 4 group3
+https://api.github.com/gists/88d09204b2e5986237bd66d062406fde 3 group2
+https://api.github.com/gists/b32915925d9d365e2e9351f0c4ed786e 2 group1
+https://api.github.com/gists/0ce5848f7ad62dc46dedfaa430069857 1 eq19/* 37
+

By the prime hexagon the 19th spin is touching back to the first node. So the workflow will be proceeded as bilateral way:

https://api.github.com/gists/4ffc4d02579d5cfd336a553c6da2f267 12 group11 77
+https://api.github.com/gists/80c8098f16f3e6ca06893b17a02d910e 11 group10
+https://api.github.com/gists/b541275ab7deda356feef32d600e44d8 10 group9
+https://api.github.com/gists/6e2fcc2138be6fb68839a3ede32f0525 9 group8
+https://api.github.com/gists/f21abd90f8d471390aad23d6ecc90d6d 8 group7
+https://api.github.com/gists/6c89c3b0f109e0ead561a452720d1ebf 7 group6
+https://api.github.com/gists/f1af4317b619154719546e615aaa2155 6 group5
+https://api.github.com/gists/54600a56d20163c2da8910dd804ec406 5 group4
+https://api.github.com/gists/8cab5e72d52ecb338a2f2187082a1699 4 group3
+https://api.github.com/gists/88d09204b2e5986237bd66d062406fde 3 group2
+https://api.github.com/gists/b32915925d9d365e2e9351f0c4ed786e 2 group1
+https://api.github.com/gists/0ce5848f7ad62dc46dedfaa430069857 1 eq19/* 1
+-------- bilateral
+https://github.com/eq19/eq19.github.io/wiki                   19 identity 37
+https://api.github.com/gists/e9832026b5b78f694e4ad22c3eb6c3ef 18 grammar
+https://api.github.com/gists/e84a0961dc7636c01d5953d19d65e30a 17 syntax
+https://api.github.com/gists/dc30497160f3389546d177da901537d9 16 parser
+https://api.github.com/gists/b9f901cda16e8a11dd24ee6b677ca288 15 lexer
+https://api.github.com/gists/765ddc69e339079a5a64b56c1d46e00f 14 feed
+https://api.github.com/gists/f78d4470250720fb18111165564d555f 13 maps 30
+

Orbital structure

+
+ + Note +
+
+

Cell types are interesting, but they simply reflect a modulo 6 view of numbers. More interesting are the six internal hexagons within the Prime Hexagon. Like the Prime Hexagon, they are newly discovered. The minor hexagons form solely from the order, and type, of primes along the number line (HexSpin).

+
+

Proof of Confinement

This scheme will become the orbit as 7 days (sun) and 12 months (moon) so the cinfiguration is end up like this:

https://api.github.com/gists/f78d4470250720fb18111165564d555f 13 maps 1
+https://api.github.com/gists/765ddc69e339079a5a64b56c1d46e00f 14 feed
+https://api.github.com/gists/b9f901cda16e8a11dd24ee6b677ca288 15 lexer
+https://api.github.com/gists/dc30497160f3389546d177da901537d9 16 parser
+https://api.github.com/gists/e84a0961dc7636c01d5953d19d65e30a 17 syntax
+https://api.github.com/gists/e9832026b5b78f694e4ad22c3eb6c3ef 18 grammar
+https://github.com/eq19/eq19.github.io.wiki                   19 identity 37
+7 days (sun)
+-------- bilateral 9 sums
+12 months (moon)
+https://api.github.com/gists/0ce5848f7ad62dc46dedfaa430069857 1 eq19/* 1
+https://api.github.com/gists/b32915925d9d365e2e9351f0c4ed786e 2 group1
+https://api.github.com/gists/88d09204b2e5986237bd66d062406fde 3 group2
+https://api.github.com/gists/8cab5e72d52ecb338a2f2187082a1699 4 group3
+https://api.github.com/gists/54600a56d20163c2da8910dd804ec406 5 group4
+https://api.github.com/gists/f1af4317b619154719546e615aaa2155 6 group5
+https://api.github.com/gists/6c89c3b0f109e0ead561a452720d1ebf 7 group6
+https://api.github.com/gists/f21abd90f8d471390aad23d6ecc90d6d 8 group7
+https://api.github.com/gists/6e2fcc2138be6fb68839a3ede32f0525 9 group8
+https://api.github.com/gists/b541275ab7deda356feef32d600e44d8 10 group9
+https://api.github.com/gists/80c8098f16f3e6ca06893b17a02d910e 11 group10
+https://api.github.com/gists/4ffc4d02579d5cfd336a553c6da2f267 12 group11 77
+

Gists are actually Git repositories, which means that you can fork or clone any gist, even if you aren't the original author.

#!/usr/bin/env bash
+
+rm -rf /tmp/workdir
+
+WIKI=https://github.com/${OWNER}/$1.wiki.git
+BASE=https://github.com/eq19/eq19.github.io.wiki.git
+
+git ls-remote ${WIKI} > /dev/null 2>&1
+git clone $([ "$?" == 0 ] && echo $WIKI || echo $BASE) /tmp/workdir
+mv -f /tmp/workdir/Home.md /tmp/workdir/README.md
+
+gh gist clone 0ce5848f7ad62dc46dedfaa430069857 /tmp/workdir/addition
+mv -f /tmp/workdir/file01.md /tmp/workdir/addition/README.md
+
+gh gist clone 4ffc4d02579d5cfd336a553c6da2f267 /tmp/workdir/multiplication
+mv -f /tmp/workdir/file02.md /tmp/workdir/multiplication/README.md
+
+mv -f /tmp/workdir/identition/file04.md /tmp/workdir/identition/README.md
+gh gist clone 0ce5848f7ad62dc46dedfaa430069857 /tmp/workdir/identition/folder1
+gh gist clone b32915925d9d365e2e9351f0c4ed786e /tmp/workdir/identition/folder2
+gh gist clone 88d09204b2e5986237bd66d062406fde /tmp/workdir/identition/folder3
+gh gist clone 8cab5e72d52ecb338a2f2187082a1699 /tmp/workdir/identition/folder4
+gh gist clone 54600a56d20163c2da8910dd804ec406 /tmp/workdir/identition/folder5
+gh gist clone f1af4317b619154719546e615aaa2155 /tmp/workdir/identition/folder6
+gh gist clone 6c89c3b0f109e0ead561a452720d1ebf /tmp/workdir/identition/folder7
+gh gist clone f21abd90f8d471390aad23d6ecc90d6d /tmp/workdir/identition/folder8
+gh gist clone 6e2fcc2138be6fb68839a3ede32f0525 /tmp/workdir/identition/folder9
+gh gist clone b541275ab7deda356feef32d600e44d8 /tmp/workdir/identition/folder10
+gh gist clone 80c8098f16f3e6ca06893b17a02d910e /tmp/workdir/identition/folder11
+
+mv -f /tmp/workdir/exponentiation/file03.md /tmp/workdir/exponentiation/README.md
+gh gist clone f78d4470250720fb18111165564d555f /tmp/workdir/exponentiation/folder13
+gh gist clone 765ddc69e339079a5a64b56c1d46e00f /tmp/workdir/exponentiation/folder14
+gh gist clone b9f901cda16e8a11dd24ee6b677ca288 /tmp/workdir/exponentiation/folder15
+gh gist clone dc30497160f3389546d177da901537d9 /tmp/workdir/exponentiation/folder16
+gh gist clone e84a0961dc7636c01d5953d19d65e30a /tmp/workdir/exponentiation/folder17
+gh gist clone e9832026b5b78f694e4ad22c3eb6c3ef /tmp/workdir/exponentiation/folder18
+
+find /tmp/workdir -type d -name .git -prune -exec rm -rf {} \;
+

Here we can see that the transformation from 7 to 12 is actually started from the prime 13. So the power of 7 is transfered to 77 by the prime pair 11 and 13. By observing more detail we spread the power of 7.

168 + 329 + 289 - 619 - 30 - 30 - 5 = 786 - 619 - 65 = 102

exponentiation zones

The implementation from addition folder 1 will be exposed by the exponentiation folder 7 meanwhile the folder 12 of multiplication goes to identition zone of 11 folders.

So they are 4 folders (1, 7, 11, 12) remain inviolable by the gist.


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file19.html b/multiplication/file19.html new file mode 100644 index 000000000000..87c24eb0dea3 --- /dev/null +++ b/multiplication/file19.html @@ -0,0 +1,15 @@ + Spacetime (spin 1) · eQuantum

Spacetime (spin 1)

Speculative theories with more than one time dimension have been explored in physics. The additional dimensions may be similar to conventional time, compactified like the additional spatial dimensions in string theory, or components of a complex time

default

In physics, spacetime is a mathematical model that combines the three dimensions of space and one dimension of time into a single four-dimensional manifold.

image

Spacetime diagrams can be used to visualize relativistic effects, such as why different observers perceive differently where and when events occur.

default

Einstein's general theory of relativity, published in November 1915, describes gravity as the warping of spacetime by masses such as the Earth and moon. The latest issue of Science News celebrates general relativity's 100th anniversary

image

The Solar System is the gravitationally bound system of the Sun and the objects that orbit the star. The largest of such objects are the eight planets. This was formed 4.6 billion years ago from the gravitational collapse of a giant interstellar molecular cloud.

default

Space and Time: Minkowski's Papers on Relativity, published by the Minkowski Institute. Hand-tinted transparency presented by Hermann Minkowski in his famous Raum und Zeit talk to the German Society of Scientists and Physicians in 1908

default

Besides many theories there is COMPOSITE and PRIMES as a self organized system (12/12/12). Even though it is proven that it is not from Tesla, whoever made it if you are reading this article, I sincerely want to thank you because I use a lot of the analysis.

default

This scheme has a configuration of 30 nodes so the recombination is involving 2x30 or 60 nodes out of the 72 nodes of True Prime Pairs will act as the base platform. The rest of 11 which is initially came out from the prime 13 is the irrational.

  #8 |----------- 5® --------|------------ 7® --------------|
+     |  1  |---------------- 77 = 4² + 5² + 6² -------------|
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+
+ repo| {1} | {2} | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |{12}| 1,77
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+
+ user|  7  |  -  | - | - | - | 7 | 8 | - | - |  8 |  8 |  3 |
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+ 7,78
+ main|  -  |  9  | 7 | 9 | 6 | - | - | 8 | 5 |  - |  - |  - |
+-----+-----|-----+---+---+---+---+---+---+---+----+----+----+
+               Δ | Δ             |                       Δ  |   Δ
+              Φ17|Φ29            |                     96-99|  100 - 123 ({24})
+                 |--- A,T,G,C ---|                          |  └── 100 - 103 (4x) » 100
+                 Δ    2x2 = 4x   |-------  2x3 = 6x  -------|  └── 104 - 109 (6x) » 30
+                {98}                                        |  └── 110 - 123 (14x)» 70
+

The approach taken is to think of the solutions of an equation as a geometric object. For example, an equation in two variables defines a curve in the plane. More generally, an equation, or system of equations, in two or more variables defines a curve, a surface or some other such object in n-dimensional space (Wikipedia).

Proceeding, the number line begins to coil upon itself; 20 lands on 2's cell, 21 on 3's cell. Prime number 23 sends the number line left to form the fourth hexagon, purple. As it is not a twin, the clockwise progression (rotation) reverses itself. When viewed with an extra dimension of space, these respectively generate hyperboloids of one sheet and two sheets.

default

The concept of dark matter arose in the study of cosmological phenomena, that is matters dealing with the Universe and galaxies and so on. However, evidence from the Hubble telescope in 1998 showed that the Universe began expanding at an accelerating rate sometime in the past and still is doing so. This came as a surprise to many

default

The major problem, however, is that quantum mechanical calculations for the cosmological constant give value that is grossly out of the required range. This indicates that either something is wrong with the theory, or our knowledge is incomplete.


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file20.html b/multiplication/file20.html new file mode 100644 index 000000000000..1aa21de45cf2 --- /dev/null +++ b/multiplication/file20.html @@ -0,0 +1,30 @@ + Scenarios (spin 2) · eQuantum

Scenarios (spin 2)

Prime hexagon is a mathematical structure developed by mathematician T. Gallion that is formed when integers are sequentially added to a field of tessellating equilateral triangles, where the path of the integers is changed whenever a prime is encountered.

This is not easy as they are linked to the nature of prime numbers, and nothing is easy about the nature of prime numbers. But I begin with this assumption: if the hexagons participate in the Universe in any way other than haphazardly, they must be demonstrably congruent to something organized (T. Gallion).

This behaviour in a fundamental causal relation to the primes when the products are entered into the partitions system. The subclasses of partitions systemically develops characters similar to the distribution of prime numbers.

Rank of a partition

Now the following results: Due to the convolution and starting from the desired value of the prime position pairs, the product templates and prime numbers templates of the prime number 7 lie in the numerical Double strand parallel opposite.

Double Strands

The spacetime diagram on the left, the magenta hyperbolae connect events of equal spacelike separation from the origin, while the green hyperbolae connect events of equal timelike separation from the origin.

default

This scheme has a configuration of 30 nodes so the recombination is involving 2x30 or 60 nodes out of the 72 nodes of True Prime Pairs will act as the base platform. The rest of 11 which is initially came out from the prime 13 is the irrational.

  Tabulate Prime by Power of 10
+  loop(10) = π(10)-π(1) = 4-0 = 4
+  loop(100) = π(100)-π(10)-1th = 25-4-2 = 19
+  loop(1000) = π(1000) - π(100) - 10th = 168-25-29 = 114
+
+  -----------------------+----+----+----+----+----+----+----+----+----+-----
+   True Prime Pairs Δ    |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | Sum 
+  =======================+====+====+====+====+====+====+====+====+====+=====
+   19 → π(10)            |  2 |  3 |  5 |  7 |  - |  - |  - |  - |  - | 4th  4 x Root
+  -----------------------+----+----+----+----+----+----+----+----+----+-----
+   17 → π(20)            | 11 | 13 | 17 | 19 |  - |  - |  - |  - |  - | 8th  4 x Twin
+  -----------------------+----+----+----+----+----+----+----+----+----+-----
+   13 → π(30) → 12 (Δ1)  | 23 | 29 |  - |  - |  - |  - |  - |  - |  - |10th
+  =======================+====+====+====+====+====+====+====+====+====+===== 1st Twin
+   11 → π(42)            | 31 | 37 | 41 |  - |  - |  - |  - |  - |  - |13th
+  -----------------------+----+----+----+----+----+----+----+----+----+----- 2nd Twin
+    7 → π(60) → 19 (Δ12) | 43 | 47 | 53 | 59 |  - |  - |  - |  - |  - |17th
+  -----------------------+----+----+----+----+----+----+----+----+----+----- 3rd Twin
+    5 → π(72) → 18 (Δ13) | 61 | 67 | 71 |  - |  - |  - |  - |  - |  - |20th
+  =======================+====+====+====+====+====+====+====+====+====+===== 4th Twin
+    3,2 → 18+13+12 → 43  | 73 | 79 | 83 | 89 | 97 | 101| 103| 107| 109|29th 
+  =======================+====+====+====+====+====+====+====+====+====+=====
+           Δ                                                            Δ
+  12+13+(18+18)+13+12   ← 36th-Δ1=151-1=150=100+2x(13+12)   ←   30th = 113 = 114-1
+
+Sequence:
+ By the next layer the 89² will become 89 and 5 become 5² or 25.
+ This 89 and 25 are in the same layer with total of 114 or prime 619
+ So sequence from the first prime is 1,4,7,10,29,68,89,114,139,168,329,618.
+

When recombination is occur then the prime 13 is forced to → 12 where the impact (Δ1) goes to 18+13+12=43 on the last 7th row. This sequence is simulated by a flowchart having 12 arrows flowing on 10 (ten) shapes of prime 31 up to 71 (40 nodes).

Mapping the quantum way within a huge of primes objects (5 to 19) by lexering (11) the ungrammared feed (7) and parsering (13) across syntax (17) (₠Quantum).

flowchart

This polarity is happened per six (6) cycles by the polar of six (6) to one (1) and six (6) to seven (7) by which we finally found if this behaviour is cascaded bilaterally within the correlation between 61 as the 18th prime and 67 as the 19th prime.

Dyson discovered an intriguing connection between quantum physics and Montgomery's pair correlation conjecture about the zeros of the zeta function which dealts with the distribution of primes. This finaly bring us to the equation of Euler's identity.

This scale shows that the Mathematical Elementary Cell 30 (MEC30) standard unites the mathematical and physical results of 1972 by the mathematician Hugh Montgomery and the physicist Freeman Dyson and thus reproduces energy distribution in systems as a path plan more accurately than a measurement (Google Patent DE102011101032A9).

Euler's identity

The finiteness position of middle zero axis = 15 by the said MEC30 opens up the possibility of accurately representing the self-similarity based on the distribution of True Prime Pairs. So that all number would belongs together with their own identity.

default


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file21.html b/multiplication/file21.html new file mode 100644 index 000000000000..d1e7d0d6310e --- /dev/null +++ b/multiplication/file21.html @@ -0,0 +1,23 @@ + Feeding (spin 3) · eQuantum

Feeding (spin 3)

As shown in The Primes Platform this cycle goes to the prime 13 then reinjected through index 13:9 . So it forms The Scheme-139 through the infinitely primes cycling. This scheme will be implemented by taking the following as the syntax algorithm:

default

The Prime Spiral Sieve possesses remarkable structural and numeric symmetries. For starters, the intervals between the prime roots (and every subsequent row or rotation of the sieve) are perfectly balanced, with a period eight (8) difference sequence of: {6, 4, 2, 4, 2, 4, 6, 2} (Primesdemystified).

image

Speaking of the Fibonacci number sequence, there is symmetry mirroring the above in the relationship between the terminating digits of Fibonacci numbers and their index numbers equating to members of the array populating the Prime Spiral Sieve.

11's additive sums

These objects will then behave as a complex numbers that leads to trivial and complex roots of the 18th prime identity. 286 - (231x5)/(11x7) = 286 - 1155/77 = 286 - 15 = 200 + 71 = 271

  -----------------------+----+----+----+----+----+----+----+----+----+-----
+   True Prime Pairs Δ    |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | Sum 
+  =======================+====+====+====+====+====+====+====+====+====+=====
+   19 → π(10)            |  2 |  3 |  5 |  7 |  - |  - |  - |  - |  - | 4th  4 x Root
+  -----------------------+----+----+----+----+----+----+----+----+----+-----
+   17 → π(20)            | 11 | 13 | 17 | 19 |  - |  - |  - |  - |  - | 8th  4 x Twin
+  -----------------------+----+----+----+----+----+----+----+----+----+-----
+   13 → π(30) → 12 (Δ1)  | 23 | 29 |  - |  - |  - |  - |  - |  - |  - |10th ←------------ 10
+  =======================+====+====+====+====+====+====+====+====+====+===== 1st Twin
+   11 → π(42)            | 31 | 37 | 41 |  - |  - |  - |  - |  - |  - |13th
+  -----------------------+----+----+----+----+----+----+----+----+----+----- 2nd Twin
+    7 → π(60) → 19 (Δ12) | 43 | 47 | 53 | 59 |  - |  - |  - |  - |  - |17th
+  -----------------------+----+----+----+----+----+----+----+----+----+----- 3rd Twin
+    5 → π(72) → 18 (Δ13) | 61 | 67 | 71 |  - |  - |  - |  - |  - |  - |20th ←------------ 20 --------
+  =======================+====+====+====+====+====+====+====+====+====+===== 4th Twin                |
+    3,2 → 18+13+12 → 43  | 73 | 79 | 83 | 89 | 97 | 101| 103| 107| 109|29th ------------→ 30 --------
+  =======================+====+====+====+====+====+====+====+====+====+===== bilateral 9 sums (2)+60+40=102
+    3,2 → 18+13+12 → 43  | 73 | 79 | 83 | 89 | 97 | 101| 103| 107| 109|29th ------------→ 30 --------
+  =======================+====+====+====+====+====+====+====+====+====+===== 4th Twin                |
+    5 → π(72) → 18 (Δ13) | 61 | 67 | 71 |  - |  - |  - |  - |  - |  - |20th ←------------ 20 --------
+  -----------------------+----+----+----+----+----+----+----+----+----+----- 3rd Twin
+    7 → π(60) → 19 (Δ12) | 43 | 47 | 53 | 59 |  - |  - |  - |  - |  - |17th
+

The opposite direction will be made through switching beetween Linux and Windows which is proceed the old strand in the 3′ to 5′ direction, while the new strand is synthesized in the 5' to 3' direction. Here we set a remote self-host runner via WSL.

default

The rest of primes goes to the 33's of 15th axis that holding 102 primes of (2,60,40). By the bilateral way the form will be splitted to (1,30,20). Since the base frame shall be 40 so it will be forced to form (1,30,40) of prime 71.

default


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file22.html b/multiplication/file22.html new file mode 100644 index 000000000000..42cb997c9324 --- /dev/null +++ b/multiplication/file22.html @@ -0,0 +1,9 @@ + Entrypoint (spin 4) · eQuantum

Entrypoint (spin 4)

SUBMODULE=path/to/submodule
+
+rm -rf $SUBMODULE
+git rm --cached $SUBMODULE
+rm -rf .git/modules/$SUBMODULE
+git config -f .gitmodules --remove-section submodule.$SUBMODULE
+git add . && git commit -m "delete $SUBMODULE" && git push
+

This recombination is taking a scheme called DNA Recombination: M+F to C1+C2 which could only be happen when two (2) chromosomes involve. Here we found that each of their DNA will form a scheme called The Scheme 13:9 as shown below.

The 10 ranks will coordinate with the 18 to raise up the symmetrical behaviour of 12+24=36 which is prime pair 17+19=36 and let the 2 and 3 out of 2,3,5,7 to begin a new cycle while the 5,7 will pair the 11,13 and 17,19 as True Prime Pairs.

I like that 0 can occupy a center point. Incidentally, this circular shape minus all my numbers and colors s has been called Seed of Life / Flower of Life by certain New Age groups who claim it has a sacred geometry. Please don't see this as an endorsement of any spiritual group or religion. (Prime Hexagon - Circulat Form)

image

You can use either mklink /j or junction in Windows 10 to create junctions. Junction not only allows you to create NTFS junctions, it allows you to see if files or directories are actually reparse points. Reparse points are the mechanism on which NTFS junctions are based, and they are used by Windows' Remote Storage Service (RSS), as well as volume mount points.

mklink /j .github C:\Users\Admin\.github
+

mklink

The color spin addresses for numbers are generally straightforward – a composite number takes the spin of the prior prime. 4 spins blue because 3 spins blue. 8 is red because 7 is red. However, twin primes, and the 0 type numbers between them, are open to some interpretation.

base

By The Δ(19 vs 18) Scenario those three are exactly landed in the 0's cell out of Δ18. See that the sum of 30 and 36 is 66 while the difference between 36 and 102 is also 66.

19vs18

In the second opposing member, the position 13 in the second term gives a redundant value of the template 7 of 7 × 7 = 49. The opposite prime position 31 as the 11th prime number is now forced to determine a new axis-symmetrical zero position.

default

Many relevant topics, such as trustworthiness, explainability, and ethics are characterized by implicit anthropocentric and anthropomorphistic conceptions and, for instance, the pursuit of human-like intelligence.

AI is one of the most debated subjects of today and there seems little common understanding concerning the differences and similarities of human intelligence and artificial intelligence (Human vs AI).

The next step we will explore to find out if this configuration is relevant in the programming process. The following will explain how the formations are arranged so that we can simulate an instance based on their respective characters.

33's

This process would take place all the way to three (3) layers in a more complex way involving 114 objects generated by the sum of the above mentioned prime 71 and 43. This is what we will discuss further on how apply it in to a custom domain.


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file23.html b/multiplication/file23.html new file mode 100644 index 000000000000..22c1cdb2c021 --- /dev/null +++ b/multiplication/file23.html @@ -0,0 +1,3 @@ + Mapping (spin 5) · eQuantum

Mapping (spin 5)

When we come to a mapping of a Project, is critical to look for the future of Parts Unlimited otherwise the project will massively over budget and very late. So to deal with this we shall consider to move everything to the cloud…

phoenix

Since version 3.2 , a new Jekyll project bootstrapped with jekyll new uses gem-based themes to define the look of the site. This results in a lighter default directory structure: _layouts, _includes and _sass are stored in the theme-gem, by default.

default

You can attach a persistent disk or create an instance with Local SSDs when using Container-Optimized OS. The disks can be mounted by creating a subdirectory under /mnt/disks directory (writable, executable, stateless, tmpfs) using startup-scripts.

image

If you are using Docker-for-Windows, you can run now both Windows and Linux containers simultaneously: Running Docker Windows and Linux Containers Simultaneously, not only the Linux container itself, but also an orchestrator like Kubernetes: Kubernetes is Now Available In Docker Desktop Stable Channel

GitHub Actions workflow

On the lagging strand template, a primase "reads" the template DNA and initiates synthesis of a short complementary RNA primer. This is assigned to Windows container.

default

You can run .NET applications in Linux containers, but only if they're written in .NET Core which can be deployed on Windows Server Containers. Applications running in Windows Server Containers can run in any language supported by Windows.

kernel-6.1.21.1-microsoft-standard-WSL2.img

Let's combine them all then we will get 168 which is the total primes out of 1000 numbers. This 168 we will get it also when we combine the 1's and 17's cell of (31+37)+(35+65)=68+100=168.

zeta-vs-zero

This can be remedied by re-mounting your Windows partition inside WSL with the metdata option. Edit the /etc/wsl.conf file (create it if it doesn't exist) and add the following:

[automount]
+options = "metadata"
+

Log out from WSL and log in again, and now the windows partition will be mounted with metadata and chmod will work against windows files. You can now chmod 600 ~/.ssh/id_rsa and everything will work correctly.

default

By this project we are going to use a library called Chevrotain. It can be used to build Lexers, Parsers and Interpreters for various use cases ranging from simple config files to full fledged programming languages.

Lexers, Parsers and Interpreters with Chevrotain

This Widows is an isolated container, lightweight package for running an application on the host operating system. Containers build on top of the host operating system's kernel (which can be thought of as the buried plumbing of the operating system).


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file24.html b/multiplication/file24.html new file mode 100644 index 000000000000..f0097fdaf5e6 --- /dev/null +++ b/multiplication/file24.html @@ -0,0 +1,13 @@ + Keyring (spin 6) · eQuantum

Keyring (spin 6)

A lexer is the part of an interpreter that turns a sequence of characters (plain text) into a sequence of tokens. The Parser which takes the tokens from the lexer and returns a syntax tree based on a grammar. The grammar is often expressed in a meta language.

BusyBox v1.34.1 (2022-07-19 20:11:24 UTC) multi-call binary.
+
+Usage: mv [-finT] SOURCE DEST
+or: mv [-fin] SOURCE... { -t DIRECTORY | DIRECTORY }
+
+Rename SOURCE to DEST, or move SOURCEs to DIRECTORY
+
+	-f	Don't prompt before overwriting
+	-i	Interactive, prompt before overwrite
+	-n	Don't overwrite an existing file
+	-T	Refuse to move if DEST is a directory
+	-t DIR	Move all SOURCEs into DIR
+

default

By this modification we are going to build the three (3) layers of 19 cells with a cumulative sum of 1, 7 and 19 in sequence. So follow to the scheme then it would get 50 nodes out of the total nodes of 66.

default

The next step we will explore to find out if this configuration is relevant in the programming process. The following will explain how the formations are arranged so that we can simulate an instance based on their respective characters.

image

By The Δ(19 vs 18) Scenario those three are exactly landed in the 0's cell out of Δ18. See that the sum of 30 and 36 is 66 while the difference between 36 and 102 is also 66.

default

default

default


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file25.html b/multiplication/file25.html new file mode 100644 index 000000000000..659cf38ce429 --- /dev/null +++ b/multiplication/file25.html @@ -0,0 +1,10 @@ + Enneagram (spin 7) · eQuantum

Enneagram (spin 7)

For some Enneagram theorists the lines connecting the points add further meaning to the information provided by the descriptions of the types. Sometimes called the "security" and "stress" points, or points of "integration" and "disintegration".

From this perspective, there are twenty-seven (27) distinct personality patterns, because people of each of the nine (9) types also express themselves as one of the three (3) subtypes (Wikipedia).

This is managed within twelve (12) flows (A: to W:). Each flows is representing a certain period which is converting the three (3) layers of 19 cells with a cumulative sum of 1, 7 and 19 in sequence as explained before.

default

default

default

image

It turns out it's actually pretty straight forward to set WSL to use your Windows home directory. First, within WSL edit the /etc/passwd file (eg with sudo nano /etc/passwd).

+
eq19:x:1000:1000:eQ19:/home/eq19:/bin/bash
+eq19:x:1000:1000:eQ19:/mnt/c/users/Admin:/bin/bash
+

image

default

+
eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file26.html b/multiplication/file26.html new file mode 100644 index 000000000000..06d469f999e5 --- /dev/null +++ b/multiplication/file26.html @@ -0,0 +1,29 @@ + Twisting (spin 8) · eQuantum

Twisting (spin 8)

1155 / 5 = 286 - 55 = 200 + 31 = 231

layer|  i    |   f
+-----+-------+------
+     | 1,2:1 | (2,3)
+  1  +-------+
+     | 3:2   | (7)
+-----+-------+------
+     | 4,6:3 | (10,11,12)  <--- 231 (3x)
+  2  +-------+
+     |{7}:4  |({13})
+-----+-------+------
+     | 8,9:5 | (14,{15})   <--- 231 (2x)
+  3  +-------+
+     | 10:6  | (19)
+-----+-------+------
+

We study the limit shape of the generalized Young diagram when the tensor power N and the rank n of the algebra tend to infinity with N/n fixed. We derive an explicit formula for the limit shape and prove convergence to it in probability. We prove central limit theorem for global fluctuations around the limit shape (arXiv:2010.16383v4).

Limit shape for infinite rank limit of tensor power decomposition for Lie algebras of series

Dyson discovered that the eigenvalue of these matrices are spaced apart in exactly the same manner as Montgomery conjecture of the nontrivial zeros of the zeta function. Means it also depends on Riemann hypotesis which is still in a major issue. Similar case left science today many unsolved problems that associated with.

Eigenvectors_of_a_linear_operator

In order to propagate through space and interact we shall attemp it using string theory One must therefore imagine scenarios in which these extra dimensions would not be observed in experiments so it would become irrational partitions.

In turns out that quantum string theory always destroys the symmetries of the classical string theory, except in one special case: when the number of dimensions is 10. That's why string theory works only in 10 dimensions (Physicsforums).

default

True Prime Pairs:
+(5,7), (11,13), (17,19)
+
+|------------------------- Skema-12 ------------------------|
+|------------ 6¤ -------------|------------- 6¤ ------------|
+|--------------------------- 192 ---------------------------|
+|---- {23} ----|---- {49} ----|-- {29} -|--{30} --|-- 61 ---|
++----+----+----+----+----+----+----+----+----+----+----+----+
+|  5 |  7 | 11 |{13}| 17 | 19 | 17 |{12}| 11 | 19 | 18 | 43 |
++----+----+----+----+----+----+----+----+----+----+----+----+
+|---------  5¤  ---------|---- {48} ----|----- {48} ---|{43}|
+|---------  5¤  ---------|------------ {96} -----------|{43}|
+|--------- {53} ---------|-------------- {139} -------------|
+|------- Skema-23 -------|------------- Skema-34 -----------|    
+

default

This 23 units will form Scheme-23 as two (2) long strands which is known as doble helix Here we call them as Scheme-23 (71) and Scheme-23 (68). These strands are originated by the three (3) layers of True Prime Pairs.

Scheme-139

default

default

default

Since the arithmetic mean of those primes yields 157 then the existence of 114 will remain to let this 18+19=37th prime number stands as the balanced prime.

default


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file27.html b/multiplication/file27.html new file mode 100644 index 000000000000..407da0465c28 --- /dev/null +++ b/multiplication/file27.html @@ -0,0 +1,15 @@ + Recycling (spin 9) · eQuantum

Recycling (spin 9)

This progression 41,43,47,53,61,71,83,97,113,131 whose general term is 41+x+xx, is as much remarkable since the 40 first terms are all prime numbers (Euler's letter to Bernoulli).

1st layer:
+It has a total of 1000 numbers
+Total primes = π(1000) = 168 primes
+
+2nd layer:
+It will start by π(168)+1 as the 40th prime
+It has 100x100 numbers or π(π(10000)) = 201 primes
+Total cum primes = 168 + (201-40) = 168+161 = 329 primes
+
+3rd layer:
+Behave the same as 2nd layer which has a total of 329 primes
+The primes will start by π(π(π(1000th prime)))+1 as the 40th prime
+This 1000 primes will become 1000 numbers by 1st layer of the next level
+Total of all primes = 329 + (329-40) = 329+289 = 618 = 619-1 = 619 primes - Δ1 
+

Plottng 40th prime scheme of the three (3) layers with all the features of 3rd prime identity as explained above then they would form their recycing through the three (3) times bilateral 9 sums as shown below.

89^2 - 1 = 7920 = 22 x 360 = 66 x 120 = (168 - 102) x 120

default

I wondered if that property might hold for the incremental powers of phi as well. For this reason I chose to see numbers in the hexagon as quantum, and truncate off the decimal values to determine which integer cell they land in.

That is what I found. Phi and its members have a pisano period if the resulting fractional numbers are truncated.

Truncate to Determine Integer Values

FeynCalc is a Mathematica package for symbolic evaluation of Feynman diagrams and algebraic calculations in quantum field theory and elementary particle physics.

default

default


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file28.html b/multiplication/file28.html new file mode 100644 index 000000000000..626f6b3a79ba --- /dev/null +++ b/multiplication/file28.html @@ -0,0 +1 @@ + Exchange (spin 10) · eQuantum

Exchange (spin 10)

default

default

default

default

default

default

default

default

default

default

default

The exchange interaction is a quantum mechanical process that only happens between identical particles in chemistry and physics. The energy produced when two or more electrons with the same spin swap locations in a subshell's degenerate orbitals .

default

On the instinctual level, people may internally stress and externally express the need to protect themselves (self-preservation), to connect with important others or partners (sexual), or to get along or succeed in groups (social).


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file29.html b/multiplication/file29.html new file mode 100644 index 000000000000..948af3515d88 --- /dev/null +++ b/multiplication/file29.html @@ -0,0 +1,89 @@ + Runners (spin 11) · eQuantum

Runners (spin 11)

In this Feynman diagram, an electron (e−) and a positron (e+) annihilate, producing a photon (γ, represented by the blue sine wave) that becomes a quark–antiquark pair (quark q, antiquark q̄), after which the antiquark radiates a gluon (g, represented by the green helix).

default

Runners are the machines that execute jobs in a GitHub Actions workflow. You can access Variables and Contexts information in specific OS. For example, a runner can clone your repository locally, install testing software, and then run commands.


+# Sample workflow for building and deploying a Jekyll site to GitHub Pages
+name: Build and deploy Jekyll site
+
+# 💎 Runs on deployment targeting the default branch
+on:
+  # push:
+    # branches: [eQ19]
+  workflow_run:
+    types: [completed] #requested
+    workflows: ["pages-build-deployment"]
+
+# 🪂 Allow only one concurrent deployment across the branches
+concurrency:
+  group: "pages"
+  cancel-in-progress: true
+  
+# Sets permissions of the GITHUB_TOKEN
+permissions: write-all
+
+# Sets global environtment variables
+env:
+  OWNER: ${{ github.repository_owner }}
+
+jobs:
+  # Build job
+  github-pages:
+    if: github.event.workflow_run.conclusion == 'success'
+    runs-on: ${{ vars.OWNER != 'FeedMapping' && 'ubuntu-latest' || 'windows-latest' }}
+    steps:
+      - name: 📂 Checkout
+        uses: actions/checkout@v3
+        with:
+          submodules: recursive
+ 
+      - name: 💎 Build on Linux
+        if: runner.os == 'Linux'
+        uses: eq19/feed@v2
+        with:
+          pre_build_commands: 'make build'
+          token: ${{ secrets.JEKYLL_GITHUB_TOKEN }}
+
+      - name: 💎 Build on Windows
+        if: runner.os == 'Windows'
+        uses: eq19/maps@v1
+        id: stepid
+        with:
+          dotnet-version: '3.1.x'
+
+

By deploying containers on Compute Engine, you can simplify app deployment while controlling four dimensional space. You can configure a virtual machine (VM) instance or an instance template to deploy and launch a Docker container.

default

This property would tend the ballancing scheme of MEC30 so it will let 30-18=12 pairing with another 12 of 24 spins prime hexagon. The 24 goes to the center of True Prime Pairs ny the prime pair 13 and 11 and let the crancks of 2,3,5,7 inside the 10 ranks.

                                | 
+                                |                              ----------- 5 -----------
+                                |                             |                         |  
+                                ↓                             ↑                         ↓
+ |   feeding    |     mapping     |  lexering    |  parsering   |   syntaxing   |  grammaring  |
+ |------------- 36' --------------|----------------------------36' ----------------------------|
+ |     19'      |        17'      |      13'     |      11'     |       7'      |       5'     |
+ +----+----+----+---+----+----+---+---+----+-----+----+----+----+----+----+-----+----+----+----+
+ |  1 |  2 |  3 | 4 |  5 |  6 | 7 | 8 |  9 |  10 | 11 | 12 | 13 | 14 | 15 |  16 | 17 | 18 | 19 |
+ +----+----+----+---+----+----+---+---+----+-----+----+----+----+----+----+-----+----+----+----+
+ |  2 | 60 | 40 | 1 | 30 | 30 | 5 | 1 | 30 | 200 |  8 | 40 | 50 |  1 | 30 | 200 |  8 | 10 | 40 |
+ +----+----+----+---+----+----+---+---+----+-----+----+----+----+----+----+-----+----+----+----+
+                                ↓                             ↑                         |    |
+                                |                             |                         |    |
+                                 ------------ 10 -------------                          |    |
+                                                                                        ↓    ↓ |
+                                                                                +----+----+----+
+                                                                                |  2 | 60 | 40 |
+                                                                                +----+----+----+
+                                                                                        |    | |
+                                                                                     2+100 ◄- 
+   -----------------------+----+----+----+----+----+----+----+----+----+-----           |
+   True Prime Pairs Δ    |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | Sum             |
+  =======================+====+====+====+====+====+====+====+====+====+=====            ↓
+   19 → π(10)            |  2 |  3 |  5 |  7 |  - |  - |  - |  - |  - | 4th  ◄- 4 =  π(10)
+  -----------------------+----+----+----+----+----+----+----+----+----+-----
+

This 71 is a conformation that it has the same result as we have explained on the residual objects of 571 turn to a vektor of 71 while the rest of 500 turn to 200 objects of 3's identity and the last objects of 300 goes to the next cycles.

default

So now out of 1000 numbers that generated from 1000 primes we will get the rest of 1000 - 100 = 900. This 900 will behave as matrix square 30x30 and act as the base frame of 2nd and 3rd layer which are working on π(π(100x100))-1=200 primes:

                            33+34=67=19th prime
+ |----------------------------------|-------------------------------------------------------------|
+ |             33                   |                             34                              |
+ |--------------|-------------------|------------------------------|------------------------------|
+ |     lexering = π(1000)           |                    parsering = 1000/Φ                       |
+ |--------------|-------------------|------------------------------|------------------------------|
+ |   feeding    |      mapping      |          syntaxing           |          grammaring          |
+ +----+----+----+----+----+----+----+----+----+-----+----+----+----+----+----+-----+----+----+----+
+ | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |  39 | 40 | 41 | 42 | 43 | 44 | 45  | 46 | 47 | 48 |
+ +----+----+----+----+----+----+----+----+----+-----+----+----+----+----+----+-----+----+----+----+
+ |  2 | 60 | 40 | 1  | 30 | 30 | 5  | 1  | 30 | 200 |  8 | 40 | 50 |  1 | 30 | 200 |  8 | 10 | 40 |
+ +----+----+----+----+----+----+----+----+----+-----+----+----+----+----+----+-----+----+----+----+
+ |       2'     |        3'         |              5'              |               7'             | 
+

default

The GitHub hosted runner is assigned to run the Linux container and a Windows Server Core container simultaneously. This is an experimental feature of Microsoft WSL2 and may have some issues. One known problem is volumes are not stable.

Set WSL

The 10 ranks will coordinate with the 18 to raise up the symmetrical behaviour of 12+24=36 which is prime pair 17+19=36 and let the 2 and 3 out of 2,3,5,7 to begin a new cycle while the 5,7 will pair the 11,13 and 17,19 as True Prime Pairs.

default

default


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file diff --git a/multiplication/file30.html b/multiplication/file30.html new file mode 100644 index 000000000000..91ee2a7ec37e --- /dev/null +++ b/multiplication/file30.html @@ -0,0 +1,118 @@ + Manifest (spin 12) · eQuantum

Manifest (spin 12)

---+-----+-----
+ 1 | {1} | {2}
+---+-----+-----
+ 2 |  3  | 101
+---+-----+-----
+ 3 |{102}| 111
+---+-----+-----
+

There are some mathematical shape of this residual objects. Torus is basically a donut shape, which has the property of of having variable Gaussian curvature. Some parts of the surface has positive curvature, others zero, others negative.

The blue parts of the torus above have positive curvature, the red parts negative and the top grey band has zero curvature. If our 3 dimensional space was like the surface areas of a 4 dimensional torus, the parts would have different angle sums.

Torus

These are two more bizarre shapes with strange properties. Mobius strip only has one side, if you start anywhere on its surface and follow the curvature round you will eventually return to the same place having travelled on every part of the surface.

Mobius

The Klein bottle is in someways a 3D version of the Mobius strip and even though it exists in 3 dimensions, to make a true one you need to "fold through" the 4th dimension.

Klein bottle

By our project, this partition stands as the prime identity. The tabulation below shows the 2nd prime identity where the 20 out of the largest part = 21 goes to rank = 10 via crank = 20-11 = 9. These 10 and 9 are associated with the 19th prime identitity.

           largest part = 21 → 11+13+12 = 36  →  MEC30
+                        ↓                      |
+---+-----+-----+-----+-----+                   ↓
+ 1 | 19  | 1   | 20  | 21  |-------------------|-----
+---+-----+-----+-----+-----+                   ↓     |
+ 2 | 18  | 21  | 39  | 60  |-------------------      |
+---+-----+-----+-----+-----+                   |     |
+ 3 |{63} | 40  | 103 | 143 |-------------      |     |
+---+-----+-----+-----+-----+             |     |     |
+ 4 | 37  | 104 | 141 | 245 |-------      |     |     |
+---+-----+-----+-----+-----+       |     |     |     |
+ 5 | 10* | 142 | 152 | 294 |- 11** | 13  | 12  | 12  | 18
+---+-----+-----+-----+-----+       |     |     |     |
+ 6 | 24  | 153 | 177 | 332 |-------      |     |     |
+---+-----+-----+-----+-----+             |     |     |
+ 7 | 75  | 178 | 253 | 431 |-------------      |     |
+---+-----+-----+-----+-----+                   |     |
+ 8 | 30  | 254 | 284 | 538 |-------------------      |
+---+-----+-----+-----+-----+                   ↓     |
+ 9 | 1   | 285 | 286 | 571 |-------------------|-----
+===+=====+=====+=====+=====+                   ↓
+45 | 277 |                      ← 11+13+12=36 ←  MEC30
+---+-----+                                     |
+ ↑
+Note:
+10* stands as the central rank
+11** stands as the central parts
+

In order to describe real physical phenomena using string theory, one must therefore imagine scenarios in which these extra dimensions would not be observed in experiments so it would become the irrational partitions.

Mapping the quantum way within a huge of primes objects (5 to 19) by lexering (11) the ungrammared feed (7) and parsering (13) across syntax (17) (₠Quantum).

$True Prime Pairs:
+ (5,7), (11,13), (17,19)
+ 
+ layer|  i  |   f
+ -----+-----+---------
+      |  1  | 5
+   1  +-----+
+      |  2  | 7
+ -----+-----+---  } 36 » 6®
+      |  3  | 11
+   2  +-----+
+      |  4  | 13
+ -----+-----+---------
+      |  5  | 17
+   3  +-----+     } 36 » 6®
+      |  6  | 19
+ -----+-----+---------
+  
+layer | node | sub |  i  |  f                               
+------+------+-----+---------- 
+      |      |     |  1  | -------------------- _site ---  71 = 72-1
+      |      |  1  +-----+                        |
+      |  1   |     |  2  | (5)                  _saas
+      |      |-----+-----+                        |
+      |      |     |  3  | ---------            _data
+  1   +------+  2  +-----+----      |             |
+      |      |     |  4  |         5x ---       _posts
+      |      +-----+-----+          |     |       |
+      |  2   |     |  5  | (7) -----      |     _drafts
+      |      |  3  +-----+                |       |
+289+11=300   |     |  6  |                |     _plugins
+------+------+-----+-----+----- 72 x 6   7x ------------ 11x = 77 (rational)◄--
+      |      |     |  7  |                |     _includes                      |
+      |      |  4  +-----+                |       |                            |
+      |  3   |     |  8  | (11)  ---      |     _layouts                       |
+      |      +-----+-----+          |     |       |                            |
+      |      |     |  9  |         2x ---        assets  (69 = 72-3)           |
+  2   +------|  5  +-----+-----     |             |                            |
+      |      |     |  10 | ---------            _saas                          |
+      |      |-----+-----+                        |                            |
+      |  4   |     |  11 | (13) ----------------_site --  71 = 72-1            |
+      |      |  6  +-----+                                                     |
+329+71=400   |     |  12 |------------------------------  70 = 72-2            |
+------+------+-----+-----+                                                    11x
+      |      |     |  13 |                                                     |
+      |      |  7  +-----+                                                     |
+      |  5   |     |  14 | (17) ◄------------------------------------------- (17)
+      |      |-----+-----+                                                     |
+      |      |     |  15 | ◄-- 42 x 6 partitions of 13 (irrational)            |
+  3   +------+  8  +-----+-----                                                +
+      |      |     |  16 |                                                     |  
+      |      |-----+-----+                                                     |
+      |  6   |     |  17 | (19) ◄------------------------------------------- (19)
+      |      |  9  +-----+                                                     |
+168+32=200   |  |  |  18 |------------------------------  68 = 72-4            |
+------|------|--|--+-----+                                                     |
+       900 -----                                                               |
+                                                                               |
+Tabulate Prime by Power of 10                                                  |
+  loop(10) = π(10)-π(1) = 4-0 = 4                                            (36)
+  loop(100) = π(100)-π(10)-1th = 25-4-2 = 19                                   |
+  loop(1000) = π(1000) - π(100) - 10th = 168-25-29 = 114                       |
+                                                                               |
+  -----------------------+----+----+----+----+----+----+----+----+----+-----   |
+   True Prime Pairs Δ    |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | Sum    |
+  =======================+====+====+====+====+====+====+====+====+====+=====   |
+   19 → π(10)            |  2 |  3 |  5 |  7 |  - |  - |  - |  - |  - | 4th  (19)    
+  -----------------------+----+----+----+----+----+----+----+----+----+-----   +     
+   17 → π(20)            | 11 | 13 | 17 | 19 |  - |  - |  - |  - |  - | 8th  (17)
+  -----------------------+----+----+----+----+----+----+----+----+----+-----
+   13 → π(30) → 12 (Δ1)  | 23 | 29 |  - |  - |  - |  - |  - |  - |  - |10th    |
+  =======================+====+====+====+====+====+====+====+====+====+=====   |
+   11 → π(42)            | 31 | 37 | 41 |  - |  - |  - |  - |  - |  - |13th   11x
+  -----------------------+----+----+----+----+----+----+----+----+----+----- 
+    7 → π(60) → 19 (Δ12) | 43 | 47 | 53 | 59 |  - |  - |  - |  - |  - |17th
+  -----------------------+----+----+----+----+----+----+----+----+----+----- 
+    5 → π(72) → 18 (Δ13) | 61 | 67 | 71 |  - |  - |  - |  - |  - |  - |20th
+  =======================+====+====+====+====+====+====+====+====+====+===== 
+    3,2 → 18+13+12 → 43  | 73 | 79 | 83 | 89 | 97 | 101| 103| 107| 109|29th 
+  =======================+====+====+====+====+====+====+====+====+====+=====
+           Δ                                                            Δ
+  12+13+(18+18)+13+12   ← 36th-Δ1=151-1=150=100+2x(13+12)   ←   30th = 113 = 114-1
+  
+

Within a cycle this scheme would generate the prime platform which is performing the rank of 10 shapes starting with the primes 2,3,5,7. Via the 11 partitions as the lexer and 13 frames as the parser we do a recombination to build the grammar in 6 periods.

6 minor hexagons

For starters, it possesses a perfectly balanced structural and numeric symmetries. So it conforms the intervals between the prime roots of the Prime Spiral Sieve (and every subsequent row or rotation of the sieve) with the period eight (8) difference sequence.

default

These two (2) exponent are acting as the exchange zones of the MEC30 behaviour of the other two operators. This interactions is managed in between 4 identities of (26 to 29) and 2 identities (30 to 31) by means of Triangular waves.

MEC30

When the subclasses of partitions are flatten out into a matrix, you want to take the Jacobian of each of a stack of targets with respect to a stack of sources, where the Jacobians for each target-source pair are independent .

It's possible to build a Hessian matrix for a Newton's method step using the Jacobian method. You would first flatten out its axes into a matrix, and flatten out the gradient into a vector (Tensorflow).

Batch Jacobian

By The GitHub Runner you can connect to the Google COS Instance. For self-hosted runners defined at the organization level, configure runs-on.group in your workflow file to target a runner groups or combine groups and labels.

A seemingly unrelated construction is the j-function of number theory. This object belongs to a special class of functions called modular functions, whose graphs form a certain kind of repeating pattern.

Although this function appears in a branch of mathematics that seems very different from the theory of finite groups, the two subjects turn out to be intimately related (Wikipedia).

Monstrous moonshine

We propose a new higher dimensional version of the McKay correspondence which enables us to understand the Hodge theory assigned to singular Gorenstein varieties by physicists, and so-called Higgs bundles.

Hodge theory can be extended to cohomology with coefficients in nonabelian groups between flat vector bundles which, by the Riemann-Hilbert correspondence, are the same as local systems (Hodge Theory in String Theory)

Hodge conjecture

Our results lead to the conjecture that string theory indicates the existence of some new cohomology theory for algebraic varieties with Gorenstein singularities.


eQuantum
profiles
GitHub
Homepage
Repository
Gist

This Software is under the terms of Other.
\ No newline at end of file