diff --git a/1c-enterprise/daily/index.xml b/1c-enterprise/daily/index.xml
index 3aa02dd8b94..2ff3c35b4b3 100644
--- a/1c-enterprise/daily/index.xml
+++ b/1c-enterprise/daily/index.xml
@@ -1,7 +1,7 @@
GitHub 1C Enterprise Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:23:31Z
+ 2023-12-24T01:27:30Z
Daily Trending of 1C Enterprise in GitHub
\ No newline at end of file
diff --git a/1c-enterprise/weekly/index.xml b/1c-enterprise/weekly/index.xml
new file mode 100644
index 00000000000..af832dee266
--- /dev/null
+++ b/1c-enterprise/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub 1C Enterprise Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:44:58Z
+ Weekly Trending of 1C Enterprise in GitHub
+
+
\ No newline at end of file
diff --git a/2-dimensional-array/daily/index.xml b/2-dimensional-array/daily/index.xml
index 001bd221b6d..54ca7606f42 100644
--- a/2-dimensional-array/daily/index.xml
+++ b/2-dimensional-array/daily/index.xml
@@ -1,7 +1,7 @@
GitHub 2-Dimensional Array Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:15Z
+ 2023-12-24T01:28:05Z
Daily Trending of 2-Dimensional Array in GitHub
\ No newline at end of file
diff --git a/2-dimensional-array/weekly/index.xml b/2-dimensional-array/weekly/index.xml
new file mode 100644
index 00000000000..f224553d21c
--- /dev/null
+++ b/2-dimensional-array/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub 2-Dimensional Array Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:14Z
+ Weekly Trending of 2-Dimensional Array in GitHub
+
+
\ No newline at end of file
diff --git a/4d/daily/index.xml b/4d/daily/index.xml
index 6648ae87a96..4fc0602ba05 100644
--- a/4d/daily/index.xml
+++ b/4d/daily/index.xml
@@ -1,7 +1,7 @@
GitHub 4D Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:18Z
+ 2023-12-24T01:28:06Z
Daily Trending of 4D in GitHub
\ No newline at end of file
diff --git a/4d/weekly/index.xml b/4d/weekly/index.xml
new file mode 100644
index 00000000000..965d97cd7a7
--- /dev/null
+++ b/4d/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub 4D Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:15Z
+ Weekly Trending of 4D in GitHub
+
+
\ No newline at end of file
diff --git a/abap-cds/daily/index.xml b/abap-cds/daily/index.xml
index a916f325aef..8b4aa07a1fe 100644
--- a/abap-cds/daily/index.xml
+++ b/abap-cds/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ABAP CDS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:17Z
+ 2023-12-24T01:28:05Z
Daily Trending of ABAP CDS in GitHub
\ No newline at end of file
diff --git a/abap-cds/weekly/index.xml b/abap-cds/weekly/index.xml
new file mode 100644
index 00000000000..df216eff362
--- /dev/null
+++ b/abap-cds/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ABAP CDS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:16Z
+ Weekly Trending of ABAP CDS in GitHub
+
+
\ No newline at end of file
diff --git a/abap/daily/index.xml b/abap/daily/index.xml
index 52c1ee01325..8a2ca263631 100644
--- a/abap/daily/index.xml
+++ b/abap/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ABAP Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:16Z
+ 2023-12-24T01:28:07Z
Daily Trending of ABAP in GitHub
\ No newline at end of file
diff --git a/abap/weekly/index.xml b/abap/weekly/index.xml
new file mode 100644
index 00000000000..930418ea856
--- /dev/null
+++ b/abap/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ABAP Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:17Z
+ Weekly Trending of ABAP in GitHub
+
+
\ No newline at end of file
diff --git a/abnf/daily/index.xml b/abnf/daily/index.xml
index 1f1974d480f..b187a44adfc 100644
--- a/abnf/daily/index.xml
+++ b/abnf/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ABNF Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:19Z
+ 2023-12-24T01:28:09Z
Daily Trending of ABNF in GitHub
\ No newline at end of file
diff --git a/abnf/weekly/index.xml b/abnf/weekly/index.xml
new file mode 100644
index 00000000000..d21bb34795c
--- /dev/null
+++ b/abnf/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ABNF Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:18Z
+ Weekly Trending of ABNF in GitHub
+
+
\ No newline at end of file
diff --git a/actionscript/daily/index.xml b/actionscript/daily/index.xml
index b576e4169c3..80987d99243 100644
--- a/actionscript/daily/index.xml
+++ b/actionscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ActionScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:23Z
+ 2023-12-24T01:28:09Z
Daily Trending of ActionScript in GitHub
\ No newline at end of file
diff --git a/actionscript/weekly/index.xml b/actionscript/weekly/index.xml
new file mode 100644
index 00000000000..a6037ac7932
--- /dev/null
+++ b/actionscript/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub ActionScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:21Z
+ Weekly Trending of ActionScript in GitHub
+
+
+ nesnass/SimLevel2
+ 2023-12-24T01:45:21Z
+ tag:github.com,2023-12-24:/nesnass/SimLevel2
+
+ <p></p><hr>
+
+
+ wangjian2254/zt_flex
+ 2023-12-24T01:45:21Z
+ tag:github.com,2023-12-24:/wangjian2254/zt_flex
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/ada/daily/index.xml b/ada/daily/index.xml
index 355d8d177e9..121b73a7f6a 100644
--- a/ada/daily/index.xml
+++ b/ada/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ada Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:21Z
+ 2023-12-24T01:28:10Z
Daily Trending of Ada in GitHub
\ No newline at end of file
diff --git a/ada/weekly/index.xml b/ada/weekly/index.xml
new file mode 100644
index 00000000000..4729c6b6de7
--- /dev/null
+++ b/ada/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ada Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:19Z
+ Weekly Trending of Ada in GitHub
+
+
\ No newline at end of file
diff --git a/adobe-font-metrics/daily/index.xml b/adobe-font-metrics/daily/index.xml
index da186b5b894..aeaa3d3c73d 100644
--- a/adobe-font-metrics/daily/index.xml
+++ b/adobe-font-metrics/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Adobe Font Metrics Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:26Z
+ 2023-12-24T01:28:13Z
Daily Trending of Adobe Font Metrics in GitHub
\ No newline at end of file
diff --git a/adobe-font-metrics/weekly/index.xml b/adobe-font-metrics/weekly/index.xml
new file mode 100644
index 00000000000..9f5b6adb5a0
--- /dev/null
+++ b/adobe-font-metrics/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Adobe Font Metrics Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:24Z
+ Weekly Trending of Adobe Font Metrics in GitHub
+
+
\ No newline at end of file
diff --git a/agda/daily/index.xml b/agda/daily/index.xml
index 597414d1345..cd186c61db9 100644
--- a/agda/daily/index.xml
+++ b/agda/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Agda Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:24Z
+ 2023-12-24T01:28:14Z
Daily Trending of Agda in GitHub
\ No newline at end of file
diff --git a/agda/weekly/index.xml b/agda/weekly/index.xml
new file mode 100644
index 00000000000..7ce23178b53
--- /dev/null
+++ b/agda/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Agda Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:23Z
+ Weekly Trending of Agda in GitHub
+
+
\ No newline at end of file
diff --git a/ags-script/daily/index.xml b/ags-script/daily/index.xml
index 75dd6d11125..ade00a90b13 100644
--- a/ags-script/daily/index.xml
+++ b/ags-script/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AGS Script Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:27Z
+ 2023-12-24T01:28:16Z
Daily Trending of AGS Script in GitHub
\ No newline at end of file
diff --git a/ags-script/weekly/index.xml b/ags-script/weekly/index.xml
new file mode 100644
index 00000000000..6c76fd686c8
--- /dev/null
+++ b/ags-script/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AGS Script Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:23Z
+ Weekly Trending of AGS Script in GitHub
+
+
\ No newline at end of file
diff --git a/aidl/daily/index.xml b/aidl/daily/index.xml
index eb3bee22a7a..fcf1ed10f8f 100644
--- a/aidl/daily/index.xml
+++ b/aidl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AIDL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:25Z
+ 2023-12-24T01:28:15Z
Daily Trending of AIDL in GitHub
\ No newline at end of file
diff --git a/aidl/weekly/index.xml b/aidl/weekly/index.xml
new file mode 100644
index 00000000000..047a0b76e73
--- /dev/null
+++ b/aidl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AIDL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:22Z
+ Weekly Trending of AIDL in GitHub
+
+
\ No newline at end of file
diff --git a/al/daily/index.xml b/al/daily/index.xml
index f70c2857ad9..61b3d391d15 100644
--- a/al/daily/index.xml
+++ b/al/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:29Z
+ 2023-12-24T01:28:18Z
Daily Trending of AL in GitHub
\ No newline at end of file
diff --git a/al/weekly/index.xml b/al/weekly/index.xml
new file mode 100644
index 00000000000..343bde7452c
--- /dev/null
+++ b/al/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:26Z
+ Weekly Trending of AL in GitHub
+
+
\ No newline at end of file
diff --git a/all/daily/index.xml b/all/daily/index.xml
index 975b11d7bf8..b9dad1f9cec 100644
--- a/all/daily/index.xml
+++ b/all/daily/index.xml
@@ -1,28 +1,28 @@
GitHub All Languages Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:23:42Z
+ 2023-12-24T01:27:38Z
Daily Trending of All Languages in GitHub
- nerdyrodent/AVeryComfyNerd
- 2023-12-23T01:23:42Z
- tag:github.com,2023-12-23:/nerdyrodent/AVeryComfyNerd
-
- <p>ComfyUI related stuff and things</p><hr><h1>Overview</h1>
<p>A variety of ComfyUI related workflows and other stuff. You'll need different models and custom nodes for each different workflow. As this page has multiple headings you'll need to scroll down to see more.</p>
<h1>Resources</h1>
<p>You'll need models and other resources for ComfyUI. Check the table below for links to everything from ControlNet models to Upscalers</p>
<table>
<thead>
<tr>
<th>Item</th>
<th>Description</th>
<th>Link</th>
</tr>
</thead>
<tbody>
<tr>
<td>ComfyUI</td>
<td>The main thing you'll need!</td>
<td><a href="https://github.com/comfyanonymous/ComfyUI">https://github.com/comfyanonymous/ComfyUI</a><br>See <a href="https://youtu.be/2r3uM_b3zA8">https://youtu.be/2r3uM_b3zA8</a> for an install guide</td>
</tr>
<tr>
<td>ComfyUI Manager</td>
<td>Install any missing nodes using this</td>
<td><a href="https://github.com/ltdrdata/ComfyUI-Manager">https://github.com/ltdrdata/ComfyUI-Manager</a></td>
</tr>
<tr>
<td>Stability AI</td>
<td>Models & VAEs</td>
<td><a href="https://huggingface.co/stabilityai">https://huggingface.co/stabilityai</a></td>
</tr>
<tr>
<td>Text-to-Image models</td>
<td>Text-2-image models</td>
<td><a href="https://huggingface.co/models?pipeline_tag=text-to-image&sort=trending">https://huggingface.co/models?pipeline_tag=text-to-image&sort=trending</a></td>
</tr>
<tr>
<td>SSD-1B</td>
<td>Text2-image model</td>
<td><a href="https://huggingface.co/segmind/SSD-1B">https://huggingface.co/segmind/SSD-1B</a></td>
</tr>
<tr>
<td>ControlNet Models</td>
<td>ControlNet Models</td>
<td><a href="https://huggingface.co/lllyasviel/sd_control_collection/tree/main">https://huggingface.co/lllyasviel/sd_control_collection/tree/main</a><br><a href="https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main">https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main</a></td>
</tr>
<tr>
<td>QR Code Monster Control Net</td>
<td>ControlNet Model</td>
<td><a href="https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster">https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster</a></td>
</tr>
<tr>
<td>IP Adpater</td>
<td>Github Repo</td>
<td><a href="https://github.com/tencent-ailab/IP-Adapter">https://github.com/tencent-ailab/IP-Adapter</a></td>
</tr>
<tr>
<td>IP Adapter models</td>
<td>Models</td>
<td><a href="https://huggingface.co/h94/IP-Adapter">https://huggingface.co/h94/IP-Adapter</a></td>
</tr>
<tr>
<td>T2I Adapter</td>
<td>Github Repo</td>
<td><a href="https://github.com/TencentARC/T2I-Adapter">https://github.com/TencentARC/T2I-Adapter</a></td>
</tr>
<tr>
<td>Control LoRA</td>
<td>Control Models</td>
<td><a href="https://huggingface.co/stabilityai/control-lora">https://huggingface.co/stabilityai/control-lora</a></td>
</tr>
<tr>
<td>AnimateDiff</td>
<td>Original repo, many links and more info</td>
<td><a href="https://github.com/guoyww/AnimateDiff">https://github.com/guoyww/AnimateDiff</a></td>
</tr>
<tr>
<td>Latent Consistency Models</td>
<td>Models</td>
<td><a href="https://huggingface.co/latent-consistency">https://huggingface.co/latent-consistency</a></td>
</tr>
<tr>
<td>Upscale Wiki</td>
<td>Many models & info</td>
<td><a href="https://upscale.wiki/wiki/Main_Page">https://upscale.wiki/wiki/Main_Page</a></td>
</tr>
<tr>
<td>Artist Style Studies</td>
<td>SDXL Prompt output examples for inspiration</td>
<td><a href="https://sdxl.parrotzone.art/">https://sdxl.parrotzone.art/</a></td>
</tr>
</tbody>
</table>
<h1>List of workflows available</h1>
<p>In ComfyUI the image <strong>IS</strong> the workflow. Simply drag or load a workflow image into ComfyUI! See the "troubleshooting" section if your local install is giving errors :)</p>
<table>
<thead>
<tr>
<th>Workflow</th>
<th>Description</th>
<th>Version</th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDXL/SDXL_Depth_Badger.png" width="256px"></td>
<td>Basic SDXL ControlNet workflow.<br>Introductory SDXL Canny & Depth ControlNet example.<br>See <a href="https://youtu.be/reqamcrPYiM">https://youtu.be/reqamcrPYiM</a> for more information.</td>
<td>SDXL</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/nr_sd15_QR_Monster.png" width="256px"></td>
<td>Basic QR Code Monster SD 1.5 ControlNet - make spiral art!<br>See also - <a href="https://youtu.be/D4oJz0w36ps">https://youtu.be/D4oJz0w36ps</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="workflows/SD15/nr_sd15_QR_Monster_AnimateDiff_LatentUpscale.png " width="256px"></td>
<td>QR Code Monster SD 1.5 ControlNet - make animated spiral art!<br>See also: <a href="https://youtu.be/D4oJz0w36ps">https://youtu.be/D4oJz0w36ps</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/AnimateDIff_FreeU.png" width="256px"></td>
<td>Updated QR Code Monster SD 1.5 ControlNet with AnimateDiff and FreeU<br>Works best with the v1 QR Code Monster - <a href="https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster">https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/AnimateDiff_MotionLoRA.png" width="256px"></td>
<td>AnimateDiff with Montion LoRA example. Pan up, down, left right, etc.</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Instant_LoRA_1.png" width="256px"></td>
<td>Instant LoRA 1<br>Inspired by <a href="https://civitai.com/articles/2345/aloeveras-instant-lora-no-training-15-sdxl">AloeVera</a> (almost identical).<br>Really simple, no training, "LoRA" like functionality.<br>SD 1.5. IP Adapter models:<br><strong>1.</strong> <a href="https://huggingface.co/h94/IP-Adapter/blob/main/models/ip-adapter-plus_sd15.bin">https://huggingface.co/h94/IP-Adapter/blob/main/models/ip-adapter-plus_sd15.bin</a> -> <code>custom_nodes/IPAdapter-ComfyUI/models</code>.<br><strong>2.</strong> <a href="https://huggingface.co/h94/IP-Adapter/blob/main/models/image_encoder/model.safetensors">https://huggingface.co/h94/IP-Adapter/blob/main/models/image_encoder/model.safetensors</a> -> <code>models/clip_vision</code>.<br><strong>Video guide</strong> - <a href="https://youtu.be/HtmIC6fqsMQ">https://youtu.be/HtmIC6fqsMQ</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Instant_LoRA_2.png" width="256px"></td>
<td>Instant LoRA 2<br>As above, but with ControlNet to guide the shape</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Instant_LoRA_3.png" width="256px"></td>
<td>Instant LoRA 3<br>As above, but with QR Code Monster ControlNet too :)</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Instant_LoRA_4.png" width="256px"></td>
<td>Instant LoRA 4<br>As above, but with basic upscaling</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Instant_LoRA_5.png" width="256px"></td>
<td>Instant LoRA 5<br>As above, but with more upscaling to 16k+</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Instant_LoRA_6.png" width="256px"></td>
<td>Instant LoRA 6<br>As above, but different upscaling to 16k+</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/PromptTravel_AnimateDiff_IPAdapter.png" width="256px"></td>
<td>Morphing AI videos of any length using AnimateDiff. SD 1.5. Includes IPAdapter & Upscaling. IP Adapter models:<br><strong>1.</strong> <a href="https://huggingface.co/h94/IP-Adapter/blob/main/models/ip-adapter-plus_sd15.bin">https://huggingface.co/h94/IP-Adapter/blob/main/models/ip-adapter-plus_sd15.bin</a> -> <code>custom_nodes/IPAdapter-ComfyUI/models</code>.<br><strong>2.</strong> <a href="https://huggingface.co/h94/IP-Adapter/blob/main/models/image_encoder/model.safetensors">https://huggingface.co/h94/IP-Adapter/blob/main/models/image_encoder/model.safetensors</a> -> <code>models/clip_vision</code>.<br><strong>Video guide</strong> - <a href="https://youtu.be/6A3a0QNPhIs">https://youtu.be/6A3a0QNPhIs</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/PromptTravel_AnimateDiff.png" width="256px"></td>
<td>Morphing AI videos of any length using AnimateDiff. SD 1.5. Includes Upscaling. Like above, but without IPAdapter controls.</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDXL/SDXL_Instant_LoRA_1.png" width="256px"></td>
<td>SDXL "Instant LoRA" - basic.<br>Really simple, no training, "LoRA" like functionality.<br>Uses SDXL IP Adapter - <a href="https://huggingface.co/h94/IP-Adapter">https://huggingface.co/h94/IP-Adapter</a><br>Video - <a href="https://youtu.be/dGL02W4QatI">https://youtu.be/dGL02W4QatI</a></td>
<td>SDXL</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDXL/SDXL_Instant_LoRA_2.png" width="256px"></td>
<td>SDXL "Instant LoRA" - with CLIP Vision<br>Uses SDXL IP Adapter - <a href="https://huggingface.co/h94/IP-Adapter">https://huggingface.co/h94/IP-Adapter</a><br>Also use "Revisions" CLIP vision - <a href="https://huggingface.co/stabilityai/control-lora">https://huggingface.co/stabilityai/control-lora</a></td>
<td>SDXL</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDXL/SDXL_Instant_LoRA_3.png" width="256px"></td>
<td>SDXL "Instant LoRA" - with CLIP Vision & ControlNet<br>Uses SDXL IP Adapter - <a href="https://huggingface.co/h94/IP-Adapter">https://huggingface.co/h94/IP-Adapter</a><br>Also use "Revisions" CLIP vision - <a href="https://huggingface.co/stabilityai/control-lora">https://huggingface.co/stabilityai/control-lora</a></td>
<td>SDXL</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/AnimateDiff_QRCode_Video.png" width="256px"></td>
<td>AnimateDiff + QRCode (Vid2Vid)<br>Use any high-contrast input video to create guided animations! Spirals away...</td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Reposer.png" width="256px"><br><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Reposer_Plus_bypass.png" width="256px"></td>
<td>SD 1.5 Reposer (2 versions) - single face image to any pose. Get consistent faces!<br><strong>No</strong> "roop" or similar face-swapping nodes required = easy install!<br>SD 1.5 ControlNet models:<br><a href="https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main">https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main</a><br>IP Adapter models:<br><strong>1.</strong> <a href="https://huggingface.co/h94/IP-Adapter/blob/main/models/ip-adapter-plus-face_sd15.bin">https://huggingface.co/h94/IP-Adapter/blob/main/models/ip-adapter-plus-face_sd15.bin</a><br><strong>2.</strong> <a href="https://huggingface.co/h94/IP-Adapter/blob/main/models/image_encoder/model.safetensors">https://huggingface.co/h94/IP-Adapter/blob/main/models/image_encoder/model.safetensors</a><br><em>NOTE</em> Now uses the more updated version of IPAdapter - IPAdapter_Plus!<br>Reposer & Reposer Plus Bypass Edition<br><strong>Original Reposer Basic Video guide</strong> - <a href="https://youtu.be/SacK9tMVNUA">https://youtu.be/SacK9tMVNUA</a><br><strong>Original Reposer Plus Video guide</strong> - <a href="https://youtu.be/ZcCfwTkYSz8">https://youtu.be/ZcCfwTkYSz8</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Video_Restyler.png" width="256px"></td>
<td>SD 1.5 Video Styler! Combining IPAdapter with Video-to-video for strange styles and weird animations<br>Uses <a href="https://github.com/cubiq/ComfyUI_IPAdapter_plus">https://github.com/cubiq/ComfyUI_IPAdapter_plus</a><br>The pre-trained models are available on <a href="https://huggingface.co/h94/IP-Adapter">huggingface</a>, download and place them in the <code>ComfyUI/custom_nodes/ComfyUI_IPAdapter_plus/models</code> directory.<br>For SD1.5 you need:<br>* ip-adapter_sd15.bin<br>* ip-adapter_sd15_light.bin<br>* ip-adapter-plus_sd15.bin<br>* ip-adapter-plus-face_sd15.bin<br>Additionally you need the image encoder to be placed in the <code>ComfyUI/models/clip_vision/</code> directory.<br>They are the same models used by the <em>other</em> IPAdapter custom nodes ;) - symlinks are your friend!<br><strong>Video guide</strong> - <a href="https://youtu.be/kJp8JzA2aVU">https://youtu.be/kJp8JzA2aVU</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDXL/SDXL_Reposer_Basic.png" width="256px"></td>
<td>SDXL version of Reposer using the SDXL "IPAdapter Plus Face" model<br>Pick a face then add a body in any pose - no training!<br>Works with photorealistic faces, anime faces, cartoon faces, etc</td>
<td>SDXL</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDXL/SSD1B-SDXL-8GB.png" width="256px"></td>
<td>SSD-1B Workflow - SDXL for 8GB VRAM cards!<br>Model - <a href="https://huggingface.co/segmind/SSD-1B">https://huggingface.co/segmind/SSD-1B</a><br>Video - <a href="https://youtu.be/F-bKndyQ7L8">https://youtu.be/F-bKndyQ7L8</a></td>
<td>SSD-1B</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/LCM_LoRA_Compare.png" width="256px"></td>
<td>LCM LoRA vs Normal</td>
<td>1.5, SDXL, SSD-1B</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/SD15_IPAdapterMask_Upscale.png" width="256px"></td>
<td>IPAdapter Attention Masking Example<br><strong>Video</strong> <a href="https://youtu.be/riLmjBlywcg">https://youtu.be/riLmjBlywcg</a></td>
<td>1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/SD15_LCM_IPAdapter_Facefix.png" width="256px"></td>
<td>IPAdapter Attention Masking Example with extra toppings (LCM, Facefix)<br><strong>Video</strong> <a href="https://youtu.be/riLmjBlywcg">https://youtu.be/riLmjBlywcg</a></td>
<td>1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDCore/SVD_Basic_Upscale.png" width="256px"></td>
<td>Stable Video Diffusion example with a simple upscale and frame interpolation</td>
<td>SVD</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SDCore/SDXL_Turbo_Basic.png" width="256px"></td>
<td>SDXL Turbo - 1 step diffusion!</td>
<td>SDXL Turbo, SD2 Turbo</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/ComfyMagicAnimate.png" width="256px"></td>
<td>A very basic attempt at a "Comfy MagicAnimate". Needs more work :)<br>Links:<br>Magic Animate - <a href="https://github.com/magic-research/magic-animate">https://github.com/magic-research/magic-animate</a><br>Magic Animate (Windows) - <a href="https://github.com/sdbds/magic-animate-for-windows">https://github.com/sdbds/magic-animate-for-windows</a><br>DreamingTulpa - <a href="https://twitter.com/dreamingtulpa/status/1730876691755450572">https://twitter.com/dreamingtulpa/status/1730876691755450572</a><br>CocktailPeanut - <a href="https://twitter.com/cocktailpeanut/status/1732052909720797524">https://twitter.com/cocktailpeanut/status/1732052909720797524</a><br>Google Colab - <a href="https://github.com/camenduru/MagicAnimate-colab">https://github.com/camenduru/MagicAnimate-colab</a><br>Huggingface Space - <a href="https://huggingface.co/spaces/zcxu-eric/magicanimate">https://huggingface.co/spaces/zcxu-eric/magicanimate</a><br>Vid2DensePose - <a href="https://github.com/Flode-Labs/vid2densepose">https://github.com/Flode-Labs/vid2densepose</a><br><br>Model Downloads for the MagicAnimate Gradio App:<br><code>mkdir -p magic-animate/pretrained_models</code><br><code>cd magic-animate/pretrained_models</code><br><code>git lfs clone https://huggingface.co/runwayml/stable-diffusion-v1-5 -b fp16</code><br><code>git lfs clone https://huggingface.co/stabilityai/sd-vae-ft-mse</code><br><code>git lfs clone https://huggingface.co/zcxu-eric/MagicAnimate</code><br><strong>Video</strong> - <a href="https://youtu.be/td27SyA9M80">https://youtu.be/td27SyA9M80</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/BatchImageAnimate.png" width="256px"></td>
<td>Steerable Motion - Image Batch with AnimateDiff<br>Video guide - <a href="https://youtu.be/bH-56e3cR2g">https://youtu.be/bH-56e3cR2g</a></td>
<td>SD 1.5</td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/workflows/SD15/Renoiser.png" width="256px"></td>
<td>Unsampler - Turn images into noise and back again, as modified by your prompts!<br>Video guide - <a href="https://youtu.be/qW1I7in1WL0">https://youtu.be/qW1I7in1WL0</a></td>
<td>SD 1.5, SDXL</td>
</tr>
</tbody>
</table>
<h1>Troubleshooting</h1>
<p>When troubleshooting (working to fix issues) - such as with your local custom node installs, it's best to do <em>all</em> of these steps until resolution.</p>
<ul>
<li>Make sure you've installed the drivers for your graphics card</li>
<li>In ComfyUI the image IS the workflow.</li>
<li>These workflows require ComfyUI to run, so you'll need to install that first. See <a href="https://youtu.be/2r3uM_b3zA8">https://youtu.be/2r3uM_b3zA8</a> for an install guide</li>
<li>Install <strong>ComfyUI Manager</strong> next - <a href="https://github.com/ltdrdata/ComfyUI-Manager">https://github.com/ltdrdata/ComfyUI-Manager</a></li>
<li>Use <strong>ComfyUI Manager</strong> to install missing custom nodes by clicking "Install Missing Custom Nodes"</li>
<li>If ComfyUI Manager can't find a node automatically, use the <em>search</em> feature</li>
<li><strong>Be sure to keep ComfyUI updated regularly</strong> - including all custom nodes. Old versions may result in errors appearing. This is the most common issue, so update now!</li>
<li>These are just workflows - no custom nodes here, so no code to go wrong :)</li>
<li>Need a model or checkpoint? See the resources section!</li>
<li>By default, models are saved in subdirectories under <code>ComfyUI/models</code>, though some custom nodes have their own models directory.</li>
<li><em>Don't mix SDXL and SD1.5 models</em> (unless stated, such as SDXL needing the SD 1.5 vision model) - chances are you'll get an error!</li>
<li>Don't try to use SDXL models in workflows not designed for SDXL - chances are they won't work!</li>
<li>Ensure your model files aren't corrupt - try a fresh download if a particular model gives errors</li>
<li>Some workflows are <em>large</em>. Zoom out to see more of the canvas.</li>
<li>Custom node still red after installing it? Remember to restart ComfyUI!</li>
<li>Custom node still giving an error? Check the GitHub page for that custom node - maybe someone else has a similar issue open?</li>
<li>Not sure where the GitHub page is for a custom node? You can click on it via ComfyUI Manager</li>
<li>Check the output when ComfyUI starts up as issues can show up there</li>
<li>Try updating custom nodes manually (<code>git pull</code>)</li>
<li>Sometimes custom nodes make breaking changes and the same node may need to be re-created. Typically the custom node GitHub page has such information.</li>
<li>Sometimes custom nodes just break! Check the github page for the custom node causing any issues for more information and to raise issues</li>
<li>Sometimes custom nodes change functionality, so check for updates. Changes include:
<ul>
<li>Segement anything - mask output inverted & now returns multiple images</li>
<li>Dynamic Thresholding - output different</li>
<li>The original IPAdapter is becoming deprecated</li>
</ul> </li>
<li>The Microsoft Windows portable version of ComfyUI apparently has issues with various custom nodes, whereas normal installs are OK. Unknown error? Try a normal install!</li>
<li>Need more help? See this <a href="https://www.youtube.com/playlist?list=PLjC8P1vEncQDahWnl_WKYsjF_tmIDXWEa">Playlist with loads of ComfyUI guides</a></li>
</ul>
<h1>Updating / Installing Custom Nodes</h1>
<ul>
<li>Use ComfyUI Manager to install and update custom nodes with ease!</li>
<li>Click "Install Missing Custom Nodes" to install any red nodes</li>
<li>Use the "search" feature to find any nodes</li>
<li><strong>Be sure to keep ComfyUI updated regularly</strong> - including all custom nodes. Old versions may result in errors appearing.</li>
</ul>
<p><img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/ComfyUI_Manager.png" width="720px"></p>
<h1>Custom Node List</h1>
<ul>
<li>Screenshots of my installed custom nodes for reference. Not all nodes are used in workflows.<br></li>
<li>Install custom nodes using ComfyUI manager<br></li>
<li>See the Troubleshooting section if you have errors with your local ComfyUI install<br> <img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/ComfyUI_Custom_1.png" width="720px"><br> <img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/ComfyUI_Custom_2.png" width="720px"><br> <img src="https://raw.githubusercontent.com/nerdyrodent/AVeryComfyNerd/main/ComfyUI_Custom_3.png" width="720px"><br></li>
</ul>
+ SJTU-IPADS/PowerInfer
+ 2023-12-24T01:27:38Z
+ tag:github.com,2023-12-24:/SJTU-IPADS/PowerInfer
+
+ <p>High-speed Large Language Model Serving on PCs with Consumer-grade GPUs</p><hr><h1>PowerInfer: Fast Large Language Model Serving with a Consumer-grade GPU</h1>
<h2>TL;DR</h2>
<p>PowerInfer is a CPU/GPU LLM inference engine leveraging <strong>activation locality</strong> for your device.</p>
<h2>Demo 🔥</h2>
<p><a href="https://github.com/SJTU-IPADS/PowerInfer/assets/34213478/fe441a42-5fce-448b-a3e5-ea4abb43ba23">https://github.com/SJTU-IPADS/PowerInfer/assets/34213478/fe441a42-5fce-448b-a3e5-ea4abb43ba23</a></p>
<p>PowerInfer v.s. llama.cpp on a single RTX 4090(24G) running Falcon(ReLU)-40B-FP16 with a 11x speedup!</p>
<p><sub>Both PowerInfer and llama.cpp were running on the same hardware and fully utilized VRAM on RTX 4090.</sub></p>
<h2>Abstract</h2>
<p>We introduce PowerInfer, a high-speed Large Language Model (LLM) inference engine on a personal computer (PC) equipped with a single consumer-grade GPU. The key underlying the design of PowerInfer is exploiting the high <strong>locality</strong> inherent in LLM inference, characterized by a power-law distribution in neuron activation.</p>
<p>This distribution indicates that a small subset of neurons, termed hot neurons, are consistently activated across inputs, while the majority, cold neurons, vary based on specific inputs. PowerInfer exploits such an insight to design a GPU-CPU hybrid inference engine: hot-activated neurons are preloaded onto the GPU for fast access, while cold-activated neurons are computed on the CPU, thus significantly reducing GPU memory demands and CPU-GPU data transfers. PowerInfer further integrates adaptive predictors and neuron-aware sparse operators, optimizing the efficiency of neuron activation and computational sparsity.</p>
<p>Evaluation shows that PowerInfer attains an average token generation rate of 13.20 tokens/s, with a peak of 29.08 tokens/s, across various LLMs (including OPT-175B) on a single NVIDIA RTX 4090 GPU, only 18% lower than that achieved by a top-tier server-grade A100 GPU. This significantly outperforms llama.cpp by up to 11.69x while retaining model accuracy.</p>
<h2>Features</h2>
<p>PowerInfer is a high-speed and easy-to-use inference engine for deploying LLMs locally.</p>
<p>PowerInfer is fast with:</p>
<ul>
<li><strong>Locality-centric design</strong>: Utilizes sparse activation and 'hot'/'cold' neuron concept for efficient LLM inference, ensuring high speed with lower resource demands.</li>
<li><strong>Hybrid CPU/GPU Utilization</strong>: Seamlessly integrates memory/computation capabilities of CPU and GPU for a balanced workload and faster processing.</li>
</ul>
<p>PowerInfer is flexible and easy to use with:</p>
<ul>
<li><strong>Easy Integration</strong>: Compatible with popular <a href="https://huggingface.co/SparseLLM">ReLU-sparse models</a>.</li>
<li><strong>Local Deployment Ease</strong>: Designed and deeply optimized for local deployment on consumer-grade hardware, enabling low-latency LLM inference and serving on a single GPU.</li>
<li><strong>Backward Compatibility</strong>: While distinct from llama.cpp, you can make use of most of <code>examples/</code> the same way as llama.cpp such as server and batched generation. PowerInfer also supports inference with llama.cpp's model weights for compatibility purposes, but there will be no performance gain.</li>
</ul>
<p>You can use these models with PowerInfer today:</p>
<ul>
<li>Falcon-40B</li>
<li>Llama2 family</li>
</ul>
<p>We have tested PowerInfer on the following platforms:</p>
<ul>
<li>x86-64 CPU (with AVX2 instructions) on Linux</li>
<li>x86-64 CPU and NVIDIA GPU on Linux</li>
<li>Apple M Chips on macOS (As we do not optimize for Mac, the performance improvement is not significant now.)</li>
</ul>
<p>And new features coming soon:</p>
<ul>
<li>Mistral-7B model</li>
<li>Metal backend for sparse inference on macOS</li>
</ul>
<h2>Getting Started</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/SJTU-IPADS/PowerInfer/main/#setup-and-installation">Installation</a></li>
<li><a href="https://raw.githubusercontent.com/SJTU-IPADS/PowerInfer/main/#model-weights">Model Weights</a></li>
</ul>
<h2>Setup and Installation</h2>
<h3>Get the Code</h3>
<pre><code class="language-bash">git clone https://github.com/SJTU-IPADS/PowerInfer
cd PowerInfer
pip install -r requirements.txt # install Python helpers' dependencies
</code></pre>
<h3>Build</h3>
<p>In order to build PowerInfer you have two different options. These commands are supposed to be run from the root directory of the project.</p>
<p>Using <code>CMake</code>(3.13+) on Linux or macOS:</p>
<ul>
<li>If you have an NVIDIA GPU:</li>
</ul>
<pre><code class="language-bash">cmake -S . -B build -DLLAMA_CUBLAS=ON
cmake --build build --config Release
</code></pre>
<ul>
<li>If you just CPU:</li>
</ul>
<pre><code class="language-bash">cmake -S . -B build
cmake --build build --config Release
</code></pre>
<h2>Model Weights</h2>
<p>PowerInfer models are stored in a special format called <em>PowerInfer GGUF</em> based on GGUF format, consisting of both LLM weights and predictor weights.</p>
<h3>Download PowerInfer GGUF via Hugging Face</h3>
<p>You can obtain PowerInfer GGUF weights at <code>*.powerinfer.gguf</code> as well as profiled model activation statistics for 'hot'-neuron offloading from each Hugging Face repo below.</p>
<table>
<thead>
<tr>
<th>Base Model</th>
<th>PowerInfer GGUF</th>
</tr>
</thead>
<tbody>
<tr>
<td>LLaMA(ReLU)-2-7B</td>
<td><a href="https://huggingface.co/PowerInfer/ReluLLaMA-7B-PowerInfer-GGUF">PowerInfer/ReluLLaMA-7B-PowerInfer-GGUF</a></td>
</tr>
<tr>
<td>LLaMA(ReLU)-2-13B</td>
<td><a href="https://huggingface.co/PowerInfer/ReluLLaMA-13B-PowerInfer-GGUF">PowerInfer/ReluLLaMA-13B-PowerInfer-GGUF</a></td>
</tr>
<tr>
<td>Falcon(ReLU)-40B</td>
<td><a href="https://huggingface.co/PowerInfer/ReluFalcon-40B-PowerInfer-GGUF">PowerInfer/ReluFalcon-40B-PowerInfer-GGUF</a></td>
</tr>
<tr>
<td>LLaMA(ReLU)-2-70B</td>
<td><a href="https://huggingface.co/PowerInfer/ReluLLaMA-70B-PowerInfer-GGUF">PowerInfer/ReluLLaMA-70B-PowerInfer-GGUF</a></td>
</tr>
</tbody>
</table>
<p>We suggest downloading/cloning the whole repo so PowerInfer can automatically make use of such directory structure for feature-complete model offloading:</p>
<pre><code>.
├── *.powerinfer.gguf (Unquantized PowerInfer model)
├── *.q4.powerinfer.gguf (INT4 quantized PowerInfer model, if available)
├── activation (Profiled activation statistics for fine-grained FFN offloading)
│ ├── activation_x.pt (Profiled activation statistics for layer x)
│ └── ...
├── *.[q4].powerinfer.gguf.generated.gpuidx (Generated GPU index at runtime for corresponding model)
</code></pre>
<h3>Convert from Original Model Weights + Predictor Weights</h3>
<p>Hugging Face limits single model weight to 50GiB. For unquantized models >= 40B, you can convert PowerInfer GGUF from the original model weights and predictor weights obtained from Hugging Face.</p>
<table>
<thead>
<tr>
<th>Base Model</th>
<th>Original Model</th>
<th>Predictor</th>
</tr>
</thead>
<tbody>
<tr>
<td>LLaMA(ReLU)-2-7B</td>
<td><a href="https://huggingface.co/SparseLLM/ReluLLaMA-7B">SparseLLM/ReluLLaMA-7B</a></td>
<td><a href="https://huggingface.co/PowerInfer/ReluLLaMA-7B-Predictor">PowerInfer/ReluLLaMA-7B-Predictor</a></td>
</tr>
<tr>
<td>LLaMA(ReLU)-2-13B</td>
<td><a href="https://huggingface.co/SparseLLM/ReluLLaMA-13B">SparseLLM/ReluLLaMA-13B</a></td>
<td><a href="https://huggingface.co/PowerInfer/ReluLLaMA-13B-Predictor">PowerInfer/ReluLLaMA-13B-Predictor</a></td>
</tr>
<tr>
<td>Falcon(ReLU)-40B</td>
<td><a href="https://huggingface.co/SparseLLM/ReluFalcon-40B">SparseLLM/ReluFalcon-40B</a></td>
<td><a href="https://huggingface.co/PowerInfer/ReluFalcon-40B-Predictor">PowerInfer/ReluFalcon-40B-Predictor</a></td>
</tr>
<tr>
<td>LLaMA(ReLU)-2-70B</td>
<td><a href="https://huggingface.co/SparseLLM/ReluLLaMA-70B">SparseLLM/ReluLLaMA-70B</a></td>
<td><a href="https://huggingface.co/PowerInfer/ReluLLaMA-70B-Predictor">PowerInfer/ReluLLaMA-70B-Predictor</a></td>
</tr>
</tbody>
</table>
<p>You can use the following command to convert the original model weights and predictor weights to PowerInfer GGUF:</p>
<pre><code class="language-bash"># make sure that you have done `pip install -r requirements.txt`
python convert.py --outfile /PATH/TO/POWERINFER/GGUF/REPO/MODELNAME.powerinfer.gguf /PATH/TO/ORIGINAL/MODEL /PATH/TO/PREDICTOR
# python convert.py --outfile ./ReluLLaMA-70B-PowerInfer-GGUF/llama-70b-relu.powerinfer.gguf ./SparseLLM/ReluLLaMA-70B ./PowerInfer/ReluLLaMA-70B-Predictor
</code></pre>
<p>For the same reason, we suggest keeping the same directory structure as PowerInfer GGUF repos after conversion.</p>
<h2>Inference</h2>
<p>For CPU-only and CPU-GPU hybrid inference with all available VRAM, you can use the following instructions to run PowerInfer:</p>
<pre><code class="language-bash">./build/bin/main -m /PATH/TO/MODEL -n $output_token_count -t $thread_num -p $prompt
# ./build/bin/main -m ./ReluFalcon-40B-PowerInfer-GGUF/falcon-40b-relu.q4.powerinfer.gguf -n 128 -t 8 -p "Once upon a time"
</code></pre>
<p>If you want to limit the VRAM usage of GPU:</p>
<pre><code class="language-bash">./build/bin/main -m /PATH/TO/MODEL -n $output_token_count -t $thread_num -p $prompt --vram-budget $vram_gb
# ./build/bin/main -m ./ReluLLaMA-7B-PowerInfer-GGUF/llama-7b-relu.powerinfer.gguf -n 128 -t 8 -p "Once upon a time" --vram-budget 8
</code></pre>
<p>Under CPU-GPU hybrid inference, PowerInfer will automatically offload all dense activation blocks to GPU, then split FFN and offload to GPU if possible.</p>
<h2>Quantization</h2>
<p>PowerInfer has optimized quantization support for INT4(<code>Q4_0</code>) models. You can use the following instructions to quantize PowerInfer GGUF model:</p>
<pre><code class="language-bash">./build/bin/quantize /PATH/TO/MODEL /PATH/TO/OUTPUT/QUANTIZED/MODEL Q4_0
# ./build/bin/quantize ./ReluFalcon-40B-PowerInfer-GGUF/falcon-40b-relu.powerinfer.gguf ./ReluFalcon-40B-PowerInfer-GGUF/falcon-40b-relu.q4.powerinfer.gguf Q4_0
</code></pre>
<p>Then you can use the quantized model for inference with PowerInfer with the same instructions as above.</p>
<h2>Evaluation</h2>
<p>We evaluated PowerInfer vs. llama.cpp on a single RTX 4090(24G) with a series of FP16 ReLU models under inputs of length 64, and the results are shown below. PowerInfer achieves up to 11x speedup on Falcon 40B and up to 3x speedup on Llama 2 70B.</p>
<p><img src="https://github.com/SJTU-IPADS/PowerInfer/assets/34213478/d700fa6c-77ba-462f-a2fc-3fd21c898f33" alt="github-eval-4090"> <sub>The X axis indicates the output length, and the Y axis represents the speedup compared with llama.cpp. The number above each bar indicates the end-to-end generation speed (total prompting + generation time / total tokens generated, in tokens/s).</sub></p>
<p>We also evaluated PowerInfer on a single RTX 2080Ti(11G) with INT4 ReLU models under inputs of length 8, and the results are illustrated in the same way as above. PowerInfer achieves up to 8x speedup on Falcon 40B and up to 3x speedup on Llama 2 70B.</p>
<p><img src="https://github.com/SJTU-IPADS/PowerInfer/assets/34213478/0fc1bfc4-aafc-4e82-a865-bec0143aff1a" alt="github-eval-2080ti-q4"></p>
<p>Please refer to our <a href="https://ipads.se.sjtu.edu.cn/_media/publications/powerinfer-20231219.pdf">paper</a> for more evaluation details.</p>
<h2>FAQs</h2>
<ol>
<li> <p>What if I encountered <code>CUDA_ERROR_OUT_OF_MEMORY</code>?</p>
<ul>
<li>You can try to run with <code>--reset-gpu-index</code> argument to rebuild the GPU index for this model to avoid any stale cache.</li>
<li>Due to our current implementation, model offloading might not be as accurate as expected. You can try with <code>--vram-budget</code> with a slightly lower value or <code>--disable-gpu-index</code> to disable FFN offloading.</li>
</ul> </li>
<li> <p>Does PowerInfer support mistral, original llama, Qwen, ...?</p>
<ul>
<li>Now we only support models with ReLU/ReGLU/Squared ReLU activation function. So we do not support these models now. It's worth mentioning that a <a href="https://arxiv.org/pdf/2310.04564.pdf">paper</a> has demonstrated that using the ReLU/ReGLU activation function has a negligible impact on convergence and performance.</li>
</ul> </li>
<li> <p>Why is there a noticeable downgrade in the performance metrics of our current ReLU model, particularly the 70B model?</p>
<ul>
<li>In contrast to the typical requirement of around 2T tokens for LLM training, our model's fine-tuning was conducted with only 5B tokens. This insufficient retraining has resulted in the model's inability to regain its original performance. We are actively working on updating to a more capable model, so please stay tuned.</li>
</ul> </li>
<li> <p>What if...</p>
<ul>
<li>Issues are welcomed! Please feel free to open an issue and attach your running environment and running parameters. We will try our best to help you.</li>
</ul> </li>
</ol>
<h2>TODOs</h2>
<p>We will release the code and data in the following order, please stay tuned!</p>
<ul>
<li><input type="checkbox" checked disabled> Release core code of PowerInfer, supporting Llama-2, Falcon-40B.</li>
<li><input type="checkbox" disabled> Support Mistral-7B</li>
<li><input type="checkbox" disabled> Support Windows</li>
<li><input type="checkbox" disabled> Support text-generation-webui</li>
<li><input type="checkbox" disabled> Release perplexity evaluation code</li>
<li><input type="checkbox" disabled> Support Metal for Mac</li>
<li><input type="checkbox" disabled> Release code for OPT models</li>
<li><input type="checkbox" disabled> Release predictor training code</li>
<li><input type="checkbox" checked disabled> Support online split for FFN network</li>
<li><input type="checkbox" disabled> Support Multi-GPU</li>
</ul>
<h2>Paper and Citation</h2>
<p>More technical details can be found in our <a href="https://ipads.se.sjtu.edu.cn/_media/publications/powerinfer-20231219.pdf">paper</a>.</p>
<p>If you find PowerInfer useful or relevant to your project and research, please kindly cite our paper:</p>
<pre><code class="language-bibtex">@misc{song2023powerinfer,
title={PowerInfer: Fast Large Language Model Serving with a Consumer-grade GPU},
author={Yixin Song and Zeyu Mi and Haotong Xie and Haibo Chen},
year={2023},
eprint={2312.12456},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
</code></pre>
<h2>Acknowledgement</h2>
<p>We are thankful for the easily modifiable operator library <a href="https://github.com/ggerganov/ggml">ggml</a> and execution runtime provided by <a href="https://github.com/ggerganov/llama.cpp">llama.cpp</a>. We also extend our gratitude to <a href="https://nlp.csai.tsinghua.edu.cn/">THUNLP</a> for their support of ReLU-based sparse models. We also appreciate the research of <a href="https://proceedings.mlr.press/v202/liu23am.html">Deja Vu</a>, which inspires PowerInfer.</p>
- solana-labs/solana-program-library
- 2023-12-23T01:23:42Z
- tag:github.com,2023-12-23:/solana-labs/solana-program-library
-
- <p>A collection of Solana programs maintained by Solana Labs</p><hr><h1>Solana Program Library</h1>
<p>The Solana Program Library (SPL) is a collection of on-chain programs targeting the <a href="https://medium.com/solana-labs/sealevel-parallel-processing-thousands-of-smart-contracts-d814b378192">Sealevel parallel runtime</a>. These programs are tested against Solana's implementation of Sealevel, solana-runtime, and some are deployed to Mainnet Beta. As others implement Sealevel, we will graciously accept patches to ensure the programs here are portable across all implementations.</p>
<p>For more information see the <a href="https://spl.solana.com">SPL documentation</a> and the <a href="https://solana-labs.github.io/solana-program-library/token/js/">Token TypeDocs</a>.</p>
<h2>Deployments</h2>
<p>Only a subset of programs within the Solana Program Library repo are deployed to the Solana Mainnet Beta. Currently, this includes:</p>
<table>
<thead>
<tr>
<th>Program</th>
<th>Version</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/token/program">token</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/token-v3.4.0">3.4.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/associated-token-account/program">associated-token-account</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/associated-token-account-v1.1.0">1.1.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/token/program-2022">token-2022</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/token-2022-v1.0.0">1.0.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/governance/program">governance</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/governance-v3.1.0">3.1.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/stake-pool/program">stake-pool</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/stake-pool-v1.0.0">1.0.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/account-compression/programs/account-compression">account-compression</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/account-compression-v0.1.3">0.1.3</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/shared-memory/program">shared-memory</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/commit/b40e0dd3fd6c0e509dc1e8dd3da0a6d609035bbd">1.0.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/feature-proposal/program">feature-proposal</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/feature-proposal-v1.0.0">1.0.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/name-service/program">name-service</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/name-service-v0.3.0">0.3.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/memo/program">memo</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/memo-v3.0.0">3.0.0</a></td>
</tr>
</tbody>
</table>
<p>In addition, one program is planned for deployment to Solana Mainnet Beta:</p>
<table>
<thead>
<tr>
<th>Program</th>
<th>Version</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/single-pool/program">single-pool</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/releases/tag/single-pool-v1.0.0">1.0.0</a></td>
</tr>
</tbody>
</table>
<h2>Audits</h2>
<p>Only a subset of programs within the Solana Program Library repo are audited. Currently, this includes:</p>
<table>
<thead>
<tr>
<th>Program</th>
<th>Last Audit Date</th>
<th>Version</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/token/program">token</a></td>
<td>2022-08-04 (Peer review)</td>
<td><a href="https://github.com/solana-labs/solana-program-library/commit/4fadd553e1c549afd1d62aeb5ffa7ef31d1999d1">4fadd55</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/associated-token-account/program">associated-token-account</a></td>
<td>2022-08-04 (Peer review)</td>
<td><a href="https://github.com/solana-labs/solana-program-library/commit/c00194d2257302f028f44a403c6dee95c0f9c3bc">c00194d</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/token/program-2022">token-2022</a></td>
<td><a href="https://github.com/solana-labs/security-audits/raw/master/spl/OtterSecToken2022Audit-2023-11-03.pdf">2023-11-03</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/e924132d65ba0896249fb4983f6f97caff15721a">e924132</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/stake-pool/program">stake-pool</a></td>
<td><a href="https://github.com/solana-labs/security-audits/raw/master/spl/NeodymeStakePoolAudit-2023-11-14.pdf">2023-11-14</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/commit/6ed7254d1a578ffbc2b091d28cb92b25e7cc511d">6ed7254</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/account-compression/programs/account-compression">account-compression</a></td>
<td><a href="https://github.com/solana-labs/security-audits/raw/master/spl/OtterSecAccountCompressionAudit-2022-12-03.pdf">2022-12-05</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/commit/6e81794">6e81794</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/shared-memory/program">shared-memory</a></td>
<td><a href="https://github.com/solana-labs/security-audits/raw/master/spl/KudelskiTokenSwapSharedMemAudit-2021-02-25.pdf">2021-02-25</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/commit/b40e0dd3fd6c0e509dc1e8dd3da0a6d609035bbd">b40e0dd</a></td>
</tr>
<tr>
<td><a href="https://github.com/solana-labs/solana-program-library/tree/master/single-pool/program">single-pool</a></td>
<td><a href="https://github.com/solana-labs/security-audits/raw/master/spl/NeodymeSinglePoolAudit-2023-08-08.pdf">2023-08-08</a></td>
<td><a href="https://github.com/solana-labs/solana-program-library/commit/735d7292e35d35101750a4452d2647bdbf848e8b">735d729</a></td>
</tr>
</tbody>
</table>
<p>All other programs may be updated from time to time. These programs are not audited, so fork and deploy them at your own risk. Here is the full list of unaudited programs:</p>
<ul>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/binary-option/program">binary-option</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/binary-oracle-pair/program">binary-oracle-pair</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/feature-proposal/program">feature-proposal</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/instruction-padding/program">instruction-padding</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/managed-token/program">managed-token</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/memo/program">memo</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/name-service/program">name-service</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/record/program">record</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/stateless-asks/program">stateless-asks</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/token-lending/program">token-lending</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/token-swap/program">token-swap</a></li>
<li><a href="https://github.com/solana-labs/solana-program-library/tree/master/token-upgrade/program">token-upgrade</a></li>
</ul>
<p>More information about the repository's security policy at <a href="https://github.com/solana-labs/solana-program-library/tree/master/SECURITY.md">SECURITY.md</a>.</p>
<p>The <a href="https://github.com/solana-labs/security-audits">security-audits repo</a> contains all past and present program audits.</p>
<h2>Program Packages</h2>
<table>
<thead>
<tr>
<th align="left">Package</th>
<th align="left">Description</th>
<th align="left">Version</th>
<th align="left">Docs</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><code>spl-token</code></td>
<td align="left">ERC20-like token program on Solana</td>
<td align="left"><a href="https://crates.io/crates/spl-token"><img src="https://img.shields.io/crates/v/spl-token" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-token"><img src="https://docs.rs/spl-token/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-token-2022</code></td>
<td align="left">Token program compatible with <code>spl-token</code>, with extensions</td>
<td align="left"><a href="https://crates.io/crates/spl-token-2022"><img src="https://img.shields.io/crates/v/spl-token-2022" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-token-2022"><img src="https://docs.rs/spl-token-2022/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-associated-token-account</code></td>
<td align="left">Stateless protocol defining a canonical "associated" token account for a wallet</td>
<td align="left"><a href="https://crates.io/crates/spl-associated-token-account"><img src="https://img.shields.io/crates/v/spl-associated-token-account" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-associated-token-account"><img src="https://docs.rs/spl-associated-token-account/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-governance</code></td>
<td align="left">DAO program using tokens for voting</td>
<td align="left"><a href="https://crates.io/crates/spl-governance"><img src="https://img.shields.io/crates/v/spl-governance" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-governance"><img src="https://docs.rs/spl-governance/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-account-compression</code></td>
<td align="left">Program for managing compressed accounts stored in an off-chain merkle tree</td>
<td align="left"><a href="https://crates.io/crates/spl-account-compression"><img src="https://img.shields.io/crates/v/spl-account-compression" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-account-compression"><img src="https://docs.rs/spl-account-compression/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-feature-proposal</code></td>
<td align="left">Program using tokens to vote on enabling Solana network features</td>
<td align="left"><a href="https://crates.io/crates/spl-feature-proposal"><img src="https://img.shields.io/crates/v/spl-feature-proposal" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-feature-proposal"><img src="https://docs.rs/spl-feature-proposal/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-noop</code></td>
<td align="left">Program that does nothing, used for logging instruction data</td>
<td align="left"><a href="https://crates.io/crates/spl-noop"><img src="https://img.shields.io/crates/v/spl-noop" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-noop"><img src="https://docs.rs/spl-noop/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-memo</code></td>
<td align="left">Program for logging signed memos on-chain</td>
<td align="left"><a href="https://crates.io/crates/spl-memo"><img src="https://img.shields.io/crates/v/spl-memo" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-memo"><img src="https://docs.rs/spl-memo/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-name-service</code></td>
<td align="left">Program for managing ownership of data on-chain</td>
<td align="left"><a href="https://crates.io/crates/spl-name-service"><img src="https://img.shields.io/crates/v/spl-name-service" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-name-service"><img src="https://docs.rs/spl-name-service/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-shared-memory</code></td>
<td align="left">Program for sharing data between programs</td>
<td align="left"><a href="https://crates.io/crates/spl-shared-memory"><img src="https://img.shields.io/crates/v/spl-shared-memory" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-shared-memory"><img src="https://docs.rs/spl-shared-memory/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-stake-pool</code></td>
<td align="left">Program for pooling stake accounts, managed by another entity</td>
<td align="left"><a href="https://crates.io/crates/spl-stake-pool"><img src="https://img.shields.io/crates/v/spl-stake-pool" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-stake-pool"><img src="https://docs.rs/spl-stake-pool/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-instruction-padding</code></td>
<td align="left">Program to padding to other instructions</td>
<td align="left"><a href="https://crates.io/crates/spl-instruction-padding"><img src="https://img.shields.io/crates/v/spl-instruction-padding" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-instruction-padding"><img src="https://docs.rs/spl-instruction-padding/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-concurrent-merkle-tree</code></td>
<td align="left">Library for on-chain representation of merkle tree</td>
<td align="left"><a href="https://crates.io/crates/spl-concurrent-merkle-tree"><img src="https://img.shields.io/crates/v/spl-concurrent-merkle-tree" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-concurrent-merkle-tree"><img src="https://docs.rs/spl-concurrent-merkle-tree/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-math</code></td>
<td align="left">Library for on-chain math</td>
<td align="left"><a href="https://crates.io/crates/spl-math"><img src="https://img.shields.io/crates/v/spl-math" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-math"><img src="https://docs.rs/spl-math/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-token-lending</code></td>
<td align="left">Over-collateralized lending program for tokens</td>
<td align="left"><a href="https://crates.io/crates/spl-token-lending"><img src="https://img.shields.io/crates/v/spl-token-lending" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-token-lending"><img src="https://docs.rs/spl-token-lending/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-token-swap</code></td>
<td align="left">AMM for trading tokens</td>
<td align="left"><a href="https://crates.io/crates/spl-token-swap"><img src="https://img.shields.io/crates/v/spl-token-swap" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-token-swap"><img src="https://docs.rs/spl-token-swap/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
<tr>
<td align="left"><code>spl-token-upgrade</code></td>
<td align="left">Protocol for burning one token type in exchange for another</td>
<td align="left"><a href="https://crates.io/crates/spl-token-upgrade"><img src="https://img.shields.io/crates/v/spl-token-upgrade" alt="Crates.io"></a></td>
<td align="left"><a href="https://docs.rs/spl-token-upgrade"><img src="https://docs.rs/spl-token-upgrade/badge.svg?sanitize=true" alt="Docs.rs"></a></td>
</tr>
</tbody>
</table>
<h2>CLI Packages</h2>
<table>
<thead>
<tr>
<th align="left">Package</th>
<th align="left">Description</th>
<th align="left">Version</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><code>spl-token-cli</code></td>
<td align="left">CLI for the token, token-2022, and associated-token-account programs</td>
<td align="left"><a href="https://crates.io/crates/spl-token-cli"><img src="https://img.shields.io/crates/v/spl-token-cli" alt="Crates.io"></a></td>
</tr>
<tr>
<td align="left"><code>spl-stake-pool-cli</code></td>
<td align="left">CLI for the stake-pool program</td>
<td align="left"><a href="https://crates.io/crates/spl-stake-pool-cli"><img src="https://img.shields.io/crates/v/spl-stake-pool-cli" alt="Crates.io"></a></td>
</tr>
<tr>
<td align="left"><code>spl-feature-proposal-cli</code></td>
<td align="left">CLI for the feature-proposal program</td>
<td align="left"><a href="https://crates.io/crates/spl-feature-proposal-cli"><img src="https://img.shields.io/crates/v/spl-feature-proposal-cli" alt="Crates.io"></a></td>
</tr>
<tr>
<td align="left"><code>spl-token-lending-cli</code></td>
<td align="left">CLI for the token-lending program</td>
<td align="left"><a href="https://crates.io/crates/spl-token-lending-cli"><img src="https://img.shields.io/crates/v/spl-token-lending-cli" alt="Crates.io"></a></td>
</tr>
<tr>
<td align="left"><code>spl-token-upgrade-cli</code></td>
<td align="left">CLI for the token-upgrade program</td>
<td align="left"><a href="https://crates.io/crates/spl-token-upgrade-cli"><img src="https://img.shields.io/crates/v/spl-token-upgrade-cli" alt="Crates.io"></a></td>
</tr>
</tbody>
</table>
<h2>JavaScript Packages</h2>
<table>
<thead>
<tr>
<th align="left">Package</th>
<th align="left">Description</th>
<th align="left">Version</th>
<th align="left">Docs</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><code>@solana/spl-token</code></td>
<td align="left">Bindings for the token, token-2022, and associated-token-account programs</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-token"><img src="https://img.shields.io/npm/v/@solana/spl-token.svg?sanitize=true" alt="npm"></a></td>
<td align="left"><a href="https://solana-labs.github.io/solana-program-library/token/js"><img src="https://img.shields.io/badge/docs-typedoc-blue" alt="Docs"></a></td>
</tr>
<tr>
<td align="left"><code>@solana/spl-governance</code></td>
<td align="left">Bindings for the governance program</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-governance"><img src="https://img.shields.io/npm/v/@solana/spl-governance.svg?sanitize=true" alt="npm"></a></td>
<td align="left">N/A</td>
</tr>
<tr>
<td align="left"><code>@solana/spl-account-compression</code></td>
<td align="left">Bindings for the account-compression program</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-account-compression"><img src="https://img.shields.io/npm/v/@solana/spl-account-compression.svg?sanitize=true" alt="npm"></a></td>
<td align="left"><a href="https://solana-labs.github.io/solana-program-library/account-compression/sdk/docs"><img src="https://img.shields.io/badge/docs-typedoc-blue" alt="Docs"></a></td>
</tr>
<tr>
<td align="left"><code>@solana/spl-memo</code></td>
<td align="left">Bindings for the memo program</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-memo"><img src="https://img.shields.io/npm/v/@solana/spl-memo.svg?sanitize=true" alt="npm"></a></td>
<td align="left">N/A</td>
</tr>
<tr>
<td align="left"><code>@solana/spl-name-service</code></td>
<td align="left">Bindings for the name-service program</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-name-service"><img src="https://img.shields.io/npm/v/@solana/spl-name-service.svg?sanitize=true" alt="npm"></a></td>
<td align="left">N/A</td>
</tr>
<tr>
<td align="left"><code>@solana/spl-stake-pool</code></td>
<td align="left">Bindings for the stake-pool program</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-stake-pool"><img src="https://img.shields.io/npm/v/@solana/spl-stake-pool.svg?sanitize=true" alt="npm"></a></td>
<td align="left">N/A</td>
</tr>
<tr>
<td align="left"><code>@solana/spl-token-lending</code></td>
<td align="left">Bindings for the token-lending program</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-token-lending"><img src="https://img.shields.io/npm/v/@solana/spl-token-lending.svg?sanitize=true" alt="npm"></a></td>
<td align="left">N/A</td>
</tr>
<tr>
<td align="left"><code>@solana/spl-token-swap</code></td>
<td align="left">Bindings for the token-swap program</td>
<td align="left"><a href="https://www.npmjs.com/package/@solana/spl-token-swap"><img src="https://img.shields.io/npm/v/@solana/spl-token-swap.svg?sanitize=true" alt="npm"></a></td>
<td align="left">N/A</td>
</tr>
</tbody>
</table>
<h2>Development</h2>
<h3>Environment Setup</h3>
<ol>
<li>Install the latest <a href="https://docs.solana.com/cli/install-solana-cli-tools">Solana tools</a>.</li>
<li>Install the latest <a href="https://rustup.rs/">Rust stable</a>. If you already have Rust, run <code>rustup update</code> to get the latest version.</li>
<li>Install the <code>libudev</code> development package for your distribution (<code>libudev-dev</code> on Debian-derived distros, <code>libudev-devel</code> on Redhat-derived).</li>
</ol>
<h3>Build</h3>
<h3>Build on-chain programs</h3>
<pre><code class="language-bash"># To build all on-chain programs
$ cargo build-sbf
# To build a specific on-chain program
$ cd <program_name>/program
$ cargo build-sbf
</code></pre>
<h3>Build clients</h3>
<pre><code class="language-bash"># To build all clients
$ cargo build
# To build a specific client
$ cd <program_name>/cli
$ cargo build
</code></pre>
<h3>Test</h3>
<p>Unit tests contained within all projects can be run with:</p>
<pre><code class="language-bash">$ cargo test # <-- runs host-based tests
$ cargo test-sbf # <-- runs BPF program tests
</code></pre>
<p>To run a specific program's tests, such as SPL Token:</p>
<pre><code class="language-bash">$ cd token/program
$ cargo test # <-- runs host-based tests
$ cargo test-sbf # <-- runs BPF program tests
</code></pre>
<p>Integration testing may be performed via the per-project .js bindings. See the <a href="https://raw.githubusercontent.com/solana-labs/solana-program-library/master/token/js">token program's js project</a> for an example.</p>
<h3>Common Issues</h3>
<p>Solutions to a few issues you might run into are mentioned here.</p>
<ol>
<li> <p><code>Failed to open: ../../deploy/spl_<program-name>.so</code></p> <p>Update your Rust and Cargo to the latest versions and re-run <code>cargo build-sbf</code> in the relevant <code><program-name></code> directory, or run it at the repository root to rebuild all on-chain programs.</p> </li>
<li> <p><a href="https://solana.stackexchange.com/q/3029/36">Error while loading shared libraries. (libssl.so.1.1)</a></p> <p>A working solution was mentioned <a href="https://solana.stackexchange.com/q/3029/36">here</a>. Install libssl.</p> <pre><code class="language-bash">wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1l-1ubuntu1.2_amd64.deb
</code></pre> </li>
<li> <p>CPU or Memory usage at 100%</p> <p>This is to be expected while building some of the programs in this library. The simplest solution is to add the <code>--jobs 1</code> flag to the build commands to limit the number of parallel jobs to 1 and check if that fixes the issue. Although this will mean much longer build times.</p> </li>
</ol>
<h3>Clippy</h3>
<pre><code class="language-bash">$ cargo clippy
</code></pre>
<h3>Coverage</h3>
<pre><code class="language-bash">$ ./coverage.sh # Help wanted! Coverage build currently fails on MacOS due to an XCode `grcov` mismatch...
</code></pre>
<h4>MacOS</h4>
<p>You may need to pin your grcov version, and then rustup with the apple-darwin nightly toolchain:</p>
<pre><code class="language-bash">$ cargo install grcov --version 0.6.1
$ rustup toolchain install nightly-x86_64-apple-darwin
</code></pre>
<h2>Release Process</h2>
<p>SPL programs are currently tagged and released manually. Each program is versioned independently of the others, with all new development occurring on master. Once a program is tested and deemed ready for release:</p>
<h3>Bump Version</h3>
<ul>
<li>Increment the version number in the program's Cargo.toml</li>
<li>Run <code>cargo build-sbf <program></code> to build binary. Note the location of the generated <code>spl_<program>.so</code> for attaching to the Github release.</li>
<li>Open a PR with these version changes and merge after passing CI.</li>
</ul>
<h3>Create Github tag</h3>
<p>Program tags are of the form <code><program>-vX.Y.Z</code>. Create the new tag at the version-bump commit and push to the solana-program-library repository, eg:</p>
<pre><code>$ git tag token-v1.0.0 b24bfe7
$ git push upstream --tags
</code></pre>
<h3>Publish Github release</h3>
<ul>
<li>Go to <a href="https://github.com/solana-labs/solana-program-library/releases">GitHub Releases UI</a></li>
<li>Click "Draft new release", and enter the new tag in the "Tag version" box.</li>
<li>Title the release "SPL
<program>
vX.Y.Z", complete the description, and attach the
<code>spl_<program>.so</code> binary
</program></li>
<li>Click "Publish release"</li>
</ul>
<h3>Publish to Crates.io</h3>
<p>Navigate to the program directory and run <code>cargo package</code> to test the build. Then run <code>cargo publish</code>.</p>
<h1>Disclaimer</h1>
<p>All claims, content, designs, algorithms, estimates, roadmaps, specifications, and performance measurements described in this project are done with the Solana Labs, Inc. (“SL”) best efforts. It is up to the reader to check and validate their accuracy and truthfulness. Furthermore nothing in this project constitutes a solicitation for investment.</p>
<p>Any content produced by SL or developer resources that SL provides, are for educational and inspiration purposes only. SL does not encourage, induce or sanction the deployment, integration or use of any such applications (including the code comprising the Solana blockchain protocol) in violation of applicable laws or regulations and hereby prohibits any such deployment, integration or use. This includes use of any such applications by the reader (a) in violation of export control or sanctions laws of the United States or any other applicable jurisdiction, (b) if the reader is located in or ordinarily resident in a country or territory subject to comprehensive sanctions administered by the U.S. Office of Foreign Assets Control (OFAC), or (c) if the reader is or is working on behalf of a Specially Designated National (SDN) or a person subject to similar blocking or denied party prohibitions.</p>
<p>The reader should be aware that U.S. export control and sanctions laws prohibit U.S. persons (and other persons that are subject to such laws) from transacting with persons in certain countries and territories or that are on the SDN list. Accordingly, there is a risk to individuals that other persons using any of the code contained in this repo, or a derivation thereof, may be sanctioned persons and that transactions with such persons would be a violation of U.S. export controls and sanctions law.</p>
+ electric-capital/crypto-ecosystems
+ 2023-12-24T01:27:38Z
+ tag:github.com,2023-12-24:/electric-capital/crypto-ecosystems
+
+ <p>A taxonomy for open source cryptocurrency, blockchain, and decentralized ecosystems</p><hr><p><strong>V1.1 UPDATE [12/20/23]:</strong> Read about the Crypto Ecosystems taxonomy's update to Version 1.1 <a href="https://github.com/electric-capital/crypto-ecosystems/releases/tag/1.1">here</a>.</p>
<h1>Crypto Ecosystems</h1>
<p><a href="https://github.com/electric-capital/crypto-ecosystems/raw/master/LICENSE">MIT license with attribution</a></p>
<p>🌲 Crypto Ecosystems is a taxonomy for sharing data around open source blockchain, Web3, cryptocurrency, and decentralized ecosystems and tying them to GitHub organizations and code repositories. All of the ecosystems are specified in <a href="https://github.com/toml-lang/toml">TOML</a> configuration files.</p>
<p>This repository is not complete, and hopefully it never is as there are new ecosystems and repositories created everyday.</p>
<h2>How to Contribute</h2>
<p>There's a couple of ways you can help grow this initiative.</p>
<h3>Option 1: Opening a Pull Request</h3>
<p>You can make any .toml file for an ecosystem under the <code>/data/ecosystems</code> directory or edit an existing one to help improve data around an ecosystem.</p>
<p>You can fork this repository and open a PR from the forked repo to this repo. If you are not sure how to do that, you can follow the tutorial <a href="https://www.loom.com/share/f23aab8c675940a9998b228ea1e179b7">in this video</a>.</p>
<h4>Data Format</h4>
<p>An example configuration file for the Bitcoin ecosystem looks like this:</p>
<pre><code class="language-toml"># Ecosystem Level Information
title = "Bitcoin"
# Sub Ecosystems
# These are the titles of other ecosystems in different .toml files in the /data/ecosystems directory
sub_ecosystems = [ "Lightning", "RSK Smart Bitcoin", "ZeroNet"]
# GitHub Organizations
# This is a list of links to associated GitHub organizations.
github_organizations = ["https://github.com/bitcoin", "https://github.com/bitcoin-core", "https://github.com/bitcoinj", "https://github.com
/btcsuite", "https://github.com/libbitcoin", "https://github.com/rust-bitcoin"]
# Repositories
# These are structs including a url and tags for a git repository. These URLs do not necessarily have to be on GitHub.
[[repo]]
url = "https://github.com/bitcoin/bitcoin"
tags = [ "Protocol"]
[[repo]]
url = "https://github.com/bitcoinbook/bitcoinbook"
tags = [ "Documentation"]
[[repo]]
url = "https://github.com/bitcoin-wallet/bitcoin-wallet"
tags = [ "Wallet"]
</code></pre>
<p>By specifying the data as evolving config files in git, we benefit from a long term, auditable database that is both human and machine readable.</p>
<h3>Option 2: Complete the Ecosystem Submission form</h3>
<p>If you are not a developer or you find making a commit too difficult, you can use this Airtable based alternative below.</p>
<p>You can <a href="https://airtable.com/shrN4vZMlBLm3Dap8">visit the form here</a>, fill it, submit it and we'll take care of the rest :)</p>
<h2>How to Give Attribution For Usage of the Electric Capital Crypto Ecosystems</h2>
<p>To use the Electric Capital Crypto Ecosystems Map, you will need an attribution.</p>
<p>Attribution needs to have 3 components:</p>
<ol>
<li>Source: “Electric Capital Crypto Ecosystems Mapping”</li>
<li>Link: <a href="https://github.com/electric-capital/crypto-ecosystems">https://github.com/electric-capital/crypto-ecosystems</a></li>
<li>Logo: <a href="https://drive.google.com/file/d/1DAX6wmcbtia7kaP5AaUWyg6t-ZEW9z22/view?usp=sharing">Link to logo</a></li>
</ol>
<p>Optional: Everyone in the crypto ecosystem benefits from additions to this repository. It is a help to everyone to include an ask to contribute next to your attribution.</p>
<p>Sample request language: "If you’re working in open source crypto, submit your repository here to be counted."</p>
<p><ins>Sample attribution</ins></p>
<p>Data Source: <a href="https://github.com/electric-capital/crypto-ecosystems">Electric Capital Crypto Ecosystems Mapping</a></p>
<p>If you’re working in open source crypto, submit your repository <a href="https://github.com/electric-capital/crypto-ecosystems">here</a> to be counted.</p>
<h2>How to Contribute (Step-by-Step Guide)</h2>
<p>There are three types of contributions you can make to this data set:</p>
<ol>
<li>Adding a new ecosystem (e.g. a new layer 1 blockchain)</li>
<li>Adding a new sub-ecosystem (e.g. a big organisation that has multiple repos within the above ecosystem)</li>
<li>Adding a new repo (e.g. an individual project within the ecosystem/sub-ecosystem) or organization</li>
</ol>
<p>This may sound confusing. It is perhaps even more confusing because whilst there are these different data sources/structures, all of them sit within one directory (data/ecosystems) as <code>.toml</code> files.</p>
<p>To make things easier, we've made the following roadmap for you to follow depending on which of the above 3 types of contributions you're trying to make.</p>
<h3>Option 1: Adding a new ecosystem (e.g. blockchain)</h3>
<p>If you're adding a totally new ecosystem that has no parents (e.g. Cosmos/Ethereum), then follow this path. You're most likely adding a new L1 blockchain, so let's take the fictitious example of a new chain called <code>EasyA Chain</code>. Follow these steps:</p>
<ol>
<li>Go to the <code>data/ecosystems</code> directory</li>
<li>Find the folder named the first letter of the ecosystem you're adding. Here, it's the letter <code>E</code> because our L1 is called <code>EasyA Chain</code>.</li>
<li>Open the folder</li>
<li>Inside the folder, create a new <code>.toml</code> file named after your L1 in kebab-case. Here, it will be called <code>easya-chain.toml</code>. The full path will now be <code>data/ecosystems/e/easya-chain.toml</code>.</li>
<li>Add the following 2 required fields:</li>
</ol>
<pre><code class="language-toml"># Required field number 1: Name of the ecosystem
title = "EasyA Chain"
# Required field number 2: List of associated GitHub organizations
github_organizations = ["https://github.com/EasyA-Tech"]
</code></pre>
<ol start="6">
<li>Make your PR! ✅</li>
</ol>
<p>Remember that this is a hierarchy. If you're adding a Cosmos appchain, therefore, you should be following Option 2 below (since it will be a sub-ecosystem of Cosmos).</p>
<p>It's important to note also that you <strong>do not</strong> need to add all the repos within your GitHub organizations to the <code>.toml</code> file as individual repos, because the system automatically fetches all repos within the organization.</p>
<p>You may see other ecosystems that have done this:</p>
<pre><code class="language-toml">title = "EasyA Chain"
github_organizations = ["https://github.com/EasyA-Tech"]
[[repo]]
url = "https://github.com/EasyA-Tech/Chain" # ❌ Don't do this ❌
tags = [ "Protocol"]
</code></pre>
<p>This is unnecessary. It adds clutter and makes it harder for reviewers to approve your PR. We will explain below when and why you should add repos to an ecosystem.</p>
<h3>Option 2: Adding a new sub-ecosystem</h3>
<p>If you're adding a new sub-ecosystem (in other words, it has a parent, like a blockchain or a layer 0), then follow these steps. Again, we'll be using the fictitious <code>EasyA Chain</code> L1 blockchain as an example. However, this time, we'll be adding the new <code>EasyA Community Wallet</code> sub-ecosystem to it.</p>
<ol>
<li>Go to the <code>data/ecosystems</code> directory</li>
<li>Find the folder named the first letter of the name of the ecosystem which the project you're adding is part of. Here, it's the letter <code>E</code> because our L1 is called <code>EasyA Chain</code>.</li>
<li>Open the folder. Here, it's the <code>E</code> folder.</li>
<li>Inside the folder, find the <code>.toml</code> file that has the ecosystem's name. Here, following our <code>EasyA Chain</code> example, it will be <code>easya-chain.toml</code>. The full path to the ecosystem will be <code>data/ecosystems/e/easya-chain.toml</code>.</li>
<li>Open this file. Inside the ecosystem file, you will see something that looks like this:</li>
</ol>
<pre><code class="language-toml">title = "EasyA Chain"
github_organizations = ["https://github.com/EasyA-Tech"]
</code></pre>
<ol start="6">
<li> <p>You will then need to do one of two things.</p>
<ol>
<li>If there are no sub-ecosystems yet, add your sub-ecosystem by adding the following line:</li>
</ol> <pre><code class="language-toml">sub_ecosystems = ["EasyA Community Wallet"]
</code></pre>
<ol start="2">
<li>If you see a line starting with <code>sub_ecosystems</code> already, then simple add your sub-ecosystem to the list:</li>
</ol> <pre><code class="language-toml">sub_ecosystems = ["Pre-existing Sub-Ecosystem", "EasyA Community Wallet"]
</code></pre> </li>
</ol>
<p>Overall, your file should then look something like this:</p>
<pre><code class="language-toml">title = "EasyA Chain"
sub_ecosystems = ["EasyA Community Wallet"] # This is the line we changed
github_organizations = ["https://github.com/EasyA-Tech"]
</code></pre>
<ol start="7">
<li>Once you've added your sub-ecosystem's name to the parent ecosystem file, go back to the <code>data/ecosystems</code> directory.</li>
<li>This time, find the folder that is the first letter of the name of the sub-ecosystem you're adding. Here, it also happens to be the letter <code>E</code> because our sub-ecosystem is called <code>EasyA Community Wallet</code>.</li>
<li>Open the folder. Here, it's the <code>E</code> folder.</li>
<li>Inside the folder, create the <code>.toml</code> file that has the sub-ecosystem's name. Here, following our <code>EasyA Community Wallet</code> example, it will be <code>easya-community-wallet.toml</code>. The full path to the ecosystem will be <code>data/ecosystems/e/easya-community-wallet.toml</code>.</li>
<li>Add the following 2 required fields:</li>
</ol>
<pre><code class="language-toml"># Required field number 1: Name of the sub-ecosystem
title = "EasyA Community Wallet"
# Required field number 2: List of associated GitHub organizations
github_organizations = ["https://github.com/EasyA-Community-Wallet"]
</code></pre>
<ol start="12">
<li>Make your PR! ✅</li>
</ol>
<p>Please remember here too that the same note as in Option 1 applies: the system automatically pulls in the repos from your sub-ecosystem GitHub organization, so you don't need to list them all out individually.</p>
<p>If you prefer videos, you can also see the above steps done live <a href="https://www.loom.com/share/f23aab8c675940a9998b228ea1e179b7">here</a>.</p>
<p>If you've been following along closely, you'll have noticed that the steps after adding the sub-ecosystem to the parent ecosystem are exactly the same a Option 1 (adding a totally new ecosystem that has no parents). That's because this taxonomy is based on ancestry. Any sub-ecosystem is basically just an ecosystem in its own right (it's not like a sub-ecosystem is any less valuable). The ecosystem and sub-ecosystem dichotomy is merely there so we can see the relationship between different ecosystems. You can keep adding sub-ecoystems to sub-ecosystems ad infinitum (forever).</p>
<h3>Option 3: Adding a new repo or organization</h3>
<p>The system automatically pulls in all repos listed under a GitHub organization within an ecosystem. For example, when the system sees the below ecosystem, it will automatically account for all the repos under the <code>EasyA-Tech</code> GitHub organization.</p>
<pre><code class="language-toml">title = "EasyA Chain"
github_organizations = ["https://github.com/EasyA-Tech"]
</code></pre>
<p>So don't worry! You don't need to add every single repo if it's already part of an organization that's in the data set.</p>
<p>To add a new organization, simply append its full GitHub URL to the list of organizations in the associated ecosystem. Let's take the example of adding an organization with the URL <code>https://github.com/EasyA-Community</code> as part of the <code>EasyA Chain</code> ecosystem.</p>
<p>You would follow these steps:</p>
<ol>
<li>Go to the <code>data/ecosystems</code> directory</li>
<li>Find the folder named the first letter of the name of the ecosystem which the organization you're adding is part of. Here, it's the letter <code>E</code> because our ecosystem is called <code>EasyA Chain</code>.</li>
<li>Open the folder. Here, it's the <code>E</code> folder.</li>
<li>Inside the folder, find the <code>.toml</code> file that has the ecosystem's name. Here, following our <code>EasyA Chain</code> example, it will be <code>easya-chain.toml</code>. The full path to the ecosystem will be <code>data/ecosystems/e/easya-chain.toml</code>.</li>
<li>Open this file. Inside the ecosystem file, you will see something that looks like this:</li>
</ol>
<pre><code class="language-toml">title = "EasyA Chain"
github_organizations = ["https://github.com/EasyA-Tech"]
</code></pre>
<ol start="6">
<li>Simply add your GitHub organization URL to the list. Here, ours is <code>https://github.com/EasyA-Community</code> so we'll add that:</li>
</ol>
<pre><code class="language-toml">title = "EasyA Chain"
github_organizations = ["https://github.com/EasyA-Tech", "https://github.com/EasyA-Community"]
</code></pre>
<ol start="7">
<li>Make your PR! ✅</li>
</ol>
<p>When, then, should you add repos? You only need to add a repo directly to an ecosystem if:</p>
<ol>
<li>✅ It is not owned by a GitHub organization already listed in an ecosystem file (those <code>.toml</code> files)</li>
<li>✅ It is not itself an ecosystem/sub-ecosystem (in which case you'd be adding it as an ecosystem)</li>
</ol>
<p>The types of projects that will commonly get added as individual repos are:</p>
<ul>
<li>Documentation</li>
<li>Wallets</li>
<li>Utility Libraries</li>
<li>Smaller protocols</li>
</ul>
<p>Usually these will be repos created by the community (so not already accounted for under the ecosystem/sub-ecosystem GitHub organization). Use that as a rough heuristic here. If the repo you're adding is actually one of many repos all in the same ecosystem, and in fact the organization only contributes to that one ecosystem, then you should almost certainly be adding your organization instead.</p>
<p>If you're happy that you should be adding this repo, then here's how to do it. Let's take the example of a community contributor with the GitHub handle <code>Platonicsocrates</code> who's created a helper library for the <code>EasyA Chain</code> but also contributes to other projects (so we shouldn't add their whole organization/profile). Their repo URL <code>https://github.com/platonicsocrates/easya-helpers</code>.</p>
<p>You would follow these steps to add it:</p>
<ol>
<li>Go to the <code>data/ecosystems</code> directory</li>
<li>Find the folder named the first letter of the name of the ecosystem which the repo you're adding is part of. Here, it's the letter <code>E</code> because our ecosystem is called <code>EasyA Chain</code>.</li>
<li>Open the folder. Here, it's the <code>E</code> folder.</li>
<li>Inside the folder, find the <code>.toml</code> file that has the ecosystem's name. Here, following our <code>EasyA Chain</code> example, it will be <code>easya-chain.toml</code>. The full path to the ecosystem will be <code>data/ecosystems/e/easya-chain.toml</code>.</li>
<li>Open this file. Inside the ecosystem file, you will see something that looks like this:</li>
</ol>
<pre><code class="language-toml">title = "EasyA Chain"
github_organizations = ["https://github.com/EasyA-Tech"]
</code></pre>
<ol start="6">
<li>Simply add the following three lines at the end of the <code>.toml</code> file:</li>
</ol>
<pre><code class="language-toml">[[repo]]
url = "https://github.com/platonicsocrates/easya-helpers" # Replace this URL with your repo url
tags = [ "Library"] # This line is optional
</code></pre>
<p>If there are already other repos in the ecosystem, just add the above as new lines (unlike adding organizations or sub-ecosystems, these aren't lists). For example, if the ecosystem already has a repo, we will just add it below as follows:</p>
<pre><code class="language-toml">
# Repo that's already been added
[[repo]]
url = "https://github.com/platonicsocrates/easya-js"
tags = [ "Library"]
# Our new repo
[[repo]]
url = "https://github.com/platonicsocrates/easya-helpers" # Replace this URL with your repo url
tags = [ "Library"] # This line is optional
</code></pre>
<ol start="7">
<li>Make your PR! ✅</li>
</ol>
<p>Thank you for contributing and for reading the contribution guide! ❤️</p>
- loco-rs/loco
- 2023-12-23T01:23:42Z
- tag:github.com,2023-12-23:/loco-rs/loco
-
- <p>🚂 🦀 The one-person framework for Rust for side-projects and startups</p><hr><p><a href="https://crates.io/crates/loco-rs"><img src="https://img.shields.io/crates/v/loco-rs.svg?sanitize=true" alt="Current Crates.io Version"></a> <a href="https://discord.gg/Npcwuvq6"><img src="https://img.shields.io/badge/discord-Join-us" alt="Discord channel"></a></p>
<h1>Welcome to Loco!</h1>
<center>
<img width="640" src="https://github.com/loco-rs/loco/raw/master/media/image.png">
</center>
<br>
<center>
<a href="https://loco.rs">loco.rs</a>
</center>
<br>
<br>
<p>Loco is "Rust on Rails".</p>
<p>Loco is strongly inspired by Rails. If you know Rails and Rust, you'll feel at home. If you only know Rails and new to Rust, you'll find Loco refreshing. We do not assume you know Rails.</p>
<p>To work with Loco, you need to know Rust to a beginner-moderate level. There are no crazy lifetime twisters and most of the development will be linear: request handling, workers, tasks, etc.</p>
<h2>Quick Start</h2>
<pre><code class="language-sh">$ cargo install loco-cli
</code></pre>
<p>Now you can create your new app (choose "Saas app").</p>
<pre><code class="language-sh">$ loco new
❯ App name? [myapp]:
❯ Saas app (with DB and user auth)
Stateless service (minimal, no db)
🚂 Loco app generated successfully in:
myapp
</code></pre>
<div class="infobox">
To configure a database , please run a local postgres database with
<code>loco:loco</code> and a db named
<code>loco_app</code>.
</div>
<p>You can use Docker to run a Postgres instance:</p>
<pre><code>$ docker run -d -p 5432:5432 -e POSTGRES_USER=loco -e POSTGRES_DB=loco_app -e POSTGRES_PASSWORD="loco" postgres:15.3-alpine
</code></pre>
<p>Now <code>cd</code> into your <code>myapp</code> and start your app:</p>
<pre><code>$ cd myapp
$ cargo loco start
Finished dev [unoptimized + debuginfo] target(s) in 21.63s
Running `target/debug/myapp start`
:
:
:
controller/app_routes.rs:203: [Middleware] Adding log trace id
▄ ▀
▀ ▄
▄ ▀ ▄ ▄ ▄▀
▄ ▀▄▄
▄ ▀ ▀ ▀▄▀█▄
▀█▄
▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▀▀█
██████ █████ ███ █████ ███ █████ ███ ▀█
██████ █████ ███ █████ ▀▀▀ █████ ███ ▄█▄
██████ █████ ███ █████ █████ ███ ████▄
██████ █████ ███ █████ ▄▄▄ █████ ███ █████
██████ █████ ███ ████ ███ █████ ███ ████▀
▀▀▀██▄ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ██▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
started on port 3000
</code></pre>
<h2>Project Status</h2>
<p>Loco is feature complete, but features are still being added rapidly.</p>
<h3>What can you build?</h3>
<ul>
<li>Stateless APIs</li>
<li>Complete SaaS products with user authentication</li>
<li>Purpose-built services such as ML inference endpoints</li>
<li>Full stack projects with separate frontend project integrated with Loco</li>
<li>Hobby projects full-stack with backend and HTML frontend</li>
</ul>
<h3>What's being done now?</h3>
<ul>
<li>View <a href="https://github.com/loco-rs/loco/issues">issues</a> for what we plan next and what we work on (you're welcome to submit PRs!)</li>
<li>View <a href="https://github.com/loco-rs/loco/raw/master/CHANGELOG.md">CHANGELOG</a> for what we already added</li>
</ul>
+ serverless/serverless
+ 2023-12-24T01:27:38Z
+ tag:github.com,2023-12-24:/serverless/serverless
+
+ <p>⚡ Serverless Framework – Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more! –</p><hr><p><a href="https://serverless.com"><img src="https://s3.amazonaws.com/assets.github.serverless/readme-serverless-framework.gif" alt="Serverless Application Framework AWS Lambda API Gateway"></a></p>
<p><a href="http://www.serverless.com"><img src="http://public.serverless.com/badges/v3.svg?sanitize=true" alt="serverless"></a> <a href="https://github.com/serverless/serverless/actions?query=workflow%3AIntegrate"><img src="https://github.com/serverless/serverless/workflows/Integrate/badge.svg?sanitize=true" alt="Build Status"></a> <a href="https://badge.fury.io/js/serverless"><img src="https://badge.fury.io/js/serverless.svg?sanitize=true" alt="npm version"></a> <a href="https://codecov.io/gh/serverless/serverless"><img src="https://codecov.io/gh/serverless/serverless/branch/master/graph/badge.svg?sanitize=true" alt="codecov"></a> <a href="https://gitter.im/serverless/serverless"><img src="https://img.shields.io/gitter/room/serverless/serverless.svg?sanitize=true" alt="gitter"></a> <a href="https://snyk.io/test/github/serverless/serverless"><img src="https://snyk.io/test/github/serverless/serverless/badge.svg?sanitize=true" alt="Known Vulnerabilities"></a> <a href="https://www.npmjs.com/package/serverless"><img src="https://img.shields.io/npm/l/serverless.svg?sanitize=true" alt="license"></a></p>
<p><a href="http://www.serverless.com">Website</a> • <a href="https://serverless.com/framework/docs/">Docs</a> • <a href="https://serverless.com/slack">Community Slack</a> • <a href="http://forum.serverless.com">Forum</a> • <a href="https://twitter.com/goserverless">Twitter</a> • <a href="https://www.meetup.com/pro/serverless/">Meetups</a></p>
<p><strong>The Serverless Framework</strong> – Build applications on AWS Lambda and other next-gen cloud services, that auto-scale and only charge you when they run. This lowers the total cost of running and operating your apps, enabling you to build more and manage less.</p>
<p>The Serverless Framework is a command-line tool with an easy and approachable YAML syntax to deploy both your code and cloud infrastructure needed to make tons of serverless application use-cases. It's a multi-language framework that supports Node.js, Typescript, Python, Go, Java, and more. It's also completely extensible via over 1,000 plugins which add more serverless use-cases and workflows to the Framework.</p>
<p>Actively maintained by <a href="https://www.serverless.com">Serverless Inc</a>.</p>
<h1>Contents</h1>
<ul>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#features">Features</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#quick-start">Quick Start</a></li>
<li><a href="https://github.com/serverless/plugins">Plugins</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#contributing">Contributing</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#community">Community</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#licensing">Licensing</a></li>
</ul>
<h1><a name="features"></a>Features</h1>
<ul>
<li><strong>Hyper-Productive</strong> - Build more and manage less with serverless architectures.</li>
<li><strong>Multiple Use-Cases</strong> - Choose from tons of efficient serverless use-cases (APIs, Scheduled Tasks, Event Handlers, Streaming Data Pipelines, Web Sockets & more).</li>
<li><strong>Infra & Code</strong> - Deploys both code and infrastructure together, resulting in out-of-the-box serverless apps.</li>
<li><strong>Easy</strong> - Enjoy simple syntax to safely deploy deploy AWS Lambda functions, event sources and more without being a cloud expert.</li>
<li><strong>Multi-Language</strong> - Supports Node.js, Python, Java, Go, C#, Ruby, Swift, Kotlin, PHP, Scala, & F#</li>
<li><strong>Full Lifecycle</strong> - Manages the lifecycle of your serverless architecture (build, deploy, update, monitor, troubleshoot).</li>
<li><strong>Multi-Domains</strong> - Group domains into Serverless Services for easy management of code, resources & processes, across large projects & teams.</li>
<li><strong>Multi-Environments</strong> - Built-in support for multiple stages (e.g. development, staging, production).</li>
<li><strong>Guardrails</strong> - Loaded with automation, optimization and best practices.</li>
<li><strong>Extensible</strong> - Extend or modify the Framework and its operations via Plugins.</li>
<li><strong>Plugin Ecosystem</strong> - Extend or modify the Framework and its operations via Plugins.</li>
<li><strong>Welcoming</strong> - A passionate and welcoming community!</li>
</ul>
<h1><a name="quick-start"></a>Quick Start</h1>
<p>Here's how to get started quickly, as well as some recommended development workflows.</p>
<h2>Installation</h2>
<p>Install <code>serverless</code> module via NPM:</p>
<pre><code class="language-bash">npm install -g serverless
</code></pre>
<p><em>If you don’t already have Node.js on your machine, <a href="https://nodejs.org/">install it first</a>. If you don't want to install Node or NPM, you can <a href="https://www.serverless.com/framework/docs/install-standalone">install <strong>serverless</strong> as a standalone binary</a>.</em></p>
<h2>Creating A Service</h2>
<p>To create your first project (known as a Serverless Framework "Service"), run the <code>serverless</code> command below, then follow the prompts.</p>
<pre><code class="language-bash"># Create a new serverless project
serverless
# Move into the newly created directory
cd your-service-name
</code></pre>
<p>The <code>serverless</code> command will guide you to:</p>
<ol>
<li>Create a new project</li>
<li>Configure your <a href="https://serverless.com/framework/docs/providers/aws/guide/credentials/">AWS credentials</a></li>
<li>Optionally set up a free Serverless Framework account with additional features.</li>
</ol>
<p>Your new serverless project will contain a <code>serverless.yml</code> file. This file features simple syntax for deploying infrastructure to AWS, such as AWS Lambda functions, infrastructure that triggers those functions with events, and additional infrastructure your AWS Lambda functions may need for various use-cases. You can learn more about this in the <a href="https://www.serverless.com/framework/docs/providers/aws/guide/intro">Core Concepts documentation</a>.</p>
<p>The <code>serverless</code> command will give you a variety of templates to choose from. If those do not fit your needs, check out the <a href="https://github.com/serverless/examples">project examples from Serverless Inc. and our community</a>. You can install any example by passing a GitHub URL using the <code>--template-url</code> option:</p>
<pre><code class="language-base">serverless --template-url=https://github.com/serverless/examples/tree/v3/...
</code></pre>
<p>Please note that you can use <code>serverless</code> or <code>sls</code> to run Serverless Framework commands.</p>
<h2>Deploying</h2>
<p>If you haven't done so already within the <code>serverless</code> command, you can deploy the project at any time by running:</p>
<pre><code class="language-bash">sls deploy
</code></pre>
<p>The deployed AWS Lambda functions and other essential information such as API Endpoint URLs will be displayed in the command output.</p>
<p>More details on deploying can be found <a href="https://www.serverless.com/framework/docs/providers/aws/guide/deploying">here</a>.</p>
<h2>Developing On The Cloud</h2>
<p>Many Serverless Framework users choose to develop on the cloud, since it matches reality and emulating Lambda locally can be complex. To develop on the cloud quickly, without sacrificing speed, we recommend the following workflow...</p>
<p>To deploy code changes quickly, skip the <code>serverless deploy</code> command which is much slower since it triggers a full AWS CloudFormation update. Instead, deploy code and configuration changes to individual AWS Lambda functions in seconds via the <code>deploy function</code> command, with <code>-f [function name in serverless.yml]</code> set to the function you want to deploy.</p>
<pre><code class="language-bash">sls deploy function -f my-api
</code></pre>
<p>More details on the <code>deploy function</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/deploy-function">here</a>.</p>
<p>To invoke your AWS Lambda function on the cloud, you can find URLs for your functions w/ API endpoints in the <code>serverless deploy</code> output, or retrieve them via <code>serverless info</code>. If your functions do not have API endpoints, you can use the <code>invoke</code> command, like this:</p>
<pre><code class="language-bash">sls invoke -f hello
# Invoke and display logs:
serverless invoke -f hello --log
</code></pre>
<p>More details on the <code>invoke</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke">here</a>.</p>
<p>To stream your logs while you work, use the <code>sls logs</code> command in a separate terminal window:</p>
<pre><code class="language-bash">sls logs -f [Function name in serverless.yml] -t
</code></pre>
<p>Target a specific function via the <code>-f</code> option and enable streaming via the <code>-t</code> option.</p>
<h2>Developing Locally</h2>
<p>Many Serverless Framework users rely on local emulation to develop more quickly. Please note, emulating AWS Lambda and other cloud services is never accurate and the process can be complex. We recommend the following workflow to develop locally...</p>
<p>Use the <code>invoke local</code> command to invoke your function locally:</p>
<pre><code class="language-bash">sls invoke local -f my-api
</code></pre>
<p>You can also pass data to this local invocation via a variety of ways. Here's one of them:</p>
<pre><code class="language-bash">serverless invoke local --function functionName --data '{"a":"bar"}'
</code></pre>
<p>More details on the <code>invoke local</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke-local">here</a></p>
<p>Serverless Framework also has a great plugin that allows you to run a server locally and emulate AWS API Gateway. This is the <code>serverless-offline</code> command.</p>
<p>More details on the <strong>serverless-offline</strong> plugins command can be found <a href="https://github.com/dherault/serverless-offline">here</a></p>
<h2>Monitoring, Secrets & Collaboration</h2>
<p>If you're looking for easy, out-of-the-box monitoring, secrets management and collaboration features, sign into the Serverless Framework Dashboard. It's free!</p>
<pre><code class="language-bash">sls login
</code></pre>
<h2>Remove your service</h2>
<p>If you want to delete your service, run <code>remove</code>. This will delete all the AWS resources created by your project and ensure that you don't incur any unexpected charges. It will also remove the service from Serverless Dashboard.</p>
<pre><code class="language-bash">sls remove
</code></pre>
<p>More details on the <code>remove</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/remove">here</a>.</p>
<h2>What's Next</h2>
<p>Here are some helpful resources for continuing with the Serverless Framework:</p>
<ul>
<li><a href="https://www.serverless.com/framework/docs/providers/aws/guide/intro">Study Serverless Framework's core concepts</a></li>
<li><a href="https://github.com/serverless/examples">Get inspiration from these Serverless Framework templates</a></li>
<li><a href="https://www.serverless.com/framework/docs/providers/aws/guide/events">Discover all of the events that can trigger Lambda functions</a></li>
<li><a href="https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml">Bookmark Serverless Framework's <code>serverless.yml</code> guide</a></li>
<li><a href="https://www.serverless.com/plugins">Search the plugins registry to extend Serverless Framework</a></li>
</ul>
<h1><a name="contributing"></a>Contributing</h1>
<p>We love our contributors! Please read our <a href="https://raw.githubusercontent.com/serverless/serverless/main/CONTRIBUTING.md">Contributing Document</a> to learn how you can start working on the Framework yourself.</p>
<p>Check out our <a href="https://github.com/serverless/serverless/labels/help%20wanted">help wanted</a> or <a href="https://github.com/serverless/serverless/labels/good%20first%20issue">good first issue</a> labels to find issues we want to move forward on with your help.</p>
<h1><a name="community"></a>Community</h1>
<ul>
<li><a href="https://twitter.com/goserverless">Twitter</a></li>
<li><a href="https://serverless.com/slack">Community Slack</a></li>
<li><a href="http://www.meetup.com/serverless/">Serverless Meetups</a></li>
<li><a href="http://stackoverflow.com/questions/tagged/serverless-framework">Stackoverflow</a></li>
<li><a href="https://www.facebook.com/serverless">Facebook</a></li>
<li><a href="mailto:hello@serverless.com">Contact Us</a></li>
</ul>
<h1><a name="licensing"></a>Licensing</h1>
<p>Serverless is licensed under the <a href="https://raw.githubusercontent.com/serverless/serverless/main/LICENSE.txt">MIT License</a>.</p>
<p>All files located in the node_modules and external directories are externally maintained libraries used by this software which have their own licenses; we recommend you read them, as their terms may differ from the terms in the MIT License.</p>
\ No newline at end of file
diff --git a/all/weekly/index.xml b/all/weekly/index.xml
new file mode 100644
index 00000000000..c5f0f18127a
--- /dev/null
+++ b/all/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub All Languages Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:04Z
+ Weekly Trending of All Languages in GitHub
+
+
+ localsend/localsend
+ 2023-12-24T01:45:04Z
+ tag:github.com,2023-12-24:/localsend/localsend
+
+ <p>An open-source cross-platform alternative to AirDrop</p><hr><h1>LocalSend</h1>
<p><a href="https://github.com/localsend/localsend/actions/workflows/ci.yml"><img src="https://github.com/localsend/localsend/actions/workflows/ci.yml/badge.svg?sanitize=true" alt="CI status"></a></p>
<p><a href="https://localsend.org">Homepage</a> • <a href="https://discord.gg/GSRWmQNP87">Discord</a> • <a href="https://github.com/localsend/localsend">GitHub</a> • <a href="https://codeberg.org/localsend/localsend">Codeberg</a></p>
<p><a href="https://raw.githubusercontent.com/localsend/localsend/main/README_ZH.md">中文</a></p>
<p>LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.</p>
<ul>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#about">About</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#screenshots">Screenshots</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#download">Download</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#how-it-works">How it Works</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#getting-started">Getting Started</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#contributing">Contributing</a>
<ul>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#translation">Translation</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#bug-fixes-and-improvements">Bug fixes and improvements</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#building">Building</a>
<ul>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#android">Android</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#ios">iOS</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#macos">macOS</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#windows">Windows</a></li>
<li><a href="https://raw.githubusercontent.com/localsend/localsend/main/#linux">Linux</a></li>
</ul> </li>
</ul>
<h2>About</h2>
<p>LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn't require an internet connection or third-party servers, making it a fast and reliable solution for local communication.</p>
<h2>Screenshots</h2>
<p><img src="https://localsend.org/img/screenshot-iphone.webp" alt="iPhone screenshot" height="300"> <img src="https://localsend.org/img/screenshot-pc.webp" alt="PC screenshot" height="300"></p>
<h2>Download</h2>
<p>It is recommended to download the app either from an app store or from a package manager because the app does not have an auto-update.</p>
<table>
<thead>
<tr>
<th>Windows</th>
<th>macOS</th>
<th>Linux</th>
<th>Android</th>
<th>iOS</th>
<th>Fire OS</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/microsoft/winget-pkgs/tree/master/manifests/l/LocalSend/LocalSend">Winget</a></td>
<td><a href="https://apps.apple.com/us/app/localsend/id1661733229">App Store</a></td>
<td><a href="https://flathub.org/apps/details/org.localsend.localsend_app">Flathub</a></td>
<td><a href="https://play.google.com/store/apps/details?id=org.localsend.localsend_app">Play Store</a></td>
<td><a href="https://apps.apple.com/us/app/localsend/id1661733229">App Store</a></td>
<td><a href="https://www.amazon.com/dp/B0BW6MP732">Amazon</a></td>
</tr>
<tr>
<td><a href="https://scoop.sh/#/apps?s=0&d=1&o=true&q=localsend&id=fb88113be361ca32c0dcac423cb4afdeda0b0c66">Scoop</a></td>
<td><a href="https://github.com/localsend/homebrew-localsend">Homebrew</a></td>
<td><a href="https://aur.archlinux.org/packages/localsend-bin">AUR</a></td>
<td><a href="https://f-droid.org/packages/org.localsend.localsend_app">F-Droid</a></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="https://community.chocolatey.org/packages/localsend">Chocolatey</a></td>
<td><a href="https://github.com/localsend/localsend/releases/latest">DMG Installer</a></td>
<td><a href="https://search.nixos.org/packages?show=localsend">NixOS</a></td>
<td><a href="https://github.com/localsend/localsend/releases/latest">APK</a></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="https://github.com/localsend/localsend/releases/latest">MSIX Installer</a></td>
<td></td>
<td><a href="https://github.com/localsend/localsend/releases/latest">TAR</a></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="https://github.com/localsend/localsend/releases/latest">EXE Installer</a></td>
<td></td>
<td><a href="https://github.com/localsend/localsend/releases/latest">DEB</a></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="https://github.com/localsend/localsend/releases/latest">Portable ZIP</a></td>
<td></td>
<td><a href="https://github.com/localsend/localsend/releases/latest">AppImage</a></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>Read more about <a href="https://github.com/localsend/localsend/raw/main/CONTRIBUTING.md#distribution">distribution channels</a>.</p>
<h2>Setup</h2>
<p>In most cases, LocalSend should work out of the box. However, if you are having trouble sending or receiving files, you may need to configure your firewall to allow LocalSend to communicate over your local network.</p>
<table>
<thead>
<tr>
<th>Traffic Type</th>
<th>Protocol</th>
<th>Port</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Incoming</td>
<td>TCP, UDP</td>
<td>53317</td>
<td>Allow</td>
</tr>
<tr>
<td>Outgoing</td>
<td>TCP, UDP</td>
<td>Any</td>
<td>Allow</td>
</tr>
</tbody>
</table>
<p>Also make sure to disable AP isolation on your router. It should be usually disabled by default but some routers may have it enabled (especially guest networks).</p>
<p><strong>Portable Mode</strong></p>
<p>(Introduced in v1.13.0)</p>
<p>Create a file named <code>settings.json</code> located in the same directory as the executable. This file can be empty. The app will use this file to store settings instead of the default location.</p>
<h2>How it Works</h2>
<p>LocalSend uses a secure communication protocol that allows devices to communicate with each other using a REST API. All data is sent securely over HTTPS, and the TLS/SSL certificate is generated on the fly on each device, ensuring maximum security.</p>
<p>For more information on the LocalSend Protocol, see the <a href="https://github.com/localsend/protocol">documentation</a>.</p>
<h2>Getting Started</h2>
<p>To compile LocalSend from the source code, follow these steps:</p>
<ol>
<li>Install <a href="https://flutter.dev">Flutter</a>.</li>
<li>Clone the LocalSend repository.</li>
<li>Run <code>cd app</code> to enter the app directory.</li>
<li>Run <code>flutter pub get</code> to download dependencies.</li>
<li>Run <code>flutter run</code> to start the app.</li>
</ol>
<p>The issue may be caused by a mismatch between the required Flutter version and the installed Flutter version.</p>
<p>LocalSend uses <a href="https://fvm.app">fvm</a> to manage the project Flutter version (specified in <a href="https://raw.githubusercontent.com/localsend/localsend/main/.fvm/fvm_config.json">.fvm/fvm_config.json</a>). After you install it, run <code>fvm flutter</code> instead of <code>flutter</code>.</p>
<h2>Contributing</h2>
<p>We welcome contributions from anyone interested in helping improve LocalSend. If you'd like to contribute, there are a few ways to get involved:</p>
<h3>Translation</h3>
<p>You can help translate this app to other languages!</p>
<ol>
<li>Fork this repository</li>
<li>Choose one
<ul>
<li>Add missing translations in existing languages: Only update <code>_missing_translations_<locale>.json</code> in <a href="https://github.com/localsend/localsend/tree/main/app/assets/i18n">app/assets/i18n</a></li>
<li>Fix existing translations: Update <code>strings_<locale>.i18n.json</code> in <a href="https://github.com/localsend/localsend/tree/main/app/assets/i18n">app/assets/i18n</a></li>
<li>Add new languages: Create a new file; see also: <a href="https://saimana.com/list-of-country-locale-code/">locale codes</a>.</li>
</ul> </li>
<li>Optional: Re-run this app
<ol>
<li>Run <code>cd app</code> to enter the app directory.</li>
<li>Make sure you have <a href="https://raw.githubusercontent.com/localsend/localsend/main/#getting-started">run</a> this app once.</li>
<li>Update translations via <code>flutter pub run slang</code></li>
<li>Run the app via <code>flutter run</code></li>
<li>Open a pull request</li>
</ol> </li>
</ol>
<p><strong><em>Take note:</em> Fields decorated with <code>@</code> are not meant to be translated; they are not used in the app in any way, being merely informative text about the file or to give context to the translator.</strong></p>
<h3>Bug fixes and improvements</h3>
<ul>
<li><strong>Bug Fixes:</strong> If you find a bug, please create a pull request with a clear description of the issue and how to fix it.</li>
<li><strong>Improvements:</strong> Have an idea for how to improve LocalSend? Please create an issue first to discuss why the improvement is needed.</li>
</ul>
<p>For more information, see the <a href="https://github.com/localsend/localsend/raw/main/CONTRIBUTING.md">contributing guide</a>.</p>
<h2>Building</h2>
<p>These commands are intended for maintainers only.</p>
<h3>Android</h3>
<p>Traditional APK</p>
<pre><code class="language-bash">flutter build apk
</code></pre>
<p>AppBundle for Google Play</p>
<pre><code class="language-bash">flutter build appbundle
</code></pre>
<h3>iOS</h3>
<pre><code class="language-bash">flutter build ipa
</code></pre>
<h3>macOS</h3>
<pre><code class="language-bash">flutter build macos
</code></pre>
<h3>Windows</h3>
<p><strong>Traditional</strong></p>
<pre><code class="language-bash">flutter build windows
</code></pre>
<p><strong>Local MSIX App</strong></p>
<pre><code class="language-bash">flutter pub run msix:create
</code></pre>
<p><strong>Store ready</strong></p>
<pre><code class="language-bash">flutter pub run msix:create --store
</code></pre>
<h3>Linux</h3>
<p><strong>Traditional</strong></p>
<pre><code class="language-bash">flutter build linux
</code></pre>
<p><strong>AppImage</strong></p>
<pre><code class="language-bash">appimage-builder --recipe AppImageBuilder.yml
</code></pre>
<p><strong>Snap</strong></p>
<p>Feel free to open a pull request. There is a <code>snap</code> branch to play with.</p>
<h2>Contributors</h2>
<a href="https://github.com/localsend/localsend/graphs/contributors"> <img src="https://contrib.rocks/image?repo=localsend/localsend" alt="Localsend Contributors"> </a>
+
+
+ a-h/templ
+ 2023-12-24T01:45:04Z
+ tag:github.com,2023-12-24:/a-h/templ
+
+ <p>A language for writing HTML user interfaces in Go.</p><hr><p><img src="https://github.com/a-h/templ/raw/main/templ.png" alt="templ"></p>
<h2>A HTML templating language for Go that has great developer tooling.</h2>
<p><img src="https://raw.githubusercontent.com/a-h/templ/main/ide-demo.gif" alt="templ"></p>
<h2>Documentation</h2>
<p>See user documentation at <a href="https://templ.guide">https://templ.guide</a></p>
<p align="center"> <a href="https://pkg.go.dev/github.com/a-h/templ"><img src="https://pkg.go.dev/badge/github.com/a-h/templ.svg?sanitize=true" alt="Go Reference"></a> <a href="https://xcfile.dev"><img src="https://xcfile.dev/badge.svg?sanitize=true" alt="xc compatible"></a> <a href="https://raw.githack.com/wiki/a-h/templ/coverage.html"><img src="https://github.com/a-h/templ/wiki/coverage.svg?sanitize=true" alt="Go Coverage"></a> <a href="https://goreportcard.com/report/github.com/a-h/templ"><img src="https://goreportcard.com/badge/github.com/a-h/templ" alt="Go Report Card"> </a></p>
<h2><a href="https://goreportcard.com/report/github.com/a-h/templ">Tasks</a></h2>
<a href="https://goreportcard.com/report/github.com/a-h/templ"> <h3>build</h3> <p>Build a local version.</p> <pre><code class="language-sh">go run ./get-version > .version
cd cmd/templ
go build
</code></pre> <h3>install-snapshot</h3> <p>Build and install current version.</p> <pre><code class="language-sh"># Remove templ from the non-standard ~/bin/templ path
# that this command previously used.
rm -f ~/bin/templ
# Clear LSP logs.
rm -f cmd/templ/lspcmd/*.txt
# Update version.
go run ./get-version > .version
# Install to $GOPATH/bin or $HOME/go/bin
cd cmd/templ && go install
</code></pre> <h3>build-snapshot</h3> <p>Use goreleaser to build the command line binary using goreleaser.</p> <pre><code class="language-sh">goreleaser build --snapshot --clean
</code></pre> <h3>generate</h3> <p>Run templ generate using local version.</p> <pre><code class="language-sh">go run ./cmd/templ generate -include-version=false
</code></pre> <h3>test</h3> <p>Run Go tests.</p> <pre><code class="language-sh">go run ./get-version > .version
go run ./cmd/templ generate -include-version=false
go test ./...
</code></pre> <h3>test-cover</h3> <p>Run Go tests.</p> <pre><code class="language-sh"># Create test profile directories.
mkdir -p coverage/fmt
mkdir -p coverage/generate
mkdir -p coverage/unit
# Build the test binary.
go build -cover -o ./coverage/templ-cover ./cmd/templ
# Run the covered generate command.
GOCOVERDIR=coverage/fmt ./coverage/templ-cover fmt .
GOCOVERDIR=coverage/generate ./coverage/templ-cover generate -include-version=false
# Run the unit tests.
go test -cover ./... -args -test.gocoverdir="$PWD/coverage/unit"
# Display the combined percentage.
go tool covdata percent -i=./coverage/fmt,./coverage/generate,./coverage/unit
# Generate a text coverage profile for tooling to use.
go tool covdata textfmt -i=./coverage/fmt,./coverage/generate,./coverage/unit -o coverage.out
# Print total
go tool cover -func coverage.out | grep total
</code></pre> <h3>benchmark</h3> <p>Run benchmarks.</p> <pre><code class="language-sh">go run ./cmd/templ generate -include-version=false && go test ./... -bench=. -benchmem
</code></pre> <h3>fmt</h3> <p>Format all Go and templ code.</p> <pre><code class="language-sh">gofmt -s -w .
go run ./cmd/templ fmt .
</code></pre> <h3>lint</h3> <pre><code class="language-sh">golangci-lint run --verbose
</code></pre> <h3>release</h3> <p>Create production build with goreleaser.</p> <pre><code class="language-sh">if [ "${GITHUB_TOKEN}" == "" ]; then echo "No github token, run:"; echo "export GITHUB_TOKEN=`pass github.com/goreleaser_access_token`"; exit 1; fi
./push-tag.sh
goreleaser --clean
</code></pre> <h3>docs-run</h3> <p>Run the development server.</p> <p>Directory: docs</p> <pre><code class="language-sh">npm run start
</code></pre> <h3>docs-build</h3> <p>Build production docs site.</p> <p>Directory: docs</p> <pre><code class="language-sh">npm run build
</code></pre> </a>
+
+
+ gkd-kit/gkd
+ 2023-12-24T01:45:04Z
+ tag:github.com,2023-12-24:/gkd-kit/gkd
+
+ <p>基于 无障碍 + 高级选择器 + 订阅规则 的自定义屏幕点击 Android APP</p><hr><h1>gkd</h1>
<p>基于 <strong>无障碍</strong> + <strong>高级选择器</strong> + <strong>订阅规则</strong> 的自定义屏幕点击 APP</p>
<h2>安装</h2>
<ul>
<li><a href="https://github.com/gkd-kit/gkd/releases">releases</a></li>
</ul>
<h2>功能</h2>
<p>基于 <a href="https://github.com/gkd-kit/selector">高级选择器</a> + <a href="https://github.com/gkd-kit/subscription">订阅规则</a> + <a href="https://github.com/gkd-kit/inspect">快照审查</a>, 它可以实现</p>
<ul>
<li>点击跳过任意开屏广告/点击关闭应用内部任意弹窗广告, 如关闭百度贴吧帖子广告卡片/知乎回答底部推荐广告卡片</li>
<li>一些快捷操作, 如微信电脑登录自动同意/微信扫描登录自动同意/微信自动领取红包</li>
</ul>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/be0c270e-7074-42c1-8397-23ecf8a71a8b" alt="img"></td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/396bb5d6-fa97-48f8-bcaa-d250ba5a597f" alt="img"></td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/98024866-7d4c-4034-9993-78fb2ad975c0" alt="img"></td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/c20ba677-d801-439c-9813-62442ca45222" alt="img"></td>
</tr>
<tr>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/d941c828-ea5c-4f65-9feb-bda40a2a5569" alt="img"></td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/821024c8-e852-4417-bc64-126a1c766971" alt="img"></td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/b619e7c6-6c05-4a3d-b9b0-ec51371f5d18" alt="img"></td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/85b31e8f-5580-4650-b5a8-132a159a762a" alt="img"></td>
</tr>
</tbody>
</table>
<h2>效果</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://github.com/gkd-kit/subscription/assets/38517192/32cfda78-b2e1-456c-8d85-bfb2bc4683aa" alt="image"> 微信自动领取红包</td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec0e9465-13d2-422b-97e2-644357ea564b" alt="image"> 关闭微信朋友圈广告</td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/cd4554f3-dd9f-431b-8e6d-6cfe7ac430ec" alt="image"> 关闭酷安字节 SDK 广告</td>
<td><img src="https://github.com/gkd-kit/gkd/assets/38517192/576a7a6d-5196-4184-8b24-980434dfb15a" alt="image"> 关闭贴吧开屏广告及内部广告</td>
</tr>
</tbody>
</table>
<h2>LICENSE</h2>
<p>本项目使用 <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPL-v3</a> 协议开源</p>
<h2>Star History</h2>
<p><a href="https://star-history.com/#gkd-kit/gkd&Date"><img src="https://api.star-history.com/svg?repos=gkd-kit/gkd&type=Date" alt="Star History Chart"></a></p>
+
+
\ No newline at end of file
diff --git a/alloy/daily/index.xml b/alloy/daily/index.xml
index a3c29147dd8..019bda0b2c4 100644
--- a/alloy/daily/index.xml
+++ b/alloy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Alloy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:30Z
+ 2023-12-24T01:28:19Z
Daily Trending of Alloy in GitHub
\ No newline at end of file
diff --git a/alloy/weekly/index.xml b/alloy/weekly/index.xml
new file mode 100644
index 00000000000..24c6662ecf2
--- /dev/null
+++ b/alloy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Alloy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:27Z
+ Weekly Trending of Alloy in GitHub
+
+
\ No newline at end of file
diff --git a/alpine-abuild/daily/index.xml b/alpine-abuild/daily/index.xml
index 72457fd7ff7..dab201aef04 100644
--- a/alpine-abuild/daily/index.xml
+++ b/alpine-abuild/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Alpine Abuild Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:28Z
+ 2023-12-24T01:28:20Z
Daily Trending of Alpine Abuild in GitHub
\ No newline at end of file
diff --git a/alpine-abuild/weekly/index.xml b/alpine-abuild/weekly/index.xml
new file mode 100644
index 00000000000..397c82d7294
--- /dev/null
+++ b/alpine-abuild/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Alpine Abuild Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:27Z
+ Weekly Trending of Alpine Abuild in GitHub
+
+
\ No newline at end of file
diff --git a/altium-designer/daily/index.xml b/altium-designer/daily/index.xml
index dbe250793e0..960a0b6bcb6 100644
--- a/altium-designer/daily/index.xml
+++ b/altium-designer/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Altium Designer Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:30Z
+ 2023-12-24T01:28:17Z
Daily Trending of Altium Designer in GitHub
\ No newline at end of file
diff --git a/altium-designer/weekly/index.xml b/altium-designer/weekly/index.xml
new file mode 100644
index 00000000000..e0b5b2b3378
--- /dev/null
+++ b/altium-designer/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Altium Designer Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:25Z
+ Weekly Trending of Altium Designer in GitHub
+
+
\ No newline at end of file
diff --git a/ampl/daily/index.xml b/ampl/daily/index.xml
index a9640f317e0..3159afbd5e5 100644
--- a/ampl/daily/index.xml
+++ b/ampl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AMPL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:34Z
+ 2023-12-24T01:28:23Z
Daily Trending of AMPL in GitHub
\ No newline at end of file
diff --git a/ampl/weekly/index.xml b/ampl/weekly/index.xml
new file mode 100644
index 00000000000..c878f86ddda
--- /dev/null
+++ b/ampl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AMPL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:28Z
+ Weekly Trending of AMPL in GitHub
+
+
\ No newline at end of file
diff --git a/angelscript/daily/index.xml b/angelscript/daily/index.xml
index 861dbc9999c..8dd51c68b40 100644
--- a/angelscript/daily/index.xml
+++ b/angelscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AngelScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:33Z
+ 2023-12-24T01:28:22Z
Daily Trending of AngelScript in GitHub
\ No newline at end of file
diff --git a/angelscript/weekly/index.xml b/angelscript/weekly/index.xml
new file mode 100644
index 00000000000..ce891f43fa6
--- /dev/null
+++ b/angelscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AngelScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:29Z
+ Weekly Trending of AngelScript in GitHub
+
+
\ No newline at end of file
diff --git a/ant-build-system/daily/index.xml b/ant-build-system/daily/index.xml
index 5ad80651ff0..d93aebac550 100644
--- a/ant-build-system/daily/index.xml
+++ b/ant-build-system/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ant Build System Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:32Z
+ 2023-12-24T01:28:24Z
Daily Trending of Ant Build System in GitHub
\ No newline at end of file
diff --git a/ant-build-system/weekly/index.xml b/ant-build-system/weekly/index.xml
new file mode 100644
index 00000000000..7c23b8d6ad9
--- /dev/null
+++ b/ant-build-system/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ant Build System Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:30Z
+ Weekly Trending of Ant Build System in GitHub
+
+
\ No newline at end of file
diff --git a/antlr/daily/index.xml b/antlr/daily/index.xml
index 35d75be490f..8940c907599 100644
--- a/antlr/daily/index.xml
+++ b/antlr/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ANTLR Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:35Z
+ 2023-12-24T01:28:26Z
Daily Trending of ANTLR in GitHub
\ No newline at end of file
diff --git a/antlr/weekly/index.xml b/antlr/weekly/index.xml
new file mode 100644
index 00000000000..91acedfef1d
--- /dev/null
+++ b/antlr/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ANTLR Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:32Z
+ Weekly Trending of ANTLR in GitHub
+
+
\ No newline at end of file
diff --git a/apacheconf/daily/index.xml b/apacheconf/daily/index.xml
index 2c9cf2f4b66..d938cf59b63 100644
--- a/apacheconf/daily/index.xml
+++ b/apacheconf/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ApacheConf Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:38Z
+ 2023-12-24T01:28:25Z
Daily Trending of ApacheConf in GitHub
\ No newline at end of file
diff --git a/apacheconf/weekly/index.xml b/apacheconf/weekly/index.xml
new file mode 100644
index 00000000000..7d75d21894b
--- /dev/null
+++ b/apacheconf/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ApacheConf Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:33Z
+ Weekly Trending of ApacheConf in GitHub
+
+
\ No newline at end of file
diff --git a/apex/daily/index.xml b/apex/daily/index.xml
index 8d232a1832f..79ffe2f3aa6 100644
--- a/apex/daily/index.xml
+++ b/apex/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Apex Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:37Z
+ 2023-12-24T01:28:27Z
Daily Trending of Apex in GitHub
\ No newline at end of file
diff --git a/apex/weekly/index.xml b/apex/weekly/index.xml
new file mode 100644
index 00000000000..9f757bd2b0a
--- /dev/null
+++ b/apex/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Apex Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:33Z
+ Weekly Trending of Apex in GitHub
+
+
+ apex-enterprise-patterns/fflib-apex-mocks
+ 2023-12-24T01:45:33Z
+ tag:github.com,2023-12-24:/apex-enterprise-patterns/fflib-apex-mocks
+
+ <p>An Apex mocking framework for true unit testing in Salesforce, with Stub API support</p><hr>
+
+
\ No newline at end of file
diff --git a/api-blueprint/daily/index.xml b/api-blueprint/daily/index.xml
index ba18ae9fcf0..7483bd4a061 100644
--- a/api-blueprint/daily/index.xml
+++ b/api-blueprint/daily/index.xml
@@ -1,7 +1,7 @@
GitHub API Blueprint Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:36Z
+ 2023-12-24T01:28:26Z
Daily Trending of API Blueprint in GitHub
\ No newline at end of file
diff --git a/api-blueprint/weekly/index.xml b/api-blueprint/weekly/index.xml
new file mode 100644
index 00000000000..01ba7f234a1
--- /dev/null
+++ b/api-blueprint/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub API Blueprint Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:34Z
+ Weekly Trending of API Blueprint in GitHub
+
+
\ No newline at end of file
diff --git a/apl/daily/index.xml b/apl/daily/index.xml
index fed661a8ebf..e03c23e49b4 100644
--- a/apl/daily/index.xml
+++ b/apl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub APL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:43Z
+ 2023-12-24T01:28:31Z
Daily Trending of APL in GitHub
\ No newline at end of file
diff --git a/apl/weekly/index.xml b/apl/weekly/index.xml
new file mode 100644
index 00000000000..44f111b9b13
--- /dev/null
+++ b/apl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub APL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:37Z
+ Weekly Trending of APL in GitHub
+
+
\ No newline at end of file
diff --git a/apollo-guidance-computer/daily/index.xml b/apollo-guidance-computer/daily/index.xml
index c078eba672d..1bddb80e004 100644
--- a/apollo-guidance-computer/daily/index.xml
+++ b/apollo-guidance-computer/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Apollo Guidance Computer Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:40Z
+ 2023-12-24T01:28:32Z
Daily Trending of Apollo Guidance Computer in GitHub
\ No newline at end of file
diff --git a/apollo-guidance-computer/weekly/index.xml b/apollo-guidance-computer/weekly/index.xml
new file mode 100644
index 00000000000..5e882ee1370
--- /dev/null
+++ b/apollo-guidance-computer/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Apollo Guidance Computer Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:35Z
+ Weekly Trending of Apollo Guidance Computer in GitHub
+
+
\ No newline at end of file
diff --git a/applescript/daily/index.xml b/applescript/daily/index.xml
index 3b81afe84fe..bb0ba90f6e8 100644
--- a/applescript/daily/index.xml
+++ b/applescript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AppleScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:41Z
+ 2023-12-24T01:28:29Z
Daily Trending of AppleScript in GitHub
\ No newline at end of file
diff --git a/applescript/weekly/index.xml b/applescript/weekly/index.xml
new file mode 100644
index 00000000000..ce202108e40
--- /dev/null
+++ b/applescript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AppleScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:36Z
+ Weekly Trending of AppleScript in GitHub
+
+
\ No newline at end of file
diff --git a/arc/daily/index.xml b/arc/daily/index.xml
index a19f13859e3..03ce79de629 100644
--- a/arc/daily/index.xml
+++ b/arc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Arc Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:39Z
+ 2023-12-24T01:28:28Z
Daily Trending of Arc in GitHub
\ No newline at end of file
diff --git a/arc/weekly/index.xml b/arc/weekly/index.xml
new file mode 100644
index 00000000000..bcf4fda1115
--- /dev/null
+++ b/arc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Arc Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:38Z
+ Weekly Trending of Arc in GitHub
+
+
\ No newline at end of file
diff --git a/asciidoc/daily/index.xml b/asciidoc/daily/index.xml
index a0fd042cf17..e4f5c1a7401 100644
--- a/asciidoc/daily/index.xml
+++ b/asciidoc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AsciiDoc Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:46Z
+ 2023-12-24T01:28:33Z
Daily Trending of AsciiDoc in GitHub
\ No newline at end of file
diff --git a/asciidoc/weekly/index.xml b/asciidoc/weekly/index.xml
new file mode 100644
index 00000000000..ad64237523a
--- /dev/null
+++ b/asciidoc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AsciiDoc Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:39Z
+ Weekly Trending of AsciiDoc in GitHub
+
+
\ No newline at end of file
diff --git a/asl/daily/index.xml b/asl/daily/index.xml
index 6bb90f030ef..ab7053774e9 100644
--- a/asl/daily/index.xml
+++ b/asl/daily/index.xml
@@ -1,7 +1,14 @@
GitHub ASL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:45Z
+ 2023-12-24T01:28:35Z
Daily Trending of ASL in GitHub
+
+ Robotix22/Mu-Qcom
+ 2023-12-24T01:28:35Z
+ tag:github.com,2023-12-24:/Robotix22/Mu-Qcom
+
+ <p>Project Mu UEFI Implementation for Qualcomm Snapdragon™ Devices</p><hr>
+
\ No newline at end of file
diff --git a/asl/weekly/index.xml b/asl/weekly/index.xml
new file mode 100644
index 00000000000..50fd9e3aca9
--- /dev/null
+++ b/asl/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub ASL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:41Z
+ Weekly Trending of ASL in GitHub
+
+
+ Robotix22/Mu-Qcom
+ 2023-12-24T01:45:41Z
+ tag:github.com,2023-12-24:/Robotix22/Mu-Qcom
+
+ <p>Project Mu UEFI Implementation for Qualcomm Snapdragon™ Devices</p><hr>
+
+
\ No newline at end of file
diff --git a/asn.1/daily/index.xml b/asn.1/daily/index.xml
index 6019c218ced..fa3acc29ebd 100644
--- a/asn.1/daily/index.xml
+++ b/asn.1/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ASN.1 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:44Z
+ 2023-12-24T01:28:36Z
Daily Trending of ASN.1 in GitHub
\ No newline at end of file
diff --git a/asn.1/weekly/index.xml b/asn.1/weekly/index.xml
new file mode 100644
index 00000000000..e74f88ff7e3
--- /dev/null
+++ b/asn.1/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ASN.1 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:42Z
+ Weekly Trending of ASN.1 in GitHub
+
+
\ No newline at end of file
diff --git a/asp.net/daily/index.xml b/asp.net/daily/index.xml
index cc8d615840c..899ad85175c 100644
--- a/asp.net/daily/index.xml
+++ b/asp.net/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ASP.NET Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:49Z
+ 2023-12-24T01:28:37Z
Daily Trending of ASP.NET in GitHub
\ No newline at end of file
diff --git a/asp.net/weekly/index.xml b/asp.net/weekly/index.xml
new file mode 100644
index 00000000000..b1aab1fa451
--- /dev/null
+++ b/asp.net/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ASP.NET Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:43Z
+ Weekly Trending of ASP.NET in GitHub
+
+
\ No newline at end of file
diff --git a/aspectj/daily/index.xml b/aspectj/daily/index.xml
index b302bd39c33..2d82c3d95d3 100644
--- a/aspectj/daily/index.xml
+++ b/aspectj/daily/index.xml
@@ -1,7 +1,14 @@
GitHub AspectJ Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:48Z
+ 2023-12-24T01:28:38Z
Daily Trending of AspectJ in GitHub
+
+ heroku/devcenter-spring-mvc-hibernate
+ 2023-12-24T01:28:38Z
+ tag:github.com,2023-12-24:/heroku/devcenter-spring-mvc-hibernate
+
+ <p></p><hr>
+
\ No newline at end of file
diff --git a/aspectj/weekly/index.xml b/aspectj/weekly/index.xml
new file mode 100644
index 00000000000..363a11df5b7
--- /dev/null
+++ b/aspectj/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AspectJ Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:44Z
+ Weekly Trending of AspectJ in GitHub
+
+
\ No newline at end of file
diff --git a/assembly/daily/index.xml b/assembly/daily/index.xml
index b9de9ab3056..bd1a4106655 100644
--- a/assembly/daily/index.xml
+++ b/assembly/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Assembly Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:51Z
+ 2023-12-24T01:28:40Z
Daily Trending of Assembly in GitHub
+
+ oot-pc-port/oot-pc-port
+ 2023-12-24T01:28:40Z
+ tag:github.com,2023-12-24:/oot-pc-port/oot-pc-port
+
+ <p>The Ocarina of Time PC Port</p><hr>
+
\ No newline at end of file
diff --git a/assembly/weekly/index.xml b/assembly/weekly/index.xml
new file mode 100644
index 00000000000..2fb8330d80a
--- /dev/null
+++ b/assembly/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Assembly Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:49Z
+ Weekly Trending of Assembly in GitHub
+
+
+ JoshCooper417/341-5
+ 2023-12-24T01:45:49Z
+ tag:github.com,2023-12-24:/JoshCooper417/341-5
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/astro/daily/index.xml b/astro/daily/index.xml
index 180fb7f6cd2..3dd5180e733 100644
--- a/astro/daily/index.xml
+++ b/astro/daily/index.xml
@@ -1,7 +1,21 @@
GitHub Astro Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:53Z
+ 2023-12-24T01:28:42Z
Daily Trending of Astro in GitHub
+
+ Dxmentorship/dxmentorship
+ 2023-12-24T01:28:42Z
+ tag:github.com,2023-12-24:/Dxmentorship/dxmentorship
+
+ <p>This is a rebuild of the dxmentorship.com site. The goal is to make it more efficient, easier to surface relevant information to mentees, show the details of previous graduants and the new curriculumn.</p><hr>
+
+
+ ictsc/ictsc-tech-blog
+ 2023-12-24T01:28:42Z
+ tag:github.com,2023-12-24:/ictsc/ictsc-tech-blog
+
+ <p>ICTSC Tech Blog ICTSCテックブログ</p><hr>
+
\ No newline at end of file
diff --git a/astro/weekly/index.xml b/astro/weekly/index.xml
new file mode 100644
index 00000000000..1f9b6ccac29
--- /dev/null
+++ b/astro/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Astro Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:46Z
+ Weekly Trending of Astro in GitHub
+
+
\ No newline at end of file
diff --git a/asymptote/daily/index.xml b/asymptote/daily/index.xml
index 7bf388c7294..a0c00a91f3b 100644
--- a/asymptote/daily/index.xml
+++ b/asymptote/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Asymptote Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:54Z
+ 2023-12-24T01:28:44Z
Daily Trending of Asymptote in GitHub
\ No newline at end of file
diff --git a/asymptote/weekly/index.xml b/asymptote/weekly/index.xml
new file mode 100644
index 00000000000..5b38204c47a
--- /dev/null
+++ b/asymptote/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Asymptote Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:51Z
+ Weekly Trending of Asymptote in GitHub
+
+
\ No newline at end of file
diff --git a/ats/daily/index.xml b/ats/daily/index.xml
index 62b66d73b75..db05d4b1160 100644
--- a/ats/daily/index.xml
+++ b/ats/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ATS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:56Z
+ 2023-12-24T01:28:44Z
Daily Trending of ATS in GitHub
\ No newline at end of file
diff --git a/ats/weekly/index.xml b/ats/weekly/index.xml
new file mode 100644
index 00000000000..d0b5543bdf7
--- /dev/null
+++ b/ats/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ATS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:50Z
+ Weekly Trending of ATS in GitHub
+
+
\ No newline at end of file
diff --git a/augeas/daily/index.xml b/augeas/daily/index.xml
index aba90a25b21..471504055a6 100644
--- a/augeas/daily/index.xml
+++ b/augeas/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Augeas Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:55Z
+ 2023-12-24T01:28:46Z
Daily Trending of Augeas in GitHub
\ No newline at end of file
diff --git a/augeas/weekly/index.xml b/augeas/weekly/index.xml
new file mode 100644
index 00000000000..2a564d61dde
--- /dev/null
+++ b/augeas/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Augeas Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:51Z
+ Weekly Trending of Augeas in GitHub
+
+
\ No newline at end of file
diff --git a/autohotkey/daily/index.xml b/autohotkey/daily/index.xml
index 62bba552ed4..6366669f806 100644
--- a/autohotkey/daily/index.xml
+++ b/autohotkey/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AutoHotkey Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:57Z
+ 2023-12-24T01:28:45Z
Daily Trending of AutoHotkey in GitHub
\ No newline at end of file
diff --git a/autohotkey/weekly/index.xml b/autohotkey/weekly/index.xml
new file mode 100644
index 00000000000..78dc01781b3
--- /dev/null
+++ b/autohotkey/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub AutoHotkey Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:53Z
+ Weekly Trending of AutoHotkey in GitHub
+
+
+ umageddon/namDHC
+ 2023-12-24T01:45:53Z
+ tag:github.com,2023-12-24:/umageddon/namDHC
+
+ <p>Windows frontend for CHDMAN - written in Autohotkey</p><hr>
+
+
\ No newline at end of file
diff --git a/autoit/daily/index.xml b/autoit/daily/index.xml
index aca2b7082f4..8a96732b000 100644
--- a/autoit/daily/index.xml
+++ b/autoit/daily/index.xml
@@ -1,7 +1,7 @@
GitHub AutoIt Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:01Z
+ 2023-12-24T01:28:48Z
Daily Trending of AutoIt in GitHub
\ No newline at end of file
diff --git a/autoit/weekly/index.xml b/autoit/weekly/index.xml
new file mode 100644
index 00000000000..0ff2e2e306c
--- /dev/null
+++ b/autoit/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub AutoIt Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:54Z
+ Weekly Trending of AutoIt in GitHub
+
+
\ No newline at end of file
diff --git a/avro-idl/daily/index.xml b/avro-idl/daily/index.xml
index f7f88557acc..3a0e8da7017 100644
--- a/avro-idl/daily/index.xml
+++ b/avro-idl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Avro IDL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:00Z
+ 2023-12-24T01:28:51Z
Daily Trending of Avro IDL in GitHub
\ No newline at end of file
diff --git a/avro-idl/weekly/index.xml b/avro-idl/weekly/index.xml
new file mode 100644
index 00000000000..80dba3045bd
--- /dev/null
+++ b/avro-idl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Avro IDL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:57Z
+ Weekly Trending of Avro IDL in GitHub
+
+
\ No newline at end of file
diff --git a/awk/daily/index.xml b/awk/daily/index.xml
index fca4e1d2e25..64757319a9d 100644
--- a/awk/daily/index.xml
+++ b/awk/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Awk Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:59Z
+ 2023-12-24T01:28:49Z
Daily Trending of Awk in GitHub
\ No newline at end of file
diff --git a/awk/weekly/index.xml b/awk/weekly/index.xml
new file mode 100644
index 00000000000..cc8fe5185a5
--- /dev/null
+++ b/awk/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Awk Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:56Z
+ Weekly Trending of Awk in GitHub
+
+
\ No newline at end of file
diff --git a/ballerina/daily/index.xml b/ballerina/daily/index.xml
index 692222fe2d5..1625991c712 100644
--- a/ballerina/daily/index.xml
+++ b/ballerina/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ballerina Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:24:59Z
+ 2023-12-24T01:28:50Z
Daily Trending of Ballerina in GitHub
\ No newline at end of file
diff --git a/ballerina/weekly/index.xml b/ballerina/weekly/index.xml
new file mode 100644
index 00000000000..bc21932858b
--- /dev/null
+++ b/ballerina/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ballerina Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:55Z
+ Weekly Trending of Ballerina in GitHub
+
+
\ No newline at end of file
diff --git a/basic/daily/index.xml b/basic/daily/index.xml
index cfc3ced3bb0..9d13f779a33 100644
--- a/basic/daily/index.xml
+++ b/basic/daily/index.xml
@@ -1,7 +1,7 @@
GitHub BASIC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:03Z
+ 2023-12-24T01:28:53Z
Daily Trending of BASIC in GitHub
\ No newline at end of file
diff --git a/basic/weekly/index.xml b/basic/weekly/index.xml
new file mode 100644
index 00000000000..a018ada88f4
--- /dev/null
+++ b/basic/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub BASIC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:58Z
+ Weekly Trending of BASIC in GitHub
+
+
\ No newline at end of file
diff --git a/batchfile/daily/index.xml b/batchfile/daily/index.xml
index eef700ce332..3fb5eadc0f6 100644
--- a/batchfile/daily/index.xml
+++ b/batchfile/daily/index.xml
@@ -1,21 +1,28 @@
GitHub Batchfile Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:07Z
+ 2023-12-24T01:28:59Z
Daily Trending of Batchfile in GitHub
- EbolaMan-YT/IPTOOLKIT
- 2023-12-23T01:25:07Z
- tag:github.com,2023-12-23:/EbolaMan-YT/IPTOOLKIT
-
- <p>just sum simple network stuff</p><hr>
+ secretGeek/dod
+ 2023-12-24T01:28:59Z
+ tag:github.com,2023-12-24:/secretGeek/dod
+
+ <p>DOS on dope. The last MVC Web framework you'll ever need</p><hr>
- rsm28/lethal_company_batch_files
- 2023-12-23T01:25:07Z
- tag:github.com,2023-12-23:/rsm28/lethal_company_batch_files
-
- <p></p><hr>
+ EbolaMan-YT/PsExec
+ 2023-12-24T01:28:59Z
+ tag:github.com,2023-12-24:/EbolaMan-YT/PsExec
+
+ <p>PsExec batch file but better</p><hr>
+
+
+ Zusier/Zusiers-optimization-Batch
+ 2023-12-24T01:28:59Z
+ tag:github.com,2023-12-24:/Zusier/Zusiers-optimization-Batch
+
+ <p>The open source batch file that gives efforts to boost system performance, latency, and stability.</p><hr>
\ No newline at end of file
diff --git a/batchfile/weekly/index.xml b/batchfile/weekly/index.xml
new file mode 100644
index 00000000000..ad5c72eb13b
--- /dev/null
+++ b/batchfile/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Batchfile Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:02Z
+ Weekly Trending of Batchfile in GitHub
+
+
+ vishnu1001/office-2021
+ 2023-12-24T01:46:02Z
+ tag:github.com,2023-12-24:/vishnu1001/office-2021
+
+ <p>Microsoft Office 2021 Activator 🤫</p><hr>
+
+
+ RiiConnect24/RiiConnect24-Patcher
+ 2023-12-24T01:46:02Z
+ tag:github.com,2023-12-24:/RiiConnect24/RiiConnect24-Patcher
+
+ <p>This patcher will guide you through RiiConnect24 installation process.</p><hr>
+
+
\ No newline at end of file
diff --git a/beef/daily/index.xml b/beef/daily/index.xml
index 87c0505af71..f70fcea2497 100644
--- a/beef/daily/index.xml
+++ b/beef/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Beef Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:04Z
+ 2023-12-24T01:28:53Z
Daily Trending of Beef in GitHub
\ No newline at end of file
diff --git a/beef/weekly/index.xml b/beef/weekly/index.xml
new file mode 100644
index 00000000000..32785c93cbd
--- /dev/null
+++ b/beef/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Beef Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:00Z
+ Weekly Trending of Beef in GitHub
+
+
\ No newline at end of file
diff --git a/befunge/daily/index.xml b/befunge/daily/index.xml
index 7cd9bc64779..e139165d04f 100644
--- a/befunge/daily/index.xml
+++ b/befunge/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Befunge Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:03Z
+ 2023-12-24T01:28:52Z
Daily Trending of Befunge in GitHub
\ No newline at end of file
diff --git a/befunge/weekly/index.xml b/befunge/weekly/index.xml
new file mode 100644
index 00000000000..846d1bac2aa
--- /dev/null
+++ b/befunge/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Befunge Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:59Z
+ Weekly Trending of Befunge in GitHub
+
+
\ No newline at end of file
diff --git a/berry/daily/index.xml b/berry/daily/index.xml
index c23cc6a8bf6..b033b644b3d 100644
--- a/berry/daily/index.xml
+++ b/berry/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Berry Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:10Z
+ 2023-12-24T01:29:00Z
Daily Trending of Berry in GitHub
\ No newline at end of file
diff --git a/berry/weekly/index.xml b/berry/weekly/index.xml
new file mode 100644
index 00000000000..f445583f765
--- /dev/null
+++ b/berry/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Berry Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:04Z
+ Weekly Trending of Berry in GitHub
+
+
\ No newline at end of file
diff --git a/bibtex/daily/index.xml b/bibtex/daily/index.xml
index 1677b204030..e7d8b4a8531 100644
--- a/bibtex/daily/index.xml
+++ b/bibtex/daily/index.xml
@@ -1,7 +1,7 @@
GitHub BibTeX Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:08Z
+ 2023-12-24T01:29:01Z
Daily Trending of BibTeX in GitHub
\ No newline at end of file
diff --git a/bibtex/weekly/index.xml b/bibtex/weekly/index.xml
new file mode 100644
index 00000000000..90f4ee6f236
--- /dev/null
+++ b/bibtex/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub BibTeX Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:04Z
+ Weekly Trending of BibTeX in GitHub
+
+
\ No newline at end of file
diff --git a/bicep/daily/index.xml b/bicep/daily/index.xml
index c0b1ba27a71..91558941d8b 100644
--- a/bicep/daily/index.xml
+++ b/bicep/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Bicep Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:12Z
+ 2023-12-24T01:29:04Z
Daily Trending of Bicep in GitHub
\ No newline at end of file
diff --git a/bicep/weekly/index.xml b/bicep/weekly/index.xml
new file mode 100644
index 00000000000..3cb38584578
--- /dev/null
+++ b/bicep/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Bicep Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:06Z
+ Weekly Trending of Bicep in GitHub
+
+
\ No newline at end of file
diff --git a/bison/daily/index.xml b/bison/daily/index.xml
index a83f77eaa57..11f020b51c3 100644
--- a/bison/daily/index.xml
+++ b/bison/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Bison Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:13Z
+ 2023-12-24T01:29:06Z
Daily Trending of Bison in GitHub
\ No newline at end of file
diff --git a/bison/weekly/index.xml b/bison/weekly/index.xml
new file mode 100644
index 00000000000..38cb0ae0074
--- /dev/null
+++ b/bison/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Bison Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:08Z
+ Weekly Trending of Bison in GitHub
+
+
\ No newline at end of file
diff --git a/bitbake/daily/index.xml b/bitbake/daily/index.xml
index 5e6605d1b9f..845df569d50 100644
--- a/bitbake/daily/index.xml
+++ b/bitbake/daily/index.xml
@@ -1,7 +1,7 @@
GitHub BitBake Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:16Z
+ 2023-12-24T01:29:08Z
Daily Trending of BitBake in GitHub
\ No newline at end of file
diff --git a/bitbake/weekly/index.xml b/bitbake/weekly/index.xml
new file mode 100644
index 00000000000..4b665d59003
--- /dev/null
+++ b/bitbake/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub BitBake Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:11Z
+ Weekly Trending of BitBake in GitHub
+
+
\ No newline at end of file
diff --git a/blade/daily/index.xml b/blade/daily/index.xml
index c3b952a31f5..2de1c047568 100644
--- a/blade/daily/index.xml
+++ b/blade/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Blade Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:17Z
+ 2023-12-24T01:29:07Z
Daily Trending of Blade in GitHub
\ No newline at end of file
diff --git a/blade/weekly/index.xml b/blade/weekly/index.xml
new file mode 100644
index 00000000000..d1c428a0c39
--- /dev/null
+++ b/blade/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Blade Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:12Z
+ Weekly Trending of Blade in GitHub
+
+
\ No newline at end of file
diff --git a/blitzbasic/daily/index.xml b/blitzbasic/daily/index.xml
index cb81ad4db68..3184b6c963d 100644
--- a/blitzbasic/daily/index.xml
+++ b/blitzbasic/daily/index.xml
@@ -1,7 +1,7 @@
GitHub BlitzBasic Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:14Z
+ 2023-12-24T01:29:05Z
Daily Trending of BlitzBasic in GitHub
\ No newline at end of file
diff --git a/blitzbasic/weekly/index.xml b/blitzbasic/weekly/index.xml
new file mode 100644
index 00000000000..d7b370f30d9
--- /dev/null
+++ b/blitzbasic/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub BlitzBasic Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:09Z
+ Weekly Trending of BlitzBasic in GitHub
+
+
\ No newline at end of file
diff --git a/blitzmax/daily/index.xml b/blitzmax/daily/index.xml
index ac2f22651b6..144ec96ab0b 100644
--- a/blitzmax/daily/index.xml
+++ b/blitzmax/daily/index.xml
@@ -1,7 +1,7 @@
GitHub BlitzMax Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:20Z
+ 2023-12-24T01:29:10Z
Daily Trending of BlitzMax in GitHub
\ No newline at end of file
diff --git a/blitzmax/weekly/index.xml b/blitzmax/weekly/index.xml
new file mode 100644
index 00000000000..a1bb507ed29
--- /dev/null
+++ b/blitzmax/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub BlitzMax Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:13Z
+ Weekly Trending of BlitzMax in GitHub
+
+
\ No newline at end of file
diff --git a/bluespec/daily/index.xml b/bluespec/daily/index.xml
index 9ddb49ae443..33bf49b13f5 100644
--- a/bluespec/daily/index.xml
+++ b/bluespec/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Bluespec Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:19Z
+ 2023-12-24T01:29:11Z
Daily Trending of Bluespec in GitHub
\ No newline at end of file
diff --git a/bluespec/weekly/index.xml b/bluespec/weekly/index.xml
new file mode 100644
index 00000000000..c6cb4e5330b
--- /dev/null
+++ b/bluespec/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Bluespec Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:16Z
+ Weekly Trending of Bluespec in GitHub
+
+
\ No newline at end of file
diff --git a/boo/daily/index.xml b/boo/daily/index.xml
index 9289f4aa566..07ad578daaa 100644
--- a/boo/daily/index.xml
+++ b/boo/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Boo Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:18Z
+ 2023-12-24T01:29:12Z
Daily Trending of Boo in GitHub
\ No newline at end of file
diff --git a/boo/weekly/index.xml b/boo/weekly/index.xml
new file mode 100644
index 00000000000..c94a0d3f46b
--- /dev/null
+++ b/boo/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Boo Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:15Z
+ Weekly Trending of Boo in GitHub
+
+
\ No newline at end of file
diff --git a/boogie/daily/index.xml b/boogie/daily/index.xml
index b1945061846..5f7d3c160a4 100644
--- a/boogie/daily/index.xml
+++ b/boogie/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Boogie Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:24Z
+ 2023-12-24T01:29:14Z
Daily Trending of Boogie in GitHub
\ No newline at end of file
diff --git a/boogie/weekly/index.xml b/boogie/weekly/index.xml
new file mode 100644
index 00000000000..b971a232886
--- /dev/null
+++ b/boogie/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Boogie Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:17Z
+ Weekly Trending of Boogie in GitHub
+
+
\ No newline at end of file
diff --git a/brainfuck/daily/index.xml b/brainfuck/daily/index.xml
index 2e983ad938f..df66a16125a 100644
--- a/brainfuck/daily/index.xml
+++ b/brainfuck/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Brainfuck Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:23Z
+ 2023-12-24T01:29:16Z
Daily Trending of Brainfuck in GitHub
\ No newline at end of file
diff --git a/brainfuck/weekly/index.xml b/brainfuck/weekly/index.xml
new file mode 100644
index 00000000000..085f65831a5
--- /dev/null
+++ b/brainfuck/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Brainfuck Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:20Z
+ Weekly Trending of Brainfuck in GitHub
+
+
\ No newline at end of file
diff --git a/brightscript/daily/index.xml b/brightscript/daily/index.xml
index f59f5fd4c71..6fefc4e68f9 100644
--- a/brightscript/daily/index.xml
+++ b/brightscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Brightscript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:25Z
+ 2023-12-24T01:29:15Z
Daily Trending of Brightscript in GitHub
\ No newline at end of file
diff --git a/brightscript/weekly/index.xml b/brightscript/weekly/index.xml
new file mode 100644
index 00000000000..d2b2a208efb
--- /dev/null
+++ b/brightscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Brightscript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:19Z
+ Weekly Trending of Brightscript in GitHub
+
+
\ No newline at end of file
diff --git a/browserslist/daily/index.xml b/browserslist/daily/index.xml
index b68619a9e3e..701e7e22143 100644
--- a/browserslist/daily/index.xml
+++ b/browserslist/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Browserslist Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:26Z
+ 2023-12-24T01:29:19Z
Daily Trending of Browserslist in GitHub
\ No newline at end of file
diff --git a/browserslist/weekly/index.xml b/browserslist/weekly/index.xml
new file mode 100644
index 00000000000..cbe784fda80
--- /dev/null
+++ b/browserslist/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Browserslist Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:22Z
+ Weekly Trending of Browserslist in GitHub
+
+
\ No newline at end of file
diff --git a/c%23/daily/index.xml b/c%23/daily/index.xml
index 6b533c72fac..1c1527c65ae 100644
--- a/c%23/daily/index.xml
+++ b/c%23/daily/index.xml
@@ -1,14 +1,28 @@
GitHub C# Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:42Z
+ 2023-12-24T01:29:24Z
Daily Trending of C# in GitHub
- SebLague/Tiny-Chess-Bot-Challenge-Results
- 2023-12-23T01:25:42Z
- tag:github.com,2023-12-23:/SebLague/Tiny-Chess-Bot-Challenge-Results
-
- <p></p><hr><p>Games, results, and source code of bots entered into the <a href="https://www.youtube.com/watch?v=Ne40a5LkK6A">Tiny Chess Bot Coding Challenge</a></p>
<p>You can find the rankings of the main tournament in Swiss/Results.txt (note that #57 was removed as a duplicate of #62 prior to creating the knockout pairings). The format of the file is: <code>ID | Bot Name | Author Name/s | Score (win = 2, draw = 1, loss = 0) | Tiebreak</code></p>
+ moom825/Discord-RAT-2.0
+ 2023-12-24T01:29:24Z
+ tag:github.com,2023-12-24:/moom825/Discord-RAT-2.0
+
+ <p>Discord Remote Administration Tool fully written in c#, stub size of ~75kb, over 40 post exploitations modules</p><hr><h1>DiscordRAT 2.0</h1>
<p>Discord Remote Administration Tool fully written in c#.</p>
<p>This is a RAT controlled over Discord with over 40 post exploitation modules.</p>
<p>The output file size also around ~75kb!</p>
<h2><strong>Disclaimer:</strong></h2>
<p>This tool is for educational use only, the author will not be held responsible for any misuse of this tool.</p>
<h2><strong>Credits</strong></h2>
<p>The rootkit in the project was made by "bytecode77". The source of the rootkit can be found here: <a href="https://github.com/bytecode77/r77-rootkit">https://github.com/bytecode77/r77-rootkit</a></p>
<h2><strong>Setup Guide:</strong></h2>
<p>Download the pre-complied binary's here <a href="https://github.com/moom825/Discord-RAT-2.0/releases/tag/2.0">https://github.com/moom825/Discord-RAT-2.0/releases/tag/2.0</a></p>
<p>You will first need to register a bot with the Discord developer portal and then add the bot to the Discord server that you want to use to control the bot (make sure the bot has administrator privileges in the Discord server). Once the bot is created open "builder.exe" and paste the token in, and paste the guild ID of where you invited the bot</p>
<p>Then if the steps above were successful, you can launch the file by executing <code>Client-built.exe</code>. It will create a new channel and post a message on the server with a generated session number.<br> Now your bot should be available to use !</p>
<p><strong>Requirements:</strong><br> Windows(x64)</p>
<h2><strong>Commands</strong></h2>
<pre><code>Available commands are :
--> !message = Show a message box displaying your text / Syntax = "!message example"
--> !shell = Execute a shell command /Syntax = "!shell whoami"
--> !voice = Make a voice say outloud a custom sentence / Syntax = "!voice test"
--> !admincheck = Check if program has admin privileges
--> !cd = Changes directory
--> !dir = display all items in current dir
--> !download = Download a file from infected computer
--> !upload = Upload file to the infected computer / Syntax = "!upload file.png" (with attachment)
--> !uploadlink = Upload file to the infected computer / Syntax = "!upload link file.png"
--> !delete = deletes a file / Syntax = "!delete / path to / the / file.txt"
--> !write = Type your desired sentence on computer
--> !wallpaper = Change infected computer wallpaper / Syntax = "!wallpaper" (with attachment)
--> !clipboard = Retrieve infected computer clipboard content
--> !idletime = Get the idle time of user's on target computer
--> !currentdir = display the current dir
--> !block = Blocks user's keyboard and mouse / Warning : Admin rights are required
--> !unblock = Unblocks user's keyboard and mouse / Warning : Admin rights are required
--> !screenshot = Get the screenshot of the user's current screen
--> !exit = Exit program
--> !kill = Kill a session or all sessions / Syntax = "!kill session-3" or "!kill all"
--> !uacbypass = attempt to bypass uac to gain admin by using windir and slui
--> !shutdown = shutdown computer
--> !restart = restart computer
--> !logoff = log off current user
--> !bluescreen = BlueScreen PC
--> !datetime = display system date and time
--> !prockill = kill a process by name / syntax = "!kill process"
--> !disabledefender = Disable windows defender(requires admin)
--> !disablefirewall = Disable windows firewall(requires admin)
--> !audio = play a audio file on the target computer / Syntax = "!audio" (with attachment)
--> !critproc = make program a critical process. meaning if its closed the computer will bluescreen(Admin rights are required)
--> !uncritproc = if the process is a critical process it will no longer be a critical process meaning it can be closed without bluescreening(Admin rights are required)
--> !website = open a website on the infected computer / syntax = "!website www.google.com"
--> !disabletaskmgr = disable task manager(Admin rights are required)
--> !enabletaskmgr = enable task manager(if disabled)(Admin rights are required)
--> !startup = add to startup(when computer go on this file starts)
--> !geolocate = Geolocate computer using latitude and longitude of the ip adress with google map / Warning : Geolocating IP adresses is not very precise
--> !listprocess = Get all process's
--> !password = grab all passwords
--> !rootkit = Launch a rootkit (the process will be hidden from taskmgr and you wont be able to see the file)(Admin rights are required)
--> !unrootkit = Remove the rootkit(Admin rights are required)
--> !getcams = Grab the cameras names and their respected selection number
--> !selectcam = Select camera to take a picture out of (default will be camera 1)/ Syntax "!selectcam 1"
--> !webcampic = Take a picture out of the selected webcam
--> !grabtokens = Grab all discord tokens on the current pc
--> !help = This help menu
</code></pre>
<h2>Donation</h2>
<h3>Buy me a coffee!</h3>
<p>BTC: bc1qg4zy8w5swc66k9xg29c2x6ennn5cyv2ytlp0a6</p>
+
+
+ DaXcess/LCVR
+ 2023-12-24T01:29:24Z
+ tag:github.com,2023-12-24:/DaXcess/LCVR
+
+ <p>Collecting Scrap in VR</p><hr><h1>⚠️⚠️ NOT READY YET ⚠️⚠️</h1>
<blockquote>
<p>The existence of this GitHub repository does not mean a working mod already exists, it's just non-functional source code at this time</p>
</blockquote>
<h1>Lethal Company VR Mod</h1>
<p>Collecting Scrap in VR</p>
<h2>Performance</h2>
<p>Since Lethal Company is using the High Definition Render Pipeline, enabling XR causes a lot of performance issues. Luckily we can use Dynamic Resolution to alleviate some of the lag.</p>
<p>At the time of writing, there has been a very simple initial draft added to the code that enables Dynamic Resolution with a Catmull Rom upscale filter, with an aggressive setting of 25%-50% screen scale. More research and testing needs to be done to see if it's also feasible to use DLSS/FSR, without compromising quality and with adequate performance gains.</p>
<h2>Helpful tools and documentation</h2>
<ul>
<li><a href="https://github.com/sinai-dev/UnityExplorer">Unity Explorer</a></li>
<li><a href="https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.8/manual/index.html">Unity OpenXR Plugin</a></li>
<li><a href="https://docs.unity3d.com/Manual/xr_input.html">Unity XR Inputs</a></li>
</ul>
+
+
+ Stratus-Security/Subdominator
+ 2023-12-24T01:29:24Z
+ tag:github.com,2023-12-24:/Stratus-Security/Subdominator
+
+ <p>The Internets #1 Subdomain Takeover Tool</p><hr><p><img src="https://github.com/Stratus-Security/Subdominator/workflows/CI/badge.svg?sanitize=true" alt="GitHub Actions CI"> <img src="https://img.shields.io/github/downloads/Stratus-Security/Subdominator/total" alt="GitHub all releases"></p>
<h1>Subdominator 🚀</h1>
<h2>Welcome to the Subdominator Club!</h2>
<p>Meet <strong>Subdominator</strong>, your new favourite CLI tool for detecting subdomain takeovers. It's designed to be fast, accurate, and dependable, offering <a href="https://www.stratussecurity.com/post/the-ultimate-subdomain-takeover-tool">a significant improvement over other available tools</a>.</p>
<p>🔍 Precision and speed are our goal. Subdominator delivers better results without the wait, see the benchmark and feature comparison below for details.</p>
<h2>Installing 🛠️</h2>
<p>To quickly, get up and running, you can download the latest release for <a href="https://github.com/Stratus-Security/Subdominator/releases/latest/download/Subdominator.exe">windows</a> or <a href="https://github.com/Stratus-Security/Subdominator/releases/latest/download/Subdominator">linux</a>. Alternatively, download it via CLI (remove .exe for linux version):</p>
<pre><code class="language-base">wget https://github.com/Stratus-Security/Subdominator/releases/latest/download/Subdominator.exe
</code></pre>
<h2>Quick Start 🚦</h2>
<p>To quickly check a list of domains, simply run:</p>
<pre><code>Subdominator.exe -l subdomains.txt -o takeovers.txt
</code></pre>
<p>Or to quickly check a single domain, run:</p>
<pre><code>Subdominator.exe -d sub.example.com
</code></pre>
<h2>Options 🎛️</h2>
<pre><code>-d, --domain <domain> A single domain to check
-l, --list <list> A list of domains to check (line delimited)
-o, --output <output> Output subdomains to a file
-t, --threads <threads> Number of domains to check at once [default: 50]
-v, --verbose Print extra information
-eu, --exclude-unlikely Exclude unlikely (edge-case) fingerprints
--validate Validate the takeovers are exploitable (where possible)
--version Show version information
-?, -h, --help Show help and usage information
</code></pre>
<h2>Demo</h2>
<p>The tool was run across 1000 passively gathered subdomains: <img src="https://raw.githubusercontent.com/Stratus-Security/Subdominator/master/Demo.gif" alt="Demo"></p>
<h2>Benchmark 📊</h2>
<p>A benchmark was run across ~100,000 subdomains to compare performance with other popular tools</p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Threads</th>
<th>Time Taken</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Subdominator</strong></td>
<td>50</td>
<td>19 minutes, 8 seconds</td>
</tr>
<tr>
<td>Subjack</td>
<td>50</td>
<td>2 hours, 30 minutes, 2 seconds</td>
</tr>
<tr>
<td>Subdover</td>
<td>50</td>
<td>2 hours, 33 minutes, 27 seconds</td>
</tr>
</tbody>
</table>
<h2>Key Features 🔥</h2>
<ul>
<li><strong>Advanced DNS Matching</strong>: Supports DNS matching for CNAME, A, and AAAA records.</li>
<li><strong>Recursive DNS Queries</strong>: Performs in-depth queries to enhance accuracy and reduce false positives.</li>
<li><strong>Intelligent Domain Matching</strong>: Uses a custom <code>public_suffix_list.dat</code> for more effective domain matching.</li>
<li><strong>Domain Registration Detection</strong>: Checks for unregistered domains, with a more reliable method compared to other tools.</li>
<li><strong>High-Speed Performance</strong>: Achieves faster results through intelligent DNS record matching.</li>
<li><strong>Vetted Ruleset</strong>: Includes a thoroughly reviewed and updated ruleset.</li>
<li><strong>Comprehensive Detection</strong>: Capable of identifying takeovers missed by other tools.</li>
<li><strong>Validation</strong>: Dynamic takeover validation modules to check beyond fingerprints.</li>
</ul>
<h2>Feature Comparison 🥊</h2>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Subdominator</th>
<th>Subjack</th>
<th>Subdover</th>
</tr>
</thead>
<tbody>
<tr>
<td>Advanced DNS Matching</td>
<td>✅</td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<td>Recursive DNS Queries</td>
<td>✅</td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<td>Intelligent Domain Matching</td>
<td>✅</td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<td>Domain Registration Detection</td>
<td>✅</td>
<td>✅</td>
<td>❌</td>
</tr>
<tr>
<td>High-Speed Performance</td>
<td>✅</td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<td>Vetted and Updated Ruleset</td>
<td>✅</td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<td>Comprehensive Detection</td>
<td>✅</td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<td>Custom Fingerprint Support</td>
<td>✅</td>
<td>✅</td>
<td>❌</td>
</tr>
<tr>
<td>Validation</td>
<td>✅</td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<td>Fingerprints</td>
<td>97</td>
<td>35</td>
<td>80</td>
</tr>
</tbody>
</table>
<h2>Contributions</h2>
<p>Got a suggestion, fingerprint, or want to chip in? We're all ears! Open a PR or issue – this will keep subdominator on top! 😄</p>
\ No newline at end of file
diff --git a/c%23/weekly/index.xml b/c%23/weekly/index.xml
new file mode 100644
index 00000000000..d296d4eed29
--- /dev/null
+++ b/c%23/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub C# Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:35Z
+ Weekly Trending of C# in GitHub
+
+
+ SuxueCode/WechatBakTool
+ 2023-12-24T01:46:35Z
+ tag:github.com,2023-12-24:/SuxueCode/WechatBakTool
+
+ <p>基于C#的微信PC版聊天记录备份工具,提供图形界面,解密微信数据库并导出聊天记录。</p><hr><h1>WechatBakTool</h1>
<p>基于C#开发的微信聊天记录备份分析工具,努力做最好用的微信备份工具。</p>
<ul>
<li>理论支持64位版本所有微信,支持两种方式非直接地址获取Key[1]</li>
<li>工作区概念,支持多微信切换操作。</li>
<li>支持导出Html文件,TXT文件,支持批量导出</li>
<li>支持聊天频率分析,全消息库内容搜索</li>
<li>目前支持以下类型消息解析</li>
<li><input type="checkbox" checked disabled> 文本消息</li>
<li><input type="checkbox" checked disabled> 图片</li>
<li><input type="checkbox" checked disabled> 语音</li>
<li><input type="checkbox" checked disabled> 分享链接</li>
<li><input type="checkbox" checked disabled> 群聊</li>
<li><input type="checkbox" checked disabled> 系统消息</li>
<li><input type="checkbox" checked disabled> 文件</li>
<li><input type="checkbox" checked disabled> 引用/转发消息</li>
<li><input type="checkbox" checked disabled> 表情(需要预下载)</li>
</ul>
<p>如果有什么好的建议或意见,或者遇到什么问题,欢迎提issue,看到会回。</p>
<blockquote>
<p>[!NOTE] 反馈群:815054692<br> 如果觉得不错,欢迎右上角点个star!这是对作者的鼓励,谢谢!<br></p>
</blockquote>
<br>
<h3>免责声明</h3>
<p><strong>本项目仅供学习、研究使用,严禁商业使用</strong><br> <strong>用于网络安全用途的,请确保在国家法律法规下使用</strong><br> <strong>本项目完全免费,问你要钱的都是骗子</strong><br> <strong>使用本项目初衷是作者研究微信数据库的运行使用,您使用本软件导致的后果,包含但不限于数据损坏,记录丢失等问题,作者不承担相关责任。</strong><br> <strong>因软件特殊性质,请在使用时获得微信账号所有人授权,你应当确保不侵犯他人个人隐私权,后果自行承担</strong><br> <br></p>
<h3>隐私声明</h3>
<p><strong>本项目不会上传任何你的数据至任何第三方系统</strong><br> <strong>如果发生任何回传行为,请检查是否为第三方修改版本</strong><br> <br></p>
<h3>近期开发规划</h3>
<p>本项目技术栈为: C# + .NET6.0 + WPF <br></p>
<ul>
<li><input type="checkbox" checked disabled> <del>新版本UI界面开发</del></li>
<li><input type="checkbox" checked disabled> 完善各类消息支持(已经初步完成)</li>
<li><input type="checkbox" checked disabled> <del>词云</del></li>
<li><input type="checkbox" disabled> 性能优化</li>
<li><input type="checkbox" disabled> 打包资源文件夹</li>
<li><input type="checkbox" disabled> 手动模式(合适离线分析)</li>
<li><input type="checkbox" disabled> 年度报告类分析(等美术资源中,没有资源不做)</li>
</ul>
<br>
<h3>部分问题</h3>
<p>Q:支持手机端吗<br> A:<b>在手机端</b>使用迁移功能即可,路径:我->设置->聊天->聊天记录迁移与备份->迁移<br> <br> Q:怎么导出全部的记录<br> A:工作区->右键->管理,就见了。<br> <br> Q:解密工作区提示no such teble:MSG怎么办<br> A:基本上都是因为刚迁移完,缓存没写入到数据库导致的,建议迁移完重启一次微信后再创建工作区<br> <br></p>
<h3>使用说明</h3>
<p>0.安装.NET Desktop Runtime(注意是6.0版本的Desktop Runtime,如已经安装忽略)<br> 1.打开微信,并登录。<br> 2.在软件左侧下方点击<strong>新建工作区</strong>,<br> 3.在<strong>新建工作区界面</strong>,选择要创建工作区的微信进程,并<strong>确认下方微信号是否正确</strong><br> 4.解密方式<strong>推荐选择用户名推断查找</strong>!该方式理论支持所有64位版本微信。<strong>但该模式需要确保微信账号正确</strong><br> 5.新手请忽略其他选项,直接<strong>点击创建工作区</strong>,程序会自动进行工作区创建、解密。<br><br> <strong>工作区创建完毕,点击左侧工作区,尽情使用吧!</strong><br> <br></p>
<h3>参考/引用</h3>
<p>项目在开发过程中参考了以下项目或资料,有引用相关代码,如有需要,推荐您可以去参考下相关资料:</p>
<ol>
<li>C#使用OpenSSL解密微信数据库,这里注意一下64位适配问题,注意dll引用: <a href="https://github.com/Mr0x01/WXDBDecrypt.NET">Mr0x01/WXDBDecrypt.NET</a><br></li>
<li>C#使用地址获取微信Key: <a href="https://github.com/AdminTest0/SharpWxDump">AdminTest0/SharpWxDump</a></li>
<li>解密微信语音,我是直接调用解密,反正都要ffmpeg,多一个也是多,多两个也是多,懒得头铁实现: <a href="https://github.com/kn007/silk-v3-decoder">kn007/silk-v3-decoder</a></li>
<li>解密微信图片 <a href="https://www.52pojie.cn/forum.php?mod=viewthread&tid=1507922">吾爱破解chenhahacjl/微信 DAT 图片解密 (C#)</a></li>
<li>参考了句柄名称实现,注意获取句柄别看这里,#10 这个issue就是血泪 <a href="https://github.com/huiyadanli/RevokeMsgPatcher">huiyadanli/RevokeMsgPatcher</a></li>
<li>参考了句柄获取 <a href="https://github.com/FuzzySecurity/Sharp-Suite">FuzzySecurity/Sharp-Suite</a></li>
<li>这个获取秘钥更通用一些 <a href="https://github.com/SnowMeteors/GetWeChatKey">SnowMeteors/GetWeChatKey</a> ,用户名不是很稳定</li>
</ol>
<h3>其他声明</h3>
<p>[1] 理论支持所有64位版本指用户名推断和公钥头推断,地址直接获取方式需要version.json支持,更新不是很及时。</p>
+
+
+ markjprice/cs12dotnet8
+ 2023-12-24T01:46:35Z
+ tag:github.com,2023-12-24:/markjprice/cs12dotnet8
+
+ <p>Repository for the Packt Publishing book titled "C# 12 and .NET 8 - Modern Cross-Platform Development Fundamentals" by Mark J. Price</p><hr><blockquote>
<p><strong>IMPORTANT!</strong> <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/errata/README.md">Common Mistakes, Improvements, and Errata aka list of corrections</a></p>
</blockquote>
<h1>C# 12 and .NET 8 - Modern Cross-Platform Development Fundamentals, Eighth Edition</h1>
<p>Repository for the Packt Publishing book titled "C# 12 and .NET 8 - Modern Cross-Platform Development Fundamentals" by Mark J. Price</p>
<blockquote>
<p><strong>What's new in this edition?</strong> You can read a <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/whats-new-in-book.md">detailed list of changes</a> between the 7th and 8th editions. You can also read a set of very short articles I wrote about what's new in C# 12 and .NET 8: <a href="https://www.linkedin.com/in/markjamesprice/recent-activity/articles/">https://www.linkedin.com/in/markjamesprice/recent-activity/articles/</a>.</p>
</blockquote>
<p>If you have purchased the paperback or Kindle edition, then you can request a free PDF copy at the following link: <a href="https://packt.link/free-ebook/9781837635870">https://packt.link/free-ebook/9781837635870</a>.</p>
<p>Join the Packt community on Discord: <a href="https://packt.link/csharp12dotnet8">https://packt.link/csharp12dotnet8</a>. After accepting the Discord invite, find the channel for this book named <strong>csharp12-dotnet8</strong>: <a href="https://discord.com/channels/963343534323269662/1166069438865473697">https://discord.com/channels/963343534323269662/1166069438865473697</a>.</p>
<p>For questions about book pricing, distribution, and so on, please contact the publisher Packt at the following email address: <a href="mailto:customercare@packt.com">customercare@packt.com</a></p>
<p>My author page on Amazon: <a href="https://www.amazon.com/Mark-J-Price/e/B071DW3QGN/">https://www.amazon.com/Mark-J-Price/e/B071DW3QGN/</a></p>
<p>All of my books on Packt's website: <a href="https://subscription.packtpub.com/search?query=mark+j.+price">https://subscription.packtpub.com/search?query=mark+j.+price</a></p>
<p>My author page on Goodreads: <a href="https://www.goodreads.com/author/show/14224500.Mark_J_Price">https://www.goodreads.com/author/show/14224500.Mark_J_Price</a></p>
<p>Write an Amazon review for this book: <a href="https://packt.link/r/1837635870">https://packt.link/r/1837635870</a></p>
<h2>Chapters and code solutions</h2>
<p><strong>Introduction</strong></p>
<ul>
<li>Chapter 1 Hello C#, Welcome .NET! <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter01">code/Chapter01</a></li>
</ul>
<p><strong>Language</strong></p>
<ul>
<li>Chapter 2 Speaking C#: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter02">code/Chapter02</a></li>
<li>Chapter 3 Controlling Flow, Converting Types, and Handling Exceptions: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter03">code/Chapter03</a></li>
<li>Chapter 4 Writing, Debugging, and Testing Functions: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter04">code/Chapter04</a></li>
<li>Chapter 5 Building Your Own Types with Object-Oriented Programming: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter05">code/Chapter05</a></li>
<li>Chapter 6 Implementing Interfaces and Inheriting Classes: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter06">code/Chapter06</a></li>
</ul>
<p><strong>Libraries</strong></p>
<ul>
<li>Chapter 7 Packaging and Distributing .NET Types: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter07">code/Chapter07</a></li>
<li>Chapter 8 Working with Common .NET Types: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter08">code/Chapter08</a></li>
<li>Chapter 9 Working with Files, Streams, and Serialization: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter09">code/Chapter09</a></li>
<li>Chapter 10 Working with Data Using Entity Framework Core: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter10">code/Chapter10</a></li>
<li>Chapter 11 Querying and Manipulating Data Using LINQ: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/Chapter11">code/Chapter11</a></li>
</ul>
<p><strong>ASP.NET Core web development</strong></p>
<ul>
<li>Chapter 12 Introducing Web Development Using ASP.NET Core: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/PracticalApps">code/PracticalApps</a></li>
<li>Chapter 13 Building Websites Using ASP.NET Core Razor Pages: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/PracticalApps/Northwind.Web">code/PracticalApps/Northwind.Web</a></li>
<li>Online: Building Websites Using the Model-View-Controller Pattern: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/PracticalApps/Northwind.Mvc">code/PracticalApps/Northwind.Mvc</a></li>
<li>Chapter 14 Building and Consuming Web Services: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/PracticalApps/Northwind.WebApi">code/PracticalApps/Northwind.WebApi</a></li>
<li>Chapter 15 Building User Interface Components Using Blazor: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code/PracticalApps/Northwind.Blazor">code/PracticalApps/Northwind.Blazor</a></li>
</ul>
<h2>Code solutions for Visual Studio 2022 and Visual Studio Code</h2>
<p><a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/ch01-solution-folders.md">Figures for all of the code solution folders</a>.</p>
<p>Visual Studio Code now has an extension named <strong>C# Dev Kit</strong> that includes a solution explorer so it can better work with Visual Studio 2022 solution files. Visual Studio 2022 for Windows, Visual Studio 2022 for Mac, and Visual Studio Code + C# Dev Kit can now use the same code solution files and projects for each chapter, found here: <a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/code">/code</a>.</p>
<blockquote>
<p><strong>For Visual Studio Code:</strong> To use the chapter solution files with Visual Studio Code, install the <strong>C# Dev Kit</strong> extension. Then in Visual Studio Code, open the <code>ChapterNN</code> folder that contains a <code>ChapterNN.sln</code> solution file and wait for the <strong>SOLUTION EXPLORER</strong> pane to appear at the bottom of the <strong>EXPLORER</strong>. You can drag and drop to reorder the panes to put <strong>SOLUTION EXPLORER</strong> at the top. Learn more about C# Dev Kit at the following link: <a href="https://devblogs.microsoft.com/visualstudio/announcing-csharp-dev-kit-for-visual-studio-code/">https://devblogs.microsoft.com/visualstudio/announcing-csharp-dev-kit-for-visual-studio-code/</a></p>
</blockquote>
<blockquote>
<p><strong>Warning!</strong> If you use both Visual Studio 2022 and Visual Studio Code to open these solutions, be aware that the build process can conflict. This is because Visual Studio 2022 has its own non-standard build server that is different from the standard build server used by .NET SDK CLI. My recommendation is to only have a solution open in one code editor at any time. You should also clean the solutions between opening in different code editors. For example, after closing the solution in one code editor, I delete the <code>bin</code> and <code>obj</code> folders before then opening in a different code editor.</p>
</blockquote>
<h2>Companion Book</h2>
<p>I have written a companion book titled, <em><a href="https://github.com/markjprice/apps-services-net8">Apps and Services with .NET 8</a></em>, that is designed to follow on from where this book ends. You can also jump to related chapters in the second book to go deeper in topics of interest to go beyond the fundamentals, as shown in the following diagram:</p>
<p><img src="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/assets/B19586_17_03.png" alt="Relationships between companion book chapters"></p>
<p><img src="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/assets/B19586_01_Pillars.png" alt="Pillars of the .NET 8 Trilogy"></p>
<h2>Bonus content</h2>
<p>The MVC chapter, appendix, and color figures are available to download as PDFs:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/B19586_Online_Chapter.pdf">Online Chapter - Building Websites Using the Model-View-Controller Pattern</a></li>
<li><a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/B19586_Appendix.pdf">Appendix A, Answers to the Test Your Knowledge Questions</a>.</li>
<li><a href="https://static.packt-cdn.com/downloads/9781837635870_ColorImages.pdf">Color images of the screenshots/diagrams used in this book</a>.</li>
</ul>
<h2>Important</h2>
<p>Corrections for typos and other mistakes and improvements like refactoring code. Useful links to other related material.</p>
<ul>
<li><a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/command-lines.md">Command-Lines</a> page lists all commands as a single line that can be copied and pasted to make it easier to enter commands at the prompt.</li>
<li><a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/book-links.md">Book Links</a></li>
<li><a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/errata/README.md">Common Mistakes, Improvements, and Errata aka list of corrections</a></li>
<li><a href="https://raw.githubusercontent.com/markjprice/cs12dotnet8/main/docs/dotnet9.md">Eighth edition's support for .NET 9</a></li>
</ul>
<h2>Microsoft Certifications</h2>
<p>Announcing the New Foundational C# Certification with freeCodeCamp: <a href="https://devblogs.microsoft.com/dotnet/announcing-foundational-csharp-certification/">https://devblogs.microsoft.com/dotnet/announcing-foundational-csharp-certification/</a></p>
<p>Microsoft used to have professional exams and certifications for developers that covered skills like C# and ASP.NET. Sadly, they have retired them all. These days, the only developer-adjacent exams and certifications are for Azure or Power Platform, as you can see from the certification poster: <a href="https://aka.ms/traincertposter">https://aka.ms/traincertposter</a></p>
<h2>Microsoft .NET community support</h2>
<ul>
<li><a href="https://dotnet.microsoft.com/platform/community">.NET Developer Community</a></li>
<li><a href="https://techcommunity.microsoft.com/t5/net/ct-p/dotnet">.NET Tech Community Forums for topic discussions</a></li>
<li><a href="https://learn.microsoft.com/en-us/answers/products/dotnet">Q&A for .NET to get your questions answered</a></li>
<li><a href="https://learn.microsoft.com/en-us/answers/topics/dotnet-csharp.html">Technical questions about the C# programming language</a></li>
<li><a href="https://authors.packtpub.com/reviewers/">If you'd like to apply to be a reviewer</a></li>
</ul>
<h2>Interviews with me</h2>
<p>Podcast interviews with me:</p>
<ul>
<li><a href="https://dotnetcore.show/episode-117-our-perspectives-on-the-future-of-net-with-mark-j-price/">The .NET Core Podcast - March 3, 2023</a></li>
<li><a href="https://jesseliberty.com/2022/12/10/mark-price-on-c-11-fixed/">Yet Another Podcast with Jesse Liberty - December 2022</a></li>
<li><a href="https://dotnetcore.show/episode-91-c-sharp-10-and-dotnet-6-with-mark-j-price/">The .NET Core Podcast - February 4, 2022</a></li>
<li><a href="http://jesseliberty.com/2021/05/16/mark-price-on-c9-and-net-6/">Yet Another Podcast with Jesse Liberty - May 2021</a></li>
<li><a href="https://dotnetcore.show/episode-44-learning-net-core-with-mark-j-price/">The .NET Core Podcast - February 7, 2020</a></li>
<li><a href="http://jesseliberty.com/2020/02/23/mark-price-c-net-core/">Yet Another Podcast with Jesse Liberty - February 2020</a></li>
<li><a href="https://soundcloud.com/packt-podcasts/csharp-8-dotnet-core-3-the-evolution-of-the-microsoft-ecosystem">Packt Podcasts</a></li>
</ul>
<p>Written interviews with me:</p>
<ul>
<li><a href="https://www.infoq.com/articles/book-interview-mark-price/?itm_source=infoq&itm_campaign=user_page&itm_medium=link">C# 9 and .NET 5: Book Review and Q&A</a></li>
<li><a href="https://www.episerver.com/articles/q-and-a-with-mark-price">Q&A with Episerver's Mark J. Price, author of C# 9 and .NET 5 - Modern Cross-Platform Development</a></li>
</ul>
+
+
+ cefsharp/CefSharp
+ 2023-12-24T01:46:35Z
+ tag:github.com,2023-12-24:/cefsharp/CefSharp
+
+ <p>.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework</p><hr><p><a href="https://cefsharp.github.io/" title="CefSharp - Embedded Chromium for .NET"><img src="https://raw.githubusercontent.com/cefsharp/CefSharp/master/logo.png" alt="CefSharp Logo"></a></p>
<p><a href="https://ci.appveyor.com/project/cefsharp/cefsharp/branch/master"><img src="https://ci.appveyor.com/api/projects/status/9g4mcuqruc283g66/branch/master?svg=true" alt="Build status"></a> <a href="https://www.nuget.org/packages/CefSharp.WinForms/"><img src="https://img.shields.io/nuget/v/CefSharp.WinForms.svg?style=flat&label=WinForms" alt="CefSharp.WinForms"></a> <a href="https://www.nuget.org/packages/CefSharp.Wpf/"><img src="https://img.shields.io/nuget/v/CefSharp.Wpf.svg?style=flat&label=Wpf" alt="CefSharp.Wpf"></a> <a href="https://www.nuget.org/packages/CefSharp.Wpf.HwndHost/"><img src="https://img.shields.io/nuget/v/CefSharp.Wpf.HwndHost.svg?style=flat&label=Wpf.HwndHost" alt="CefSharp.Wpf.HwndHost"></a> <a href="https://www.nuget.org/packages/CefSharp.OffScreen/"><img src="https://img.shields.io/nuget/v/CefSharp.OffScreen.svg?style=flat&label=OffScreen" alt="CefSharp.OffScreen"></a></p>
<p>Got a quick question? <a href="https://github.com/cefsharp/CefSharp/discussions">Discussions</a> here on <code>GitHub</code> is the preferred place to ask!</p>
<p><a href="https://cefsharp.github.io/">CefSharp</a> lets you embed Chromium in .NET apps. It is a lightweight .NET wrapper around the <a href="https://bitbucket.org/chromiumembedded/cef">Chromium Embedded Framework (CEF)</a> by Marshall A. Greenblatt. About 30% of the bindings are written in C++/CLI with the majority of code here is C#. It can be used from C# or VB, or any other CLR language. CefSharp provides both WPF and WinForms web browser control implementations.</p>
<p>CefSharp is <a href="https://opensource.org/licenses/BSD-3-Clause" title="BSD License">BSD</a> licensed, so it can be used in both proprietary and free/open source applications. For the full details, see the <a href="https://raw.githubusercontent.com/cefsharp/CefSharp/master/LICENSE">LICENSE</a> file.</p>
<p>If you like and use CefSharp please consider signing up for a small monthly donation, even $25 can help tremendously. See <a href="https://raw.githubusercontent.com/cefsharp/CefSharp/master/README.md#Financial-Support">Financial Support</a> for more details.</p>
<h2>Releases</h2>
<p>Stable binaries are released on NuGet, and contain everything you need to embed Chromium in your .Net/CLR application. For usage see the <a href="https://github.com/cefsharp/CefSharp/wiki/Quick-Start">Quick Start</a> guide or checkout <a href="https://github.com/cefsharp/CefSharp.MinimalExample/">CefSharp.MinimalExample</a> project for basic demos using the CefSharp NuGet packages.</p>
<ul>
<li><a href="https://www.nuget.org/packages/CefSharp.WinForms/">CefSharp.WinForms</a></li>
<li><a href="https://www.nuget.org/packages/CefSharp.Wpf/">CefSharp.Wpf</a></li>
<li><a href="https://www.nuget.org/packages/CefSharp.OffScreen/">CefSharp.OffScreen</a></li>
<li><a href="https://github.com/cefsharp/CefSharp.Wpf.HwndHost/">CefSharp.Wpf.HwndHost</a> (A <a href="https://docs.microsoft.com/en-us/dotnet/api/system.windows.interop.hwndhost">HwndHost</a> based WPF implementation, similar to hosting the WinForms version in WPF, supports data binding, airspace issues apply).</li>
</ul>
<h2>Documentation</h2>
<ul>
<li>See the <a href="https://github.com/cefsharp/CefSharp/tree/master/CefSharp.Wpf.Example">CefSharp.Wpf.Example</a> or <a href="https://github.com/cefsharp/CefSharp/tree/master/CefSharp.WinForms.Example">CefSharp.WinForms.Example</a> projects for example web browsers built with CefSharp. They demo most of the available features.</li>
<li>See the <a href="https://github.com/cefsharp/CefSharp.MinimalExample/">CefSharp.MinimalExample</a> project for a basic demo of using the CefSharp NuGet packages.</li>
<li>See the <a href="https://github.com/cefsharp/CefSharp/wiki/General-Usage">General Usage Guide</a> in help getting started/dealing with common scenarios.</li>
<li>See the <a href="https://github.com/cefsharp/CefSharp/wiki">Wiki</a> for work-in-progress documentation</li>
<li>See the <a href="https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions">FAQ</a> for help with common issues</li>
<li>Upgrading from an earlier version of CefSharp? See the <a href="https://github.com/cefsharp/CefSharp/wiki/ChangeLog">ChangeLog</a> for breaking changes and upgrade tips.</li>
<li><a href="https://cefsharp.github.io/api/">CefSharp API</a> generated from the source code comments.</li>
</ul>
<h2>Contact</h2>
<p>Please keep the <code>Issue Tracker</code> for <strong>Bugs</strong> only please! Before submitting a <code>PR</code> please read <a href="https://github.com/cefsharp/CefSharp/raw/master/CONTRIBUTING.md">CONTRIBUTING</a>.</p>
<ul>
<li><a href="https://github.com/cefsharp/CefSharp/discussions">CefSharp Discussions</a> is generally where <code>CefSharp</code> specific questions should be asked, please search before posting, thanks!</li>
<li><a href="https://stackoverflow.com/questions/tagged/cefsharp">Stackoverflow</a> is where generic html/javascript/C# questions can be asked.</li>
<li><a href="https://magpcss.org/ceforum/viewforum.php?f=18">Chromium Embedded Framework(CEF) Forum</a></li>
</ul>
<h2>Branches & Forks</h2>
<p>This is the <code>official</code> CefSharp fork, as maintained by the CefSharp community. You can also view <a href="https://github.com/cefsharp/CefSharp/network">the entire network of public forks/branches</a>.</p>
<p>Development is done in the <code>master</code> branch. New features are preferably added in feature branches, if the changes are more than trivial. New <code>PR's</code> should be targeted against <code>master</code>.</p>
<p>When a new release is imminent a <code>release</code> branch is created. We try to avoid making public facing <code>API</code> changes in <code>release</code> branches (Adding new features is fine, just not breaking changes).</p>
<h3>Releases</h3>
<p><strong>CI Builds</strong><br> Every commit on <code>master</code> produces a <code>Nuget</code> package. Use at your own risk!</p>
<ul>
<li><a href="https://www.myget.org/feed/cefsharp/package/nuget/CefSharp.WinForms"><img src="https://img.shields.io/myget/cefsharp/v/CefSharp.WinForms.svg?style=flat&label=WinForms" alt="MyGet Pre Release"></a></li>
<li><a href="https://www.myget.org/feed/cefsharp/package/nuget/CefSharp.Wpf"><img src="https://img.shields.io/myget/cefsharp/v/CefSharp.Wpf.svg?style=flat&label=Wpf" alt="MyGet Pre Release"></a></li>
<li><a href="https://www.myget.org/feed/cefsharp/package/nuget/CefSharp.OffScreen"><img src="https://img.shields.io/myget/cefsharp/v/CefSharp.OffScreen.svg?style=flat&label=OffScreen" alt="MyGet Pre Release"></a></li>
</ul>
<p><strong>Pre-release</strong><br></p>
<ul>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.WinForms/"><img src="http://img.shields.io/nuget/vpre/CefSharp.WinForms.svg?style=flat&label=CefSharp.WinForms" alt="CefSharp.WinForms"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.Wpf/"><img src="http://img.shields.io/nuget/vpre/CefSharp.Wpf.svg?style=flat&label=CefSharp.Wpf" alt="CefSharp.Wpf"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.OffScreen/"><img src="http://img.shields.io/nuget/vpre/CefSharp.OffScreen.svg?style=flat&label=CefSharp.OffScreen" alt="CefSharp.OffScreen"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.WinForms.NETCore/"><img src="http://img.shields.io/nuget/vpre/CefSharp.WinForms.NETCore.svg?style=flat&label=CefSharp.WinForms.NETCore" alt="CefSharp.WinForms.NETCore"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.Wpf.NETCore/"><img src="http://img.shields.io/nuget/vpre/CefSharp.Wpf.NETCore.svg?style=flat&label=CefSharp.Wpf.NETCore" alt="CefSharp.Wpf.NETCore"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.OffScreen.NETCore/"><img src="http://img.shields.io/nuget/vpre/CefSharp.OffScreen.NETCore.svg?style=flat&label=CefSharp.OffScreen.NETCore" alt="CefSharp.OffScreen.NETCore"></a></p> </li>
</ul>
<p><strong>Stable</strong><br></p>
<ul>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.WinForms/"><img src="http://img.shields.io/nuget/v/CefSharp.WinForms.svg?style=flat&label=CefSharp.WinForms" alt="CefSharp.WinForms"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.Wpf/"><img src="http://img.shields.io/nuget/v/CefSharp.Wpf.svg?style=flat&label=CefSharp.Wpf" alt="CefSharp.Wpf"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.OffScreen/"><img src="http://img.shields.io/nuget/v/CefSharp.OffScreen.svg?style=flat&label=CefSharp.OffScreen" alt="CefSharp.OffScreen"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.WinForms.NETCore/"><img src="http://img.shields.io/nuget/v/CefSharp.WinForms.NETCore.svg?style=flat&label=CefSharp.WinForms.NETCore" alt="CefSharp.WinForms.NETCore"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.Wpf.NETCore/"><img src="http://img.shields.io/nuget/v/CefSharp.Wpf.NETCore.svg?style=flat&label=CefSharp.Wpf.NETCore" alt="CefSharp.Wpf.NETCore"></a></p> </li>
<li> <p><a href="http://www.nuget.org/packages/CefSharp.OffScreen.NETCore/"><img src="http://img.shields.io/nuget/v/CefSharp.OffScreen.NETCore.svg?style=flat&label=CefSharp.OffScreen.NETCore" alt="CefSharp.OffScreen.NETCore"></a></p> </li>
</ul>
<h3>Release Branches</h3>
<p>With each release a new branch is created, for example the <code>92.0.260</code> release corresponds to the <a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/92">cefsharp/92</a> branch. If you're new to <code>CefSharp</code> and are downloading the source to check it out, please use a <strong>Release</strong> branch.</p>
<p><strong>*</strong> VC++ 2019 is required starting with version 93<br> <strong>**</strong> For .Net Core Packages .Net Core 3.1 or .Net 5/6/7 are required.</p>
<table>
<thead>
<tr>
<th>Branch</th>
<th>CEF Version</th>
<th>VC++ Version</th>
<th>.Net Version</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/">master</a></td>
<td>6099</td>
<td>2019*</td>
<td>4.6.2**</td>
<td>Development</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/120">cefsharp/120</a></td>
<td>6099</td>
<td>2019*</td>
<td>4.6.2**</td>
<td><strong>Release</strong></td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/119">cefsharp/119</a></td>
<td>6045</td>
<td>2019*</td>
<td>4.6.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/118">cefsharp/118</a></td>
<td>5993</td>
<td>2019*</td>
<td>4.6.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/117">cefsharp/117</a></td>
<td>5938</td>
<td>2019*</td>
<td>4.6.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/116">cefsharp/116</a></td>
<td>5845</td>
<td>2019*</td>
<td>4.6.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/115">cefsharp/115</a></td>
<td>5790</td>
<td>2019*</td>
<td>4.6.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/114">cefsharp/114</a></td>
<td>5735</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/113">cefsharp/113</a></td>
<td>5615</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/112">cefsharp/112</a></td>
<td>5615</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/111">cefsharp/111</a></td>
<td>5563</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/110">cefsharp/110</a></td>
<td>5481</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/109">cefsharp/109</a></td>
<td>5414</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/108">cefsharp/108</a></td>
<td>5359</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/107">cefsharp/107</a></td>
<td>5304</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/106">cefsharp/106</a></td>
<td>5249</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/105">cefsharp/105</a></td>
<td>5195</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/104">cefsharp/104</a></td>
<td>5112</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/103">cefsharp/103</a></td>
<td>5060</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/102">cefsharp/102</a></td>
<td>5005</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/101">cefsharp/101</a></td>
<td>4951</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/100">cefsharp/100</a></td>
<td>4896</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/99">cefsharp/99</a></td>
<td>4844</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/98">cefsharp/98</a></td>
<td>4758</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/97">cefsharp/97</a></td>
<td>4692</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/96">cefsharp/96</a></td>
<td>4664</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/95">cefsharp/95</a></td>
<td>4638</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/94">cefsharp/94</a></td>
<td>4606</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/93">cefsharp/93</a></td>
<td>4577</td>
<td>2019*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/92">cefsharp/92</a></td>
<td>4515</td>
<td>2015*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/91">cefsharp/91</a></td>
<td>4472</td>
<td>2015*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/90">cefsharp/90</a></td>
<td>4430</td>
<td>2015*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/89">cefsharp/89</a></td>
<td>4389</td>
<td>2015*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/88">cefsharp/88</a></td>
<td>4324</td>
<td>2015*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/87">cefsharp/87</a></td>
<td>4280</td>
<td>2015*</td>
<td>4.5.2**</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/86">cefsharp/86</a></td>
<td>4240</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/85">cefsharp/85</a></td>
<td>4183</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/84">cefsharp/84</a></td>
<td>4147</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/83">cefsharp/83</a></td>
<td>4103</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/81">cefsharp/81</a></td>
<td>4044</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/79">cefsharp/79</a></td>
<td>3945</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/77">cefsharp/77</a></td>
<td>3865</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/75">cefsharp/75</a></td>
<td>3770</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/73">cefsharp/73</a></td>
<td>3683</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/71">cefsharp/71</a></td>
<td>3578</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/69">cefsharp/69</a></td>
<td>3497</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/67">cefsharp/67</a></td>
<td>3396</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/65">cefsharp/65</a></td>
<td>3325</td>
<td>2015</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/63">cefsharp/63</a></td>
<td>3239</td>
<td>2013</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/62">cefsharp/62</a></td>
<td>3202</td>
<td>2013</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/57">cefsharp/57</a></td>
<td>2987</td>
<td>2013</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/55">cefsharp/55</a></td>
<td>2883</td>
<td>2013</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/53">cefsharp/53</a></td>
<td>2785</td>
<td>2013</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/51">cefsharp/51</a></td>
<td>2704</td>
<td>2013</td>
<td>4.5.2</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/49">cefsharp/49</a></td>
<td>2623</td>
<td>2013</td>
<td>4.0</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/47">cefsharp/47</a></td>
<td>2526</td>
<td>2013</td>
<td>4.0</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/45">cefsharp/45</a></td>
<td>2454</td>
<td>2013</td>
<td>4.0</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/43">cefsharp/43</a></td>
<td>2357</td>
<td>2012</td>
<td>4.0</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/41">cefsharp/41</a></td>
<td>2272</td>
<td>2012</td>
<td>4.0</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/39">cefsharp/39</a></td>
<td>2171</td>
<td>2012</td>
<td>4.0</td>
<td>Unsupported</td>
</tr>
<tr>
<td><a href="https://github.com/cefsharp/CefSharp/tree/cefsharp/37">cefsharp/37</a></td>
<td>2062</td>
<td>2012</td>
<td>4.0</td>
<td>Unsupported</td>
</tr>
</tbody>
</table>
<p><strong>*</strong> VC++ 2019 is required starting with version 93<br> <strong>**</strong> For .Net Core Packages .Net Core 3.1/.Net 5.0 is required.</p>
<h2>Financial Support</h2>
<p>Is your company making money thanks to <code>CefSharp</code>? Do you rely on regular updates to the project? <a href="https://github.com/amaitland">Alex Maitland</a> needs your support! Signup to <a href="https://github.com/sponsors/amaitland">GitHub Sponsors</a>.</p>
<p>One-Time or Recurring contributions can be made through <a href="https://github.com/sponsors/amaitland">GitHub Sponsors</a> it only takes a GitHub account and a credit card. You can also make a One-Time contribution via <a href="https://paypal.me/AlexMaitland">PayPal</a>.</p>
<p>As a stay at home dad I (<a href="https://github.com/amaitland">@amaitland</a>) rely on your contributions to help support my family.</p>
<h2>Links</h2>
<ul>
<li><a href="https://gitlab.com/xiliumhq/chromiumembedded/cefglue">CefGlue</a>: An alternative .NET CEF wrapper built using P/Invoke.</li>
<li><a href="https://github.com/chromiumembedded/cef">CEF GitHub Project</a> : The official CEF issue tracker</li>
<li><a href="http://magpcss.org/ceforum/">CEF Forum</a> : The official CEF Forum</li>
<li><a href="http://magpcss.org/ceforum/apidocs3/index-all.html">CEF API Docs</a> : Well worth a read if you are implementing a new feature</li>
<li><a href="http://cefsharp.github.io/api/">CefSharp API Doc</a></li>
</ul>
<h2>Projects using CefSharp</h2>
<ul>
<li><a href="https://github.com/ramon-mendes/HtmlView">HtmlView</a> : Visual Studio extension bringing CefSharp for showing HTML pages inside VS.</li>
<li><a href="https://github.com/sharpbrowser/SharpBrowser">SharpBrowser</a> : The fastest web browser for C# with tabbed browsing and HTML5/CSS3.</li>
<li><a href="https://github.com/chromelyapps/CefSharp">Chromely CefSharp</a> : Build HTML Desktop Apps on .NET/.NET Core 3/.NET 5 using native GUI, HTML5/CSS.</li>
</ul>
+
+
\ No newline at end of file
diff --git a/c++/daily/index.xml b/c++/daily/index.xml
index 500d876858c..063c110c7db 100644
--- a/c++/daily/index.xml
+++ b/c++/daily/index.xml
@@ -1,14 +1,28 @@
GitHub C++ Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:59Z
+ 2023-12-24T01:30:03Z
Daily Trending of C++ in GitHub
- Krypteria/AtlasLdr
- 2023-12-23T01:25:59Z
- tag:github.com,2023-12-23:/Krypteria/AtlasLdr
-
- <p>Reflective x64 PE/DLL Loader implemented using Dynamic Indirect Syscalls</p><hr><p>Atlas is a reflective x64 loader that has the following features:</p>
<h2>Features</h2>
<ul>
<li>Retrieve of DLL and PE from a remote server</li>
<li>Manual Mapping on a remote process</li>
<li>Position independent code</li>
<li>Use of indirect Syscalls
<ul>
<li>ZwAllocateVirtualMemory</li>
<li>ZwProtectVirtualMemory</li>
<li>ZwQuerySystemInformation</li>
<li>ZwFreeVirtualMemory</li>
<li>ZwCreateThreadEx</li>
</ul> </li>
<li>Single stub for all Syscalls
<ul>
<li>Dynamic SSN retrieve</li>
<li>Dynamic Syscall address resolution</li>
</ul> </li>
<li>Atlas also uses
<ul>
<li>LdrLoadDll</li>
<li>NtWriteVirtualMemory</li>
</ul> </li>
<li>Custom implementations of
<ul>
<li>GetProcAddress</li>
<li>GetModuleHandle</li>
</ul> </li>
<li>API hashing</li>
<li>Cleanup on error</li>
<li>Variable EntryPoint</li>
</ul>
<h2>Usage</h2>
<p><img src="https://github.com/Krypteria/AtlasLdr/assets/55555187/8737996e-2da8-4025-b128-0e65d1080af0" alt="atlasldr"></p>
<h2>Compilation</h2>
<p>Atlas needs to be compiled using <strong>x86_64-w64-mingw32-g++</strong>, once you have it on your system, just execute make (or mingw32-make.exe) on the project folder</p>
<p><img src="https://github.com/Krypteria/AtlasLdr/assets/55555187/db6b328f-a916-4ccc-bd14-1d4bead19d8a" alt="atlascompilation"></p>
<h2>Future work</h2>
<ul>
<li>Improve the way the syscalls are made</li>
<li>x86 support</li>
<li>Give more flexibility to the HTTP client</li>
<li>Implement some form of encryption on the remote connection</li>
</ul>
<h2>Disclaimer</h2>
<p>There are improvements that could be made such as modifying the way syscalls are executed with a consistent and error-proof assembly code. In the future this could be implemented.</p>
+ infiniflow/infinity
+ 2023-12-24T01:30:03Z
+ tag:github.com,2023-12-24:/infiniflow/infinity
+
+ <p>The AI-native database built for LLM applications, providing incredibly fast vector and full-text search</p><hr><div align="center">
<img width="187" src="https://user-images.githubusercontent.com/93570324/234292265-889228a8-7a68-4e2d-b891-f75262410af1.png">
</div>
<p align="center"> <b>The AI-native database built for LLM applications, providing incredibly fast vector and full-text search</b> </p>
<h4 align="center"> <a href="https://github.com/infiniflow/infinity/issues/338">Roadmap 2024</a> | <a href="https://twitter.com/infiniflowai">Twitter</a> | <a href="https://discord.gg/jEfRUwEYEV">Discord</a> | <a href="https://www.youtube.com/@InfiniFlow-AI">YouTube</a> | </h4>
<p>Infinity is a cutting-edge AI-native database that provides a wide range of search capabilities for rich data types such as vectors, full-text, and structured data. It provides robust support for various LLM applications, including search, recommenders, question-answering, conversational AI, copilot, content generation, and many more <strong>RAG</strong> (Retrieval-augmented Generation) applications.</p>
<h2>🌟 Key Features</h2>
<p>Infinity comes with high performance, flexibility, ease-of-use, and many features designed to address the challenges facing the next-generation AI applications:</p>
<h3>⚡️ Incredibly fast</h3>
<ul>
<li>Achieves 0.1 milliseconds query latency on million-scale vector datasets.</li>
<li>Up to 10K QPS on million-scale vector datasets.</li>
</ul>
<blockquote>
<p>See the <a href="https://raw.githubusercontent.com/infiniflow/infinity/main/docs/benchmark.md">Benchmark</a>.</p>
</blockquote>
<h3>🔮 Fused search</h3>
<p>Supports a fused search of multiple embeddings and full text, in addition to filtering.</p>
<h3>🍔 Rich data types</h3>
<p>Supports a wide range of data types including strings, numerics, vectors, and more.</p>
<h3>🎁 Ease-of-use</h3>
<ul>
<li>Intuitive Python API. See the <a href="https://raw.githubusercontent.com/infiniflow/infinity/main/docs/pysdk_api_reference.md">Python API</a></li>
<li>A single-binary architecture with no dependencies, making deployment a breeze.</li>
</ul>
<h2>🎮 Get Started</h2>
<h3>Docker pull</h3>
<pre><code class="language-bash">docker pull infiniflow/infinity
docker run -d --name infinity -v /tmp/infinity/:/tmp/infinity --network=host infiniflow/infinity bash ./opt/bin/infinity
</code></pre>
<h3>Install Infinity's Python client</h3>
<pre><code class="language-bash">pip install infinity_sdk
</code></pre>
<h3>Import necessary modules</h3>
<pre><code class="language-python">import infinity
import infinity.index as index
from infinity.common import REMOTE_HOST
</code></pre>
<h3>Connect to the remote server</h3>
<pre><code class="language-python">infinity_obj = infinity.connect(REMOTE_HOST)
</code></pre>
<h3>Get a database</h3>
<pre><code class="language-python">db = infinity_obj.get_database("default")
</code></pre>
<h3>Create a table</h3>
<pre><code class="language-python"># Drop my_table if it already exists
db.drop_table("my_table", if_exists=True)
# Create a table named "my_table"
table=db.create_table("my_table", {"num": "integer", "body": "varchar", "vec": "vector, 4, float"}, None)
</code></pre>
<h3>Insert two records</h3>
<pre><code class="language-python">table.insert([{"num": 1, "body": "unnecessary and harmful", "vec": [1.0, 1.2, 0.8, 0.9]}])
table.insert([{"num": 2, "body": "Office for Harmful Blooms", "vec": [4.0, 4.2, 4.3, 4.5]}])
</code></pre>
<h3>Execute a vector search</h3>
<pre><code class="language-python">res = table.output(["*"]).knn("vec", [3.0, 2.8, 2.7, 3.1], "float", "ip", 2).to_pl()
print(res)
</code></pre>
<blockquote>
<p>💡 For more information about the Python API, see the <a href="https://raw.githubusercontent.com/infiniflow/infinity/main/docs/pysdk_api_reference.md">Python API Reference</a>.</p>
</blockquote>
<h2>🛠️ Build from Source</h2>
<p>See <a href="https://raw.githubusercontent.com/infiniflow/infinity/main/docs/build_from_source.md">Build from Source</a>.</p>
<h2>📜 Roadmap</h2>
<p>See the <a href="https://github.com/infiniflow/infinity/issues/338">Infinity Roadmap 2024</a></p>
<h2>🙌 Community</h2>
<ul>
<li><a href="https://discord.gg/jEfRUwEYEV">Discord</a></li>
<li><a href="https://twitter.com/infiniflowai">Twitter</a></li>
<li><a href="https://github.com/infiniflow/infinity/discussions">GitHub Discussions</a></li>
<li><a href="https://www.youtube.com/@InfiniFlow-AI">YouTube</a></li>
</ul>
+
+
+ wangzhaode/mnn-llm
+ 2023-12-24T01:30:03Z
+ tag:github.com,2023-12-24:/wangzhaode/mnn-llm
+
+ <p>llm deploy project based mnn.</p><hr><p><img src="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/resource/logo.png" alt="mnn-llm"></p>
<h1>mnn-llm</h1>
<p><a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/LICENSE.txt"><img src="https://img.shields.io/github/license/wangzhaode/mnn-llm" alt="License"></a> <a href="https://github.com/wangzhaode/mnn-llm/releases"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/total" alt="Download"></a></p>
<p><a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/README_en.md">English</a></p>
<h2>示例工程</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/demo/cli_demo.cpp">cli</a>: 使用命令行编译,android编译参考<a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/script/android_build.sh">android_build.sh</a></li>
<li><a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/demo/web_demo.cpp">web</a>: 使用命令行编译,运行时需要指定<a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/web">web资源</a></li>
<li><a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/android/">android</a>: 使用Android Studio打开编译;APK下载: <a href="https://github.com/wangzhaode/mnn-llm/releases/tag/qwen-1.8b-apk"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/qwen-1.8b-apk/total" alt="Download"></a></li>
<li><a href="https://raw.githubusercontent.com/wangzhaode/mnn-llm/master/ios/README.md">ios</a>: 使用Xcode打开编译;🚀🚀🚀<strong>该示例代码100%由ChatGPT生成</strong>🚀🚀🚀</li>
</ul>
<h2>模型支持</h2>
<p>llm模型导出<code>onnx</code>和<code>mnn</code>模型请使用<a href="https://github.com/wangzhaode/llm-export">llm-export</a></p>
<p>当前支持以模型:</p>
<table>
<thead>
<tr>
<th>model</th>
<th>onnx-fp32</th>
<th>mnn-int4</th>
</tr>
</thead>
<tbody>
<tr>
<td>chatglm-6b</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/chatglm-6b-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/chatglm-6b-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/chatglm-6b-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/chatglm-6b-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>chatglm2-6b</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/chatglm2-6b-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/chatglm2-6b-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/chatglm2-6b-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/chatglm2-6b-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>chatglm3-6b</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/chatglm3-6b-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/chatglm3-6b-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/chatglm3-6b-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/chatglm3-6b-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>codegeex2-6b</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/codegeex2-6b-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/codegeex2-6b-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/codegeex2-6b-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/codegeex2-6b-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>Qwen-7B-Chat</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/qwen-7b-chat-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/qwen-7b-chat-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/qwen-7b-chat-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/qwen-7b-chat-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>Baichuan2-7B-Chat</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/baichuan2-7b-chat-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/baichuan2-7b-chat-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/baichuan2-7b-chat-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/baichuan2-7b-chat-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>Llama-2-7b-chat</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/llama2-7b-chat-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/llama2-7b-chat-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/llama2-7b-chat-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/llama2-7b-chat-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>internlm-chat-7b</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/internlm-7b-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/internlm-7b-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/internlm-chat-7b-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/internlm-chat-7b-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>Qwen-1_8B-Chat</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/qwen-1.8b-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/qwen-1.8b-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/qwen-1.8b-mnn"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/qwen-1.8b-mnn/total" alt="Download"></a></td>
</tr>
<tr>
<td>phi-2</td>
<td><a href="https://github.com/wangzhaode/llm-export/releases/tag/phi-2-onnx"><img src="https://img.shields.io/github/downloads/wangzhaode/llm-export/phi-2-onnx/total" alt="Download"></a></td>
<td><a href="https://github.com/wangzhaode/mnn-llm/releases/tag/qwen-phi2-mnn-int4"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/phi2-mnn-int4/total" alt="Download"></a></td>
</tr>
</tbody>
</table>
<p>其他版本:</p>
<ul>
<li>Qwen-1_8B-Chat-int8:<a href="https://github.com/wangzhaode/mnn-llm/releases/tag/qwen-1.8b-mnn-int8"><img src="https://img.shields.io/github/downloads/wangzhaode/mnn-llm/qwen-1.8b-mnn-int8/total" alt="Download"></a></li>
</ul>
<h3>速度</h3>
<h4>CPU 4线程速度: <code>prefill / decode</code> <code>tok/s</code></h4>
<table>
<thead>
<tr>
<th align="center">model</th>
<th align="center">android(f16/32)</th>
<th align="center">macos (f32)</th>
<th align="center">linux (f32)</th>
<th align="center">windows (f32)</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">qwen-1.8b-int4</td>
<td align="center">100.21 / 22.22</td>
<td align="center">84.85 / 19.93</td>
<td align="center">151.00 / 35.89</td>
<td align="center">117.30 / 33.40</td>
</tr>
<tr>
<td align="center">qwen-1.8b-int8</td>
<td align="center">99.95 / 16.94</td>
<td align="center">67.70 / 13.45</td>
<td align="center">118.51 / 24.90</td>
<td align="center">97.19 / 22.76</td>
</tr>
<tr>
<td align="center">chatglm-6b-int4</td>
<td align="center">17.37 / 6.69</td>
<td align="center">19.79 / 6.10</td>
<td align="center">34.05 / 10.82</td>
<td align="center">30.73 / 10.63</td>
</tr>
<tr>
<td align="center">chatglm2-6b-int4</td>
<td align="center">26.41 / 8.21</td>
<td align="center">20.78 / 6.70</td>
<td align="center">36.99 / 11.50</td>
<td align="center">33.25 / 11.47</td>
</tr>
<tr>
<td align="center">chatglm3-6b-int4</td>
<td align="center">26.24 / 7.94</td>
<td align="center">19.67 / 6.67</td>
<td align="center">37.33 / 11.92</td>
<td align="center">33.61 / 11.21</td>
</tr>
<tr>
<td align="center">qwen-7b-int4</td>
<td align="center">14.60 / 6.96</td>
<td align="center">19.79 / 6.06</td>
<td align="center">33.55 / 10.20</td>
<td align="center">29.05 / 9.62</td>
</tr>
<tr>
<td align="center">baichuan2-7b-int4</td>
<td align="center">13.87 / 6.08</td>
<td align="center">17.21 / 6.10</td>
<td align="center">30.11 / 10.87</td>
<td align="center">26.31 / 9.84</td>
</tr>
<tr>
<td align="center">llama-2-7b-int4</td>
<td align="center">17.98 / 5.17</td>
<td align="center">19.72 / 5.06</td>
<td align="center">34.47 / 9.29</td>
<td align="center">28.66 / 8.90</td>
</tr>
</tbody>
</table>
<p>测试的系统和设备信息如下,</p>
<table>
<thead>
<tr>
<th align="center">os</th>
<th align="center">device</th>
<th align="center">CPU</th>
<th align="center">Memory</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">android</td>
<td align="center">XiaoMi12</td>
<td align="center">Snapdragon 8gen1</td>
<td align="center">8 GB</td>
</tr>
<tr>
<td align="center">macos</td>
<td align="center">MacBook Pro 2019</td>
<td align="center">Intel(R) Core(TM) i7-9750H</td>
<td align="center">16 GB</td>
</tr>
<tr>
<td align="center">linux</td>
<td align="center">PC</td>
<td align="center">Intel(R) Core(TM) i7-13700K</td>
<td align="center">32GB</td>
</tr>
<tr>
<td align="center">windows</td>
<td align="center">PC</td>
<td align="center">Intel(R) Core(TM) i7-13700K</td>
<td align="center">32GB</td>
</tr>
</tbody>
</table>
<h3>下载int4模型</h3>
<pre><code># <model> like `chatglm-6b`
# linux/macos
./script/download_model.sh <model>
# windows
./script/download_model.ps1 <model>
</code></pre>
<h2>构建</h2>
<p>当前构建状态:</p>
<table>
<thead>
<tr>
<th align="center">System</th>
<th align="center">Build Statud</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">Linux</td>
<td align="center"><a href="https://github.com/wangzhaode/mnn-llm/actions/workflows/linux.yml"><img src="https://github.com/wangzhaode/mnn-llm/actions/workflows/linux.yml/badge.svg?sanitize=true" alt="Build Status"></a></td>
</tr>
<tr>
<td align="center">Macos</td>
<td align="center"><a href="https://github.com/wangzhaode/mnn-llm/actions/workflows/macos.yml"><img src="https://github.com/wangzhaode/mnn-llm/actions/workflows/macos.yml/badge.svg?sanitize=true" alt="Build Status"></a></td>
</tr>
<tr>
<td align="center">Windows</td>
<td align="center"><a href="https://github.com/wangzhaode/mnn-llm/actions/workflows/windows.yml"><img src="https://github.com/wangzhaode/mnn-llm/actions/workflows/windows.yml/badge.svg?sanitize=true" alt="Build Status"></a></td>
</tr>
<tr>
<td align="center">Android</td>
<td align="center"><a href="https://github.com/wangzhaode/mnn-llm/actions/workflows/android.yml"><img src="https://github.com/wangzhaode/mnn-llm/actions/workflows/android.yml/badge.svg?sanitize=true" alt="Build Status"></a></td>
</tr>
</tbody>
</table>
<h3>本地编译</h3>
<pre><code># linux
./script/linux_build.sh
# macos
./script/macos_build.sh
# windows msvc
./script/windows_build.ps1
# android
./script/android_build.sh
</code></pre>
<p>默认使用<code>CPU</code>后端,如果使用其他后端,可以在脚本中添加<code>MNN</code>编译宏</p>
<ul>
<li>cuda: <code>-DMNN_CUDA=ON</code></li>
<li>opencl: <code>-DMNN_OPENCL=ON</code></li>
</ul>
<h3>4. 执行</h3>
<pre><code class="language-bash"># linux/macos
./cli_demo qwen-1.8b-int4 # cli demo
./web_demo qwen-1.8b-int4 ../web # web ui demo
# windows
.\Debug\cli_demo.exe qwen-1.8b-int4
.\Debug\web_demo.exe qwen-1.8b-int4 ../web
# android
adb push libs/*.so build/libllm.so build/cli_demo /data/local/tmp
adb push model_dir /data/local/tmp
adb shell "cd /data/local/tmp && export LD_LIBRARY_PATH=. && ./cli_demo qwen-1.8b-int4"
</code></pre>
<h2>Reference</h2>
<ul>
<li><a href="https://modelscope.cn/models/ZhipuAI/chatglm-6b/summary">chatglm-6b</a></li>
<li><a href="https://modelscope.cn/models/ZhipuAI/chatglm2-6b/summary">chatglm2-6b</a></li>
<li><a href="https://modelscope.cn/models/ZhipuAI/chatglm3-6b/summary">chatglm3-6b</a></li>
<li><a href="https://modelscope.cn/models/ZhipuAI/codegeex2-6b/summary">codegeex2-6b</a></li>
<li><a href="https://modelscope.cn/models/baichuan-inc/baichuan-7B/summary">Baichuan2-7B-Chat</a></li>
<li><a href="https://modelscope.cn/models/qwen/Qwen-7B-Chat/summary">Qwen-7B-Chat</a></li>
<li><a href="https://modelscope.cn/models/qwen/Qwen-1_8B-Chat/summary">Qwen-1.8B-Chat</a></li>
<li><a href="https://modelscope.cn/models/modelscope/Llama-2-7b-chat-ms/summary">Llama-2-7b-chat-ms</a></li>
<li><a href="https://modelscope.cn/models/Shanghai_AI_Laboratory/internlm-chat-7b/summary">internlm-chat-7b</a></li>
<li><a href="https://modelscope.cn/models/AI-ModelScope/phi-2/summary">phi-2</a></li>
<li><a href="https://github.com/yhirose/cpp-httplib">cpp-httplib</a></li>
<li><a href="https://github.com/xqdoo00o/chatgpt-web">chatgpt-web</a></li>
<li><a href="https://github.com/BrettFX/ChatViewDemo">ChatViewDemo</a></li>
</ul>
+
+
+ openframeworks/openFrameworks
+ 2023-12-24T01:30:03Z
+ tag:github.com,2023-12-24:/openframeworks/openFrameworks
+
+ <p>openFrameworks is a community-developed cross platform toolkit for creative coding in C++.</p><hr><h1><a href="http://openframeworks.cc/">openFrameworks</a></h1>
<p>openFrameworks is a C++ toolkit for creative coding. If you are new to OF, welcome!</p>
<ul>
<li><a href="https://github.com/openframeworks/openFrameworks/releases">Grab the Nightly Release (to avoid submodule cloning)</a></li>
<li><a href="https://openframeworks.cc/download/">Setup guides for different Platforms</a></li>
<li><a href="https://join.slack.com/t/openframeworks/shared_invite/zt-1r2brqms0-dZMMFZgZhFTgomjJ0vlCjA">Join Our Slack</a></li>
<li><a href="https://forum.openframeworks.cc">Discuss on the Forum</a></li>
<li><a href="https://fosstodon.org/@openframeworks">Follow OF on Mastodon</a></li>
</ul>
<h2>Build status</h2>
<ul>
<li>The <strong>master</strong> branch contains the newest, most recently updated code. This code is packaged and available for download in the "Nightly Builds" section of <a href="https://openframeworks.cc/download/">openframeworks.cc/download</a>.</li>
<li>The <strong>stable</strong> branch contains the code corresponding to the last stable openFrameworks release. This stable code is packaged and available for download at <a href="https://openframeworks.cc/download/">openframeworks.cc/download</a>.</li>
</ul>
<table>
<thead>
<tr>
<th>Platform</th>
<th align="left">Master branch</th>
<th align="left">Stable branch</th>
</tr>
</thead>
<tbody>
<tr>
<td>Windows MSYS2</td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-msys2/badge.svg?sanitize=true" alt="Build status"></a></td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-msys2/badge.svg?branch=stable" alt="Build status"></a></td>
</tr>
<tr>
<td>Windows Visual Studio</td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-vs/badge.svg?sanitize=true" alt="Build status"></a></td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-vs/badge.svg?branch=stable" alt="Build status"></a></td>
</tr>
<tr>
<td>Linux 64 & Arm</td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-linux64-and-arm/badge.svg?sanitize=true" alt="Linux Build Status"></a></td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-linux64-and-arm/badge.svg?branch=stable" alt="Linux Build Status"></a></td>
</tr>
<tr>
<td>Emscripten</td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-emscripten/badge.svg?sanitize=true" alt="Emscripten Build Status"></a></td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-emscripten/badge.svg?branch=stable" alt="Emscripten Build Status"></a></td>
</tr>
<tr>
<td>macos</td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-macos/badge.svg?sanitize=true" alt="macos Build Status"></a></td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-macos/badge.svg?branch=stable" alt="macos Build Status"></a></td>
</tr>
<tr>
<td>iOS & tvOS</td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-ios-tvos/badge.svg?sanitize=true" alt="iOS tvOS Build Status"></a></td>
<td align="left"><a href="https://github.com/openframeworks/openFrameworks/actions"><img src="https://github.com/openframeworks/openFrameworks/workflows/build-ios-tvos/badge.svg?branch=stable" alt="iOS tvOS Build Status"></a></td>
</tr>
</tbody>
</table>
<!-- Android Arm7 | [![Android Build Status](https://github.com/openframeworks/openFrameworks/workflows/build-android/badge.svg)](https://github.com/openframeworks/openFrameworks/actions) | [![Android Build Status](https://github.com/openframeworks/openFrameworks/workflows/build-android/badge.svg?branch=stable)](https://github.com/openframeworks/openFrameworks/actions) -->
<h2>folder structure</h2>
<p>This release of OF comes with several folders:</p>
<ul>
<li>addons</li>
<li>apps</li>
<li>docs</li>
<li>examples</li>
<li>export (on some systems)</li>
<li>libs</li>
<li>other</li>
<li>scripts</li>
<li>projectGenerator</li>
</ul>
<p><code>docs</code> has some documentation around OF usage, per platform things to consider, etc. You should definitely take a look in there; for example, if you are on OSX, read the osx.md. <code>apps</code> and <code>examples</code> are where projects go -- <code>examples</code> contains a variety of projects that show you how to use OF, and <code>apps</code> is where your own projects will go. <code>libs</code> contains the libraries that OF uses, including the openframeworks core itself. <code>addons</code> are for additional functionality that's not part of the core. <code>export</code> is for DLLs and dylibs that need to be put in each compiled project. The <code>scripts</code> folder has the templates and small scripts for automating OF per platform. <code>project generator</code> is a GUI based tool for making new projects - this folder is only there in packaged releases.</p>
<p>One idea that's important is that OF releases are designed to be self-contained. You can put them anywhere on your hard drive, but it's not possible to mix different releases of OF together, so please keep each release (0.8.0, 0.8.1) separate. Projects may generally work from release to release, but this is not guaranteed. Because OF is self-contained, there's extensive use of local file paths (ie, ../../../) throughout OF. It's important to be aware of how directories are structured. A common error is to take a project and move it so that it's a level below or above where it used to be compared to the root of OF. This means that links such as ../../../libs will break.</p>
<h2>Get involved</h2>
<p>The openframeworks forum:</p>
<p><a href="http://forum.openframeworks.cc/">http://forum.openframeworks.cc/</a></p>
<p>is a warm and friendly place. Please ask or answer a question. The most important part of this project is that it's a community, more than just a tool, so please join us! Also, this is free software, and we learn so much about what is hard, what doesn't make sense, what is useful, etc. The most basic questions are acceptable here! Don't worry, just join the conversation. Learning in OF is social, it's hard to do it alone, but together we can get far!</p>
<p>Our GitHub site is active:</p>
<p><a href="https://github.com/openframeworks/openFrameworks">https://github.com/openframeworks/openFrameworks</a></p>
<p>if you have bugs or feature requests, consider opening an issue. If you are a developer and want to help, pull requests are warmly welcome. Please read the contributing guide for guidelines:</p>
<p><a href="https://github.com/openframeworks/openFrameworks/raw/master/CONTRIBUTING.md">https://github.com/openframeworks/openFrameworks/blob/master/CONTRIBUTING.md</a></p>
<p>We also have a developer's mailing list, which is useful for discussing issues around the development and future of OF.</p>
<h2>Developers</h2>
<p>To grab a copy of openFrameworks for your platform, check the <a href="http://openframeworks.cc/download">download page</a> on the main site.</p>
<p>If you are working with the Git repository, the <code>stable</code> branch of the OF repository corresponds to the most recent release, with a few important differences:</p>
<ol>
<li>The release includes a simple openFrameworks project generator.</li>
<li>This GitHub repository contains code and libs for all the platforms, but the releases are done on a per-platform basis.</li>
<li>This GitHub repository has no project files for the different examples. They are generated automatically for each release using a tool in <code>apps/projectGenerator/</code>.</li>
<li>There are no external dependencies in this repository, you can download them using the download_libs.sh script for each platform in the particular platform folder inside scripts.</li>
</ol>
<p>If you want to work with the openFrameworks GitHub repository, you need to download the external dependencies and you should use the project generator to create project files for all the code in <code>examples/</code>. To generate the project files with the project generator enable the 'Advanced Options' in the settings tab, then use 'Update Multiple' to update the projects for the <code>examples/</code> folder path in the repo.</p>
<p>To set up the project generator submodule within the OF repo, use the command <code>git submodule init</code> then <code>git submodule update</code> whilst inside the openFrameworks repo.</p>
<p>For more info on working with the Project Generator, for per-platform readmes, and more information, see the <a href="https://raw.githubusercontent.com/openframeworks/openFrameworks/master/docs/table_of_contents.md">documentation</a>.</p>
<h2>Versioning</h2>
<p>openFrameworks uses <a href="http://semver.org/">Semantic Versioning</a>, although strict adherence will only come into effect at version 1.0.0.</p>
\ No newline at end of file
diff --git a/c++/weekly/index.xml b/c++/weekly/index.xml
new file mode 100644
index 00000000000..adddc7ae411
--- /dev/null
+++ b/c++/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub C++ Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:50Z
+ Weekly Trending of C++ in GitHub
+
+
+ nasa/fprime
+ 2023-12-24T01:46:50Z
+ tag:github.com,2023-12-24:/nasa/fprime
+
+ <p>F´ - A flight software and embedded systems framework</p><hr><p align="center"> <img width="230em" src="https://raw.githubusercontent.com/nasa/fprime/devel/docs/img/fprime-logo.png"><br> </p>
<h2 align="center">A Flight-Proven, Multi-Platform, Open-Source Flight Software Framework</h2>
<p></p>
<h1></h1>
<p>F´ (F Prime) is a component-driven framework that enables rapid development and deployment of spaceflight and other embedded software applications. Originally developed at the <a href="https://www.jpl.nasa.gov/">Jet Propulsion Laboratory</a>, F´ has been successfully deployed on <a href="https://nasa.github.io/fprime/projects.html">several space applications</a>. It is tailored but not limited to small-scale spaceflight systems such as CubeSats, SmallSats, and instruments.</p>
<p><strong>Please Visit the F´ Website:</strong> <a href="https://nasa.github.io/fprime/">https://nasa.github.io/fprime</a> for more information.</p>
<h2>What does F´ provide</h2>
<ul>
<li>An architecture that decomposes flight software into discrete components with well-defined interfaces</li>
<li>A C++ framework that provides core capabilities such as message queues and threads</li>
<li>Modeling tools for specifying components and connections and automatically generating code</li>
<li>A growing collection of ready-to-use components</li>
<li>Testing tools for testing flight software at the unit and integration levels.</li>
</ul>
<p>Learn more about F' key features <a href="https://nasa.github.io/fprime/features.html">here</a>.</p>
<h2>System Requirements</h2>
<ol>
<li>Linux, Windows with WSL, or macOS operating system</li>
<li>git</li>
<li><a href="https://cmake.org/download/">CMake 3.16+</a>. CLI tool must be available on the system path.</li>
<li>CLang or GNU C and C++ compilers (e.g. gcc and g++)</li>
<li><a href="https://www.python.org/downloads/">Python 3.8+</a>, virtual environments, and PIP</li>
</ol>
<h2>Getting Started</h2>
<p>To get started with F´, install the F´ toolset with:</p>
<pre><code>pip install fprime-tools
</code></pre>
<p>Then, create a new project with:</p>
<pre><code>fprime-util new --project
</code></pre>
<p>See the <a href="https://fprime-community.github.io/fprime-tutorial-hello-world/">HelloWorld Tutorial</a> to guide you through all the steps of developing an F´ project.</p>
<p>New users are encouraged to read through the <a href="https://nasa.github.io/fprime/UsersGuide/guide.html">User Guide</a> and explore the <a href="https://nasa.github.io/fprime/Tutorials/README.html">other tutorials</a>.</p>
<h2>Getting Help</h2>
<h3>Discussions</h3>
<p>To ask questions, discuss improvements, and ask for help please use the project's <a href="https://github.com/nasa/fprime/discussions">GitHub Discussions</a>.</p>
<h3>Bug reports</h3>
<p>To report bugs and issues, <a href="https://github.com/nasa/fprime/issues">open an issue here</a>.</p>
<h3>Community</h3>
<p>The <a href="https://github.com/fprime-community">F´ Community</a> GitHub Organization contains third party contributions, more documentation of flight software development, and additional resources.</p>
<h2>Resources</h2>
<ul>
<li><a href="https://nasa.github.io/fprime/UsersGuide/guide.html">User Guide</a></li>
<li><a href="https://nasa.github.io/fprime/Tutorials/README.html">Tutorials</a></li>
<li><a href="https://github.com/nasa/fprime/discussions">Discussions</a></li>
<li><a href="https://github.com/nasa/fprime/issues">Submit an Issue</a></li>
<li><a href="https://github.com/fprime-community">F´ Community</a></li>
</ul>
<h2>Release Notes</h2>
<p>The version history and artifacts associated with the project can be found at <a href="https://github.com/nasa/fprime/releases">Releases</a>.</p>
+
+
+ TrinityCore/TrinityCore
+ 2023-12-24T01:46:50Z
+ tag:github.com,2023-12-24:/TrinityCore/TrinityCore
+
+ <p>TrinityCore Open Source MMO Framework (master = 10.2.0.52649, 3.3.5 = 3.3.5a.12340)</p><hr><h1><img src="https://community.trinitycore.org/public/style_images/1_trinitycore.png" alt="logo"> TrinityCore (master)</h1>
<p><a href="https://isitmaintained.com/project/TrinityCore/TrinityCore" title="Average time to resolve an issue"><img src="https://isitmaintained.com/badge/resolution/TrinityCore/TrinityCore.svg?sanitize=true" alt="Average time to resolve an issue"></a> <a href="https://isitmaintained.com/project/TrinityCore/TrinityCore" title="Percentage of issues still open"><img src="https://isitmaintained.com/badge/open/TrinityCore/TrinityCore.svg?sanitize=true" alt="Percentage of issues still open"></a></p>
<hr>
<ul>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#build-status">Build Status</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#introduction">Introduction</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#requirements">Requirements</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#install">Install</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#reporting-issues">Reporting issues</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#submitting-fixes">Submitting fixes</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#copyright">Copyright</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#authors--contributors">Authors & Contributors</a></li>
<li><a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/#links">Links</a></li>
</ul>
<h2>Build Status</h2>
<table>
<thead>
<tr>
<th align="center">master</th>
<th align="center">3.3.5</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><a href="https://circleci.com/gh/TrinityCore/TrinityCore/tree/master"><img src="https://circleci.com/gh/TrinityCore/TrinityCore/tree/master.svg?style=shield" alt="master Build Status"></a></td>
<td align="center"><a href="https://circleci.com/gh/TrinityCore/TrinityCore/tree/3.3.5"><img src="https://circleci.com/gh/TrinityCore/TrinityCore/tree/3.3.5.svg?style=shield" alt="3.3.5 Build Status"></a></td>
</tr>
<tr>
<td align="center"><a href="https://ci.appveyor.com/project/DDuarte/trinitycore/branch/master"><img src="https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/master?svg=true" alt="master Build status"></a></td>
<td align="center"><a href="https://ci.appveyor.com/project/DDuarte/trinitycore/branch/3.3.5"><img src="https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/3.3.5?svg=true" alt="Build status"></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3Amaster+event%3Apush"><img src="https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=master&event=push" alt="master GCC Build status"></a></td>
<td align="center"><a href="https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3A3.3.5+event%3Apush"><img src="https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=3.3.5&event=push" alt="3.3.5 GCC Build status"></a></td>
</tr>
<tr>
<td align="center"><a href="https://scan.coverity.com/projects/435"><img src="https://scan.coverity.com/projects/435/badge.svg?sanitize=true" alt="Coverity Scan Build Status"></a></td>
<td align="center"><a href="https://scan.coverity.com/projects/4656"><img src="https://scan.coverity.com/projects/4656/badge.svg?sanitize=true" alt="Coverity Scan Build Status"></a></td>
</tr>
</tbody>
</table>
<h2>Introduction</h2>
<p>TrinityCore is a <em>MMORPG</em> Framework based mostly in C++.</p>
<p>It is derived from <em>MaNGOS</em>, the <em>Massive Network Game Object Server</em>, and is based on the code of that project with extensive changes over time to optimize, improve and cleanup the codebase at the same time as improving the in-game mechanics and functionality.</p>
<p>It is completely open source; community involvement is highly encouraged.</p>
<p>If you wish to contribute ideas or code, please visit our site linked below or make pull requests to our <a href="https://github.com/TrinityCore/TrinityCore/pulls">Github repository</a>.</p>
<p>For further information on the TrinityCore project, please visit our project website at <a href="https://www.trinitycore.org">TrinityCore.org</a>.</p>
<h2>Requirements</h2>
<p>Software requirements are available in the <a href="https://trinitycore.info/en/install/requirements">wiki</a> for Windows, Linux and macOS.</p>
<h2>Install</h2>
<p>Detailed installation guides are available in the <a href="https://trinitycore.info/en/home">wiki</a> for Windows, Linux and macOS.</p>
<h2>Reporting issues</h2>
<p>Issues can be reported via the <a href="https://github.com/TrinityCore/TrinityCore/labels/Branch-master">Github issue tracker</a>.</p>
<p>Please take the time to review existing issues before submitting your own to prevent duplicates.</p>
<p>In addition, thoroughly read through the <a href="https://community.trinitycore.org/topic/37-the-trinitycore-issuetracker-and-you/">issue tracker guide</a> to ensure your report contains the required information. Incorrect or poorly formed reports are wasteful and are subject to deletion.</p>
<h2>Submitting fixes</h2>
<p>C++ fixes are submitted as pull requests via Github. For more information on how to properly submit a pull request, read the <a href="https://community.trinitycore.org/topic/9002-howto-maintain-a-remote-fork-for-pull-requests-tortoisegit/">how-to: maintain a remote fork</a>. For SQL only fixes, open a ticket; if a bug report exists for the bug, post on an existing ticket.</p>
<h2>Copyright</h2>
<p>License: GPL 2.0</p>
<p>Read file <a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/COPYING">COPYING</a>.</p>
<h2>Authors & Contributors</h2>
<p>Read file <a href="https://raw.githubusercontent.com/TrinityCore/TrinityCore/master/AUTHORS">AUTHORS</a>.</p>
<h2>Links</h2>
<ul>
<li><a href="https://www.trinitycore.org">Website</a></li>
<li><a href="https://www.trinitycore.info">Wiki</a></li>
<li><a href="https://talk.trinitycore.org/">Forums</a></li>
<li><a href="https://discord.trinitycore.org/">Discord</a></li>
</ul>
+
+
+ chdb-io/chdb
+ 2023-12-24T01:46:50Z
+ tag:github.com,2023-12-24:/chdb-io/chdb
+
+ <p>chDB is an embedded OLAP SQL Engine 🚀 powered by ClickHouse</p><hr><div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/_static/snake-chdb-dark.png" height="130">
<img src="https://raw.githubusercontent.com/chdb-io/chdb/main/docs/_static/snake-chdb.png" height="130">
</picture>
<p><a href="https://github.com/chdb-io/chdb/actions/workflows/build_wheels.yml"><img src="https://github.com/chdb-io/chdb/actions/workflows/build_wheels.yml/badge.svg?event=release" alt="Build X86"></a> <a href="https://pypi.org/project/chdb/"><img src="https://img.shields.io/pypi/v/chdb.svg?sanitize=true" alt="PyPI"></a> <a href="https://pepy.tech/project/chdb"><img src="https://static.pepy.tech/badge/chdb" alt="Downloads"></a> <a href="https://discord.gg/D2Daa2fM5K"><img src="https://img.shields.io/discord/1098133460310294528?logo=Discord" alt="Discord"></a> <a href="https://twitter.com/chdb_io"><img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Twitter" alt="Twitter"></a></p>
</div>
<h1>chDB</h1>
<p><a href="https://raw.githubusercontent.com/chdb-io/chdb/main/README-zh.md">中文</a></p>
<blockquote>
<p>chDB is an embedded SQL OLAP Engine powered by ClickHouse [^1] For more details: <a href="https://auxten.com/the-birth-of-chdb/">The birth of chDB</a></p>
</blockquote>
<h2>Features</h2>
<ul>
<li>In-process SQL OLAP Engine, powered by ClickHouse</li>
<li>No need to install ClickHouse</li>
<li>Minimized data copy from C++ to Python with <a href="https://docs.python.org/3/c-api/memoryview.html">python memoryview</a></li>
<li>Input&Output support Parquet, CSV, JSON, Arrow, ORC and 60+<a href="https://clickhouse.com/docs/en/interfaces/formats">more</a> formats, <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/tests/format_output.py">samples</a></li>
<li>Support Python DB API 2.0, <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/examples/dbapi.py">example</a></li>
</ul>
<h2>Arch</h2>
<div align="center">
<img src="https://raw.githubusercontent.com/chdb-io/chdb/main/docs/_static/arch-chdb2.png" width="450">
</div>
<h2>Get Started</h2>
<p>Get started with <strong>chdb</strong> using our <a href="https://doc.chdb.io">Installation and Usage Examples</a></p>
<br>
<h2>Installation</h2>
<p>Currently, chDB supports Python 3.8+ on macOS and Linux (x86_64 and ARM64).</p>
<pre><code class="language-bash">pip install chdb
</code></pre>
<h2>Usage</h2>
<h3>Run in command line</h3>
<blockquote>
<p><code>python3 -m chdb SQL [OutputFormat]</code></p>
</blockquote>
<pre><code class="language-bash">python3 -m chdb "SELECT 1,'abc'" Pretty
</code></pre>
<br>
<h3>Data Input</h3>
<p>The following methods are available to access on-disk and in-memory data formats:</p>
<details>
<summary><h4>🗂️ Query On File</h4> (Parquet, CSV, JSON, Arrow, ORC and 60+)</summary>
<p>You can execute SQL and return desired format data.</p>
<pre><code class="language-python">import chdb
res = chdb.query('select version()', 'Pretty'); print(res)
</code></pre>
<h3>Work with Parquet or CSV</h3>
<pre><code class="language-python"># See more data type format in tests/format_output.py
res = chdb.query('select * from file("data.parquet", Parquet)', 'JSON'); print(res)
res = chdb.query('select * from file("data.csv", CSV)', 'CSV'); print(res)
print(f"SQL read {res.rows_read()} rows, {res.bytes_read()} bytes, elapsed {res.elapsed()} seconds")
</code></pre>
<h3>Pandas dataframe output</h3>
<pre><code class="language-python"># See more in https://clickhouse.com/docs/en/interfaces/formats
chdb.query('select * from file("data.parquet", Parquet)', 'Dataframe')
</code></pre>
</details>
<details>
<summary><h4>🗂️ Query On Table</h4> (Pandas DataFrame, Parquet file/bytes, Arrow bytes) </summary>
<h3>Query On Pandas DataFrame</h3>
<pre><code class="language-python">import chdb.dataframe as cdf
import pandas as pd
# Join 2 DataFrames
df1 = pd.DataFrame({'a': [1, 2, 3], 'b': ["one", "two", "three"]})
df2 = pd.DataFrame({'c': [1, 2, 3], 'd': ["①", "②", "③"]})
ret_tbl = cdf.query(sql="select * from __tbl1__ t1 join __tbl2__ t2 on t1.a = t2.c",
tbl1=df1, tbl2=df2)
print(ret_tbl)
# Query on the DataFrame Table
print(ret_tbl.query('select b, sum(a) from __table__ group by b'))
</code></pre>
</details>
<details>
<summary><h4>🗂️ Query with Stateful Session</h4></summary>
<pre><code class="language-python">from chdb import session as chs
## Create DB, Table, View in temp session, auto cleanup when session is deleted.
sess = chs.Session()
sess.query("CREATE DATABASE IF NOT EXISTS db_xxx ENGINE = Atomic")
sess.query("CREATE TABLE IF NOT EXISTS db_xxx.log_table_xxx (x String, y Int) ENGINE = Log;")
sess.query("INSERT INTO db_xxx.log_table_xxx VALUES ('a', 1), ('b', 3), ('c', 2), ('d', 5);")
sess.query(
"CREATE VIEW db_xxx.view_xxx AS SELECT * FROM db_xxx.log_table_xxx LIMIT 4;"
)
print("Select from view:\n")
print(sess.query("SELECT * FROM db_xxx.view_xxx", "Pretty"))
</code></pre>
<p>see also: <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/tests/test_stateful.py">test_stateful.py</a>.</p>
</details>
<details>
<summary><h4>🗂️ Query with Python DB-API 2.0</h4></summary>
<pre><code class="language-python">import chdb.dbapi as dbapi
print("chdb driver version: {0}".format(dbapi.get_client_info()))
conn1 = dbapi.connect()
cur1 = conn1.cursor()
cur1.execute('select version()')
print("description: ", cur1.description)
print("data: ", cur1.fetchone())
cur1.close()
conn1.close()
</code></pre>
</details>
<details>
<summary><h4>🗂️ Query with UDF (User Defined Functions)</h4></summary>
<pre><code class="language-python">from chdb.udf import chdb_udf
from chdb import query
@chdb_udf()
def sum_udf(lhs, rhs):
return int(lhs) + int(rhs)
print(query("select sum_udf(12,22)"))
</code></pre>
<p>see also: <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/tests/test_udf.py">test_udf.py</a>.</p>
</details>
<p>For more examples, see <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/examples">examples</a> and <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/tests">tests</a>.</p>
<br>
<h2>Demos and Examples</h2>
<ul>
<li><a href="https://chdb.dev">Project Documentation</a> and <a href="https://chdb-io.github.io/#/install?id=installation-1">Usage Examples</a></li>
<li><a href="https://colab.research.google.com/drive/1-zKB6oKfXeptggXi0kUX87iR8ZTSr4P3?usp=sharing">Colab Notebooks</a> and other <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/examples">Script Examples</a></li>
<li><a href="https://chdb.fly.dev/?user=default#Ly8gaHR0cHM6Ly9naXRodWIuY29tL21ldHJpY28vY2hkYi1zZXJ2ZXIKU0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCiAgICByb3VuZChhdmcocHJpY2UpKSBBUyBwcmljZQpGUk9NIHVybCgnaHR0cHM6Ly9kYXRhc2V0cy1kb2N1bWVudGF0aW9uLnMzLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tL2hvdXNlX3BhcnF1ZXQvaG91c2VfMC5wYXJxdWV0JykKR1JPVVAgQlkKICAgIHRvd24sCiAgICBkaXN0cmljdApMSU1JVCAxMA==">Public Serverless Demo</a> running on fly.io</li>
</ul>
<h2>Benchmark</h2>
<ul>
<li><a href="https://benchmark.clickhouse.com/#eyJzeXN0ZW0iOnsiQXRoZW5hIChwYXJ0aXRpb25lZCkiOnRydWUsIkF0aGVuYSAoc2luZ2xlKSI6dHJ1ZSwiQXVyb3JhIGZvciBNeVNRTCI6dHJ1ZSwiQXVyb3JhIGZvciBQb3N0Z3JlU1FMIjp0cnVlLCJCeXRlSG91c2UiOnRydWUsImNoREIiOnRydWUsIkNpdHVzIjp0cnVlLCJjbGlja2hvdXNlLWxvY2FsIChwYXJ0aXRpb25lZCkiOnRydWUsImNsaWNraG91c2UtbG9jYWwgKHNpbmdsZSkiOnRydWUsIkNsaWNrSG91c2UiOnRydWUsIkNsaWNrSG91c2UgKHR1bmVkKSI6dHJ1ZSwiQ2xpY2tIb3VzZSAoenN0ZCkiOnRydWUsIkNsaWNrSG91c2UgQ2xvdWQiOnRydWUsIkNsaWNrSG91c2UgKHdlYikiOnRydWUsIkNyYXRlREIiOnRydWUsIkRhdGFiZW5kIjp0cnVlLCJEYXRhRnVzaW9uIChzaW5nbGUpIjp0cnVlLCJBcGFjaGUgRG9yaXMiOnRydWUsIkRydWlkIjp0cnVlLCJEdWNrREIgKFBhcnF1ZXQpIjp0cnVlLCJEdWNrREIiOnRydWUsIkVsYXN0aWNzZWFyY2giOnRydWUsIkVsYXN0aWNzZWFyY2ggKHR1bmVkKSI6ZmFsc2UsIkdyZWVucGx1bSI6dHJ1ZSwiSGVhdnlBSSI6dHJ1ZSwiSHlkcmEiOnRydWUsIkluZm9icmlnaHQiOnRydWUsIktpbmV0aWNhIjp0cnVlLCJNYXJpYURCIENvbHVtblN0b3JlIjp0cnVlLCJNYXJpYURCIjpmYWxzZSwiTW9uZXREQiI6dHJ1ZSwiTW9uZ29EQiI6dHJ1ZSwiTXlTUUwgKE15SVNBTSkiOnRydWUsIk15U1FMIjp0cnVlLCJQaW5vdCI6dHJ1ZSwiUG9zdGdyZVNRTCI6dHJ1ZSwiUG9zdGdyZVNRTCAodHVuZWQpIjpmYWxzZSwiUXVlc3REQiAocGFydGl0aW9uZWQpIjp0cnVlLCJRdWVzdERCIjp0cnVlLCJSZWRzaGlmdCI6dHJ1ZSwiU2VsZWN0REIiOnRydWUsIlNpbmdsZVN0b3JlIjp0cnVlLCJTbm93Zmxha2UiOnRydWUsIlNRTGl0ZSI6dHJ1ZSwiU3RhclJvY2tzIjp0cnVlLCJUaW1lc2NhbGVEQiAoY29tcHJlc3Npb24pIjp0cnVlLCJUaW1lc2NhbGVEQiI6dHJ1ZX0sInR5cGUiOnsic3RhdGVsZXNzIjpmYWxzZSwibWFuYWdlZCI6ZmFsc2UsIkphdmEiOmZhbHNlLCJjb2x1bW4tb3JpZW50ZWQiOmZhbHNlLCJDKysiOmZhbHNlLCJNeVNRTCBjb21wYXRpYmxlIjpmYWxzZSwicm93LW9yaWVudGVkIjpmYWxzZSwiQyI6ZmFsc2UsIlBvc3RncmVTUUwgY29tcGF0aWJsZSI6ZmFsc2UsIkNsaWNrSG91c2UgZGVyaXZhdGl2ZSI6ZmFsc2UsImVtYmVkZGVkIjp0cnVlLCJzZXJ2ZXJsZXNzIjpmYWxzZSwiUnVzdCI6ZmFsc2UsInNlYXJjaCI6ZmFsc2UsImRvY3VtZW50IjpmYWxzZSwidGltZS1zZXJpZXMiOmZhbHNlfSwibWFjaGluZSI6eyJzZXJ2ZXJsZXNzIjp0cnVlLCIxNmFjdSI6dHJ1ZSwiTCI6dHJ1ZSwiTSI6dHJ1ZSwiUyI6dHJ1ZSwiWFMiOnRydWUsImM2YS5tZXRhbCwgNTAwZ2IgZ3AyIjp0cnVlLCJjNmEuNHhsYXJnZSwgNTAwZ2IgZ3AyIjp0cnVlLCJjNS40eGxhcmdlLCA1MDBnYiBncDIiOnRydWUsIjE2IHRocmVhZHMiOnRydWUsIjIwIHRocmVhZHMiOnRydWUsIjI0IHRocmVhZHMiOnRydWUsIjI4IHRocmVhZHMiOnRydWUsIjMwIHRocmVhZHMiOnRydWUsIjQ4IHRocmVhZHMiOnRydWUsIjYwIHRocmVhZHMiOnRydWUsIm01ZC4yNHhsYXJnZSI6dHJ1ZSwiYzVuLjR4bGFyZ2UsIDIwMGdiIGdwMiI6dHJ1ZSwiYzZhLjR4bGFyZ2UsIDE1MDBnYiBncDIiOnRydWUsImRjMi44eGxhcmdlIjp0cnVlLCJyYTMuMTZ4bGFyZ2UiOnRydWUsInJhMy40eGxhcmdlIjp0cnVlLCJyYTMueGxwbHVzIjp0cnVlLCJTMjQiOnRydWUsIlMyIjp0cnVlLCIyWEwiOnRydWUsIjNYTCI6dHJ1ZSwiNFhMIjp0cnVlLCJYTCI6dHJ1ZX0sImNsdXN0ZXJfc2l6ZSI6eyIxIjp0cnVlLCIyIjp0cnVlLCI0Ijp0cnVlLCI4Ijp0cnVlLCIxNiI6dHJ1ZSwiMzIiOnRydWUsIjY0Ijp0cnVlLCIxMjgiOnRydWUsInNlcnZlcmxlc3MiOnRydWUsInVuZGVmaW5lZCI6dHJ1ZX0sIm1ldHJpYyI6ImhvdCIsInF1ZXJpZXMiOlt0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlXX0=">ClickBench of embedded engines</a></li>
</ul>
<h2>Documentation</h2>
<ul>
<li>For chdb specific examples and documentation refer to <a href="https://chdb.dev">chdb.dev</a></li>
<li>For SQL syntax, please refer to <a href="https://clickhouse.com/docs/en/sql-reference/syntax">ClickHouse SQL Reference</a></li>
</ul>
<h2>Events</h2>
<ul>
<li>Demo chDB at <a href="https://t.co/todc13Kn19">ClickHouse v23.7 livehouse!</a> and <a href="https://docs.google.com/presentation/d/1ikqjOlimRa7QAg588TAB_Fna-Tad2WMg7_4AgnbQbFA/edit?usp=sharing">Slides</a></li>
</ul>
<h2>Contributing</h2>
<p>Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are <strong>greatly appreciated</strong>. There are something you can help:</p>
<ul>
<li><input type="checkbox" disabled> Help test and report bugs</li>
<li><input type="checkbox" disabled> Help improve documentation</li>
<li><input type="checkbox" disabled> Help improve code quality and performance</li>
</ul>
<h2>License</h2>
<p>Apache 2.0, see <a href="https://raw.githubusercontent.com/chdb-io/chdb/main/LICENSE.txt">LICENSE</a> for more information.</p>
<h2>Acknowledgments</h2>
<p>chDB is mainly based on <a href="https://github.com/ClickHouse/ClickHouse">ClickHouse</a> [^1] for trade mark and other reasons, I named it chDB.</p>
<h2>Contact</h2>
<ul>
<li>Discord: <a href="https://discord.gg/D2Daa2fM5K">https://discord.gg/D2Daa2fM5K</a></li>
<li>Email: <a href="mailto:auxtenwpc@gmail.com">auxtenwpc@gmail.com</a></li>
<li>Twitter: <a href="https://twitter.com/chdb_io">@chdb</a></li>
</ul>
<br>
<p>[^1]: ClickHouse® is a trademark of ClickHouse Inc. All trademarks, service marks, and logos mentioned or depicted are the property of their respective owners. The use of any third-party trademarks, brand names, product names, and company names does not imply endorsement, affiliation, or association with the respective owners.</p>
+
+
\ No newline at end of file
diff --git a/c-objdump/daily/index.xml b/c-objdump/daily/index.xml
index b65aaa18704..9ff557cae25 100644
--- a/c-objdump/daily/index.xml
+++ b/c-objdump/daily/index.xml
@@ -1,7 +1,7 @@
GitHub C-ObjDump Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:56Z
+ 2023-12-24T01:29:59Z
Daily Trending of C-ObjDump in GitHub
\ No newline at end of file
diff --git a/c-objdump/weekly/index.xml b/c-objdump/weekly/index.xml
new file mode 100644
index 00000000000..d58fa170b5e
--- /dev/null
+++ b/c-objdump/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub C-ObjDump Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:46Z
+ Weekly Trending of C-ObjDump in GitHub
+
+
\ No newline at end of file
diff --git a/c/daily/index.xml b/c/daily/index.xml
index ad0e8e1cc81..f40bcf38b11 100644
--- a/c/daily/index.xml
+++ b/c/daily/index.xml
@@ -1,14 +1,28 @@
GitHub C Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:32Z
+ 2023-12-24T01:29:36Z
Daily Trending of C in GitHub
- s0ngidong3/TPM-SPOOFER
- 2023-12-23T01:25:32Z
- tag:github.com,2023-12-23:/s0ngidong3/TPM-SPOOFER
-
- <p></p><hr><h1>TPM-SPOOFER</h1>
<p>Modern anticheats have started to (ab)use <a href="https://en.wikipedia.org/wiki/Trusted_Platform_Module">TPM (Trusted Platform Module)</a> to obtain yet another unique identifier that can be linked to a player's hardware. This project serves as a proof of concept aiming to demonstrate how to hook into the <a href="https://learn.microsoft.com/en-us/windows/security/hardware-security/tpm/how-windows-uses-the-tpm">Windows TPM stack</a>.</p>
<h2>HWID and TPM</h2>
<p>Unfortunately, a common misconception exists that resetting the TPM is enough to prevent HWID bans. However, this is entirely incorrect. Each TPM has an <strong>Endorsement Key (EK)</strong>, which is embedded during manufacturing, is unique to each TPM, and most importantly, <strong>cannot be changed or removed</strong>. <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/tpm-key-attestation">Read more about that here</a>.</p>
<h2>Possible flags</h2>
<p>I wanted to keep this project as simple as possible, and as such, it uses the good ol' IOCTL dispatch swap. This is most likely the biggest detection vector, even without considering TPM, so <strong>do not use this as is</strong> (<a href="https://github.com/btbd/wpp/">hook WPP</a> or <a href="https://github.com/tandasat/SimpleSvmHook">use hypervisor</a>). For the TPM itself, all it does in its current state is overwrite every request to read any public key. As you can imagine, it is quite trivial to figure out that something is going on. It will suffice for anything that only blindly checks for the EK (which is what a few ACs do at the time of this project's release).</p>
<p>Also make sure to clean up the registry entiries created on boot: <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TPM\WMI\Endorsement</code>.</p>
<h2>Usage</h2>
<p>This repository contains two projects:</p>
<ul>
<li> <p><code>serial checker</code> - Simple console application to read EK from the TPM under Windows and use wmic command to check pc serials</p> </li>
<li> <p><code>tpm</code> - Kernel-mode driver that hooks tpm.sys dispatch to overwrite any command requests for public keys</p> </li>
</ul>
<p>Both of there projects were tested on Windows 11 22H2 22621. You will need <a href="https://visualstudio.microsoft.com/">Visual Studio 2022</a> and <a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk">WDK</a> to compile them.</p>
<p>made by samueltulach and s0ngidong3</p>
<p>discord : _onez.01</p>
+ airockchip/rknn_model_zoo
+ 2023-12-24T01:29:36Z
+ tag:github.com,2023-12-24:/airockchip/rknn_model_zoo
+
+ <p></p><hr><p><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/README_CN.md">简体中文</a> | <a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/README.md">English</a></p>
<h1>RKNN Model Zoo</h1>
<h2>Description</h2>
<p><code>RKNN Model Zoo</code> is developed based on the RKNPU SDK toolchain and provides deployment examples for current mainstream algorithms. Include the process of <code>exporting the RKNN model</code> and using <code>Python API</code> and <code>CAPI</code> to infer the RKNN model.</p>
<ul>
<li>Support <code>RK3562</code>, <code>RK3566</code>, <code>RK3568</code>, <code>RK3588</code> platforms. (<code>RV1103</code>, <code>RV1106</code> platforms support <code>mobilenet</code>, <code>yolov5</code>)</li>
<li><code>RK1808</code>, <code>RK3399PRO</code>, <code>RV1109</code>, <code>RV1126</code> will be supported in next version. (For <code>yolov5/6/7/8</code>, <code>yolox</code>, <code>ppyoloe</code> demos, they are available in <a href="https://github.com/airockchip/rknn_model_zoo/tree/v1.5.0"><code>v1.5.0</code></a>, please switch to <a href="https://github.com/airockchip/rknn_model_zoo/tree/v1.5.0"><code>v1.5.0</code></a> to get them)</li>
</ul>
<h2>Dependency library installation</h2>
<p><code>RKNN Model Zoo</code> relies on <code>RKNN-Toolkit2</code> for model conversion. The Android compilation tool chain is required when compiling the Android demo, and the Linux compilation tool chain is required when compiling the Linux demo. For the installation of these dependencies, please refer to the <code>Quick Start</code> documentation at <a href="https://github.com/airockchip/rknn-toolkit2/tree/master/doc">https://github.com/airockchip/rknn-toolkit2/tree/master/doc</a>.</p>
<ul>
<li>Please note that the Android compilation tool chain recommends using <code>version r18 or r19</code>. Using other versions may encounter the problem of Cdemo compilation failure.</li>
</ul>
<h2>Model support</h2>
<p>In addition to exporting the model from the corresponding respository, the models file are available on <a href="https://console.zbox.filez.com/l/8ufwtG">https://console.zbox.filez.com/l/8ufwtG</a> (key: rknn).</p>
<table>
<thead>
<tr>
<th>Demo<br>(Clip to Description)</th>
<th>Algorithm Category</th>
<th>Dtype support</th>
<th>Pretrain model<br>(Clip to download)</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/mobilenet/README.md">mobilenet</a></td>
<td>Classification</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/MobileNet/mobilenetv2-12.onnx">mobilenetv2-12.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/resnet/README.md">resnet</a></td>
<td>Classification</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/ResNet/resnet50-v2-7.onnx">resnet50-v2-7.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/yolov5/README.md">yolov5</a></td>
<td>Object detection</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov5/yolov5n.onnx">yolov5n.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov5/yolov5s_relu.onnx">yolov5s_relu.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov5/yolov5n.onnx">yolov5s.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov5/yolov5m.onnx">yolov5m.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/yolov6/README.md">yolov6</a></td>
<td>Object detection</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov6/yolov6n.onnx">yolov6n.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov6/yolov6s.onnx">yolov6s.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov6/yolov6m.onnx">yolov6m.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/yolov7/README.md">yolov7</a></td>
<td>Object detection</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov7/yolov7-tiny.onnx">yolov7-tiny.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov7/yolov7.onnx">yolov7.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/yolov8/README.md">yolov8</a></td>
<td>Object detection</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov8/yolov8n.onnx">yolov8n.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov8/yolov8s.onnx">yolov8s.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov8/yolov8m.onnx">yolov8m.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/yolox/README.md">yolox</a></td>
<td>Object detection</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolox/yolox_s.onnx">yolox_s.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolox/yolox_m.onnx">yolox_m.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/ppyoloe/README.md">ppyoloe</a></td>
<td>Object detection</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/ppyoloe/ppyoloe_s.onnx">ppyoloe_s.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/ppyoloe/ppyoloe_m.onnx">ppyoloe_m.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/deeplabv3/README.md">deeplabv3</a></td>
<td>Image segmentation</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/Deeplabv3/deeplab-v3-plus-mobilenet-v2.pb">deeplab-v3-plus-mobilenet-v2.pb</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/yolov5_seg/README.md">yolov5-seg</a></td>
<td>Image segmentation</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov5_seg/yolov5n-seg.onnx">yolov5n-seg.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov5_seg/yolov5s-seg.onnx">yolov5s-seg.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov5_seg/yolov5m-seg.onnx">yolov5m-seg.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/yolov8_seg/README.md">yolov8-seg</a></td>
<td>Image segmentation</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov8_seg/yolov8n-seg.onnx">yolov8n-seg.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov8_seg/yolov8s-seg.onnx">yolov8s-seg.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolov8_seg/yolov8m-seg.onnx">yolov8m-seg.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/ppseg/README.md">ppseg</a></td>
<td>Image segmentation</td>
<td>FP16</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/ppseg/pp_liteseg_cityscapes.onnx">pp_liteseg_cityscapes.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/RetinaFace/README.md">RetinaFace</a></td>
<td>Face key points</td>
<td>INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/RetinaFace/RetinaFace_mobile320.onnx">RetinaFace_mobile320.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/RetinaFace/RetinaFace_resnet50_320.onnx">RetinaFace_resnet50_320.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/LPRNet/README.md">LPRNet</a></td>
<td>Car Plate Recognition</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/LPRNet/lprnet.onnx">lprnet.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/PPOCR/PPOCR-Det/README.md">PPOCR-Det</a></td>
<td>Text detection</td>
<td>FP16/INT8</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/PPOCR/ppocrv4_det.onnx">ppocrv4_det.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/PPOCR/PPOCR-Rec/README.md">PPOCR-Rec</a></td>
<td>Text recognition</td>
<td>FP16</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/PPOCR/ppocrv4_rec.onnx">ppocrv4_rec.onnx</a></td>
</tr>
<tr>
<td><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/examples/lite_transformer/README.md">lite_transformer</a></td>
<td>Neural Machine Translation</td>
<td>FP16</td>
<td><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/lite_transformer/lite-transformer-encoder-16.onnx">lite-transformer-encoder-16.onnx</a><br><a href="https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/lite_transformer/lite-transformer-decoder-16.onnx">lite-transformer-decoder-16.onnx</a></td>
</tr>
</tbody>
</table>
<h2>Model performance benchmark(FPS)</h2>
<table>
<thead>
<tr>
<th>demo</th>
<th>model_name</th>
<th>inputs_shape</th>
<th>dtype</th>
<th>RK3566<br>RK3568</th>
<th>RK3562</th>
<th>RK3588<br>@single_core</th>
</tr>
</thead>
<tbody>
<tr>
<td>mobilenet</td>
<td>mobilenetv2-12</td>
<td>[1, 3, 224, 224]</td>
<td>INT8</td>
<td>197.4</td>
<td>266.8</td>
<td>433.0</td>
</tr>
<tr>
<td>resnet</td>
<td>resnet50-v2-7</td>
<td>[1, 3, 224, 224]</td>
<td>INT8</td>
<td>40.6</td>
<td>54.5</td>
<td>108.6</td>
</tr>
<tr>
<td>yolov5</td>
<td>yolov5s_relu</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>26.7</td>
<td>31.6</td>
<td>63.3</td>
</tr>
<tr>
<td></td>
<td>yolov5n</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>41.6</td>
<td>43.8</td>
<td>68.1</td>
</tr>
<tr>
<td></td>
<td>yolov5s</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>19.9</td>
<td>22.7</td>
<td>42.5</td>
</tr>
<tr>
<td></td>
<td>yolov5m</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>8.7</td>
<td>10.6</td>
<td>19.3</td>
</tr>
<tr>
<td>yolov6</td>
<td>yolov6n</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>50.2</td>
<td>51.5</td>
<td>93.8</td>
</tr>
<tr>
<td></td>
<td>yolov6s</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>15.2</td>
<td>16.8</td>
<td>34.1</td>
</tr>
<tr>
<td></td>
<td>yolov6m</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>7.5</td>
<td>8.0</td>
<td>17.6</td>
</tr>
<tr>
<td>yolov7</td>
<td>yolov7-tiny</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>29.9</td>
<td>34.9</td>
<td>69.7</td>
</tr>
<tr>
<td></td>
<td>yolov7</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>4.7</td>
<td>5.5</td>
<td>10.9</td>
</tr>
<tr>
<td>yolov8</td>
<td>yolov8n</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>35.7</td>
<td>38.5</td>
<td>59.6</td>
</tr>
<tr>
<td></td>
<td>yolov8s</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>15.4</td>
<td>17.1</td>
<td>32.8</td>
</tr>
<tr>
<td></td>
<td>yolov8m</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>6.6</td>
<td>7.5</td>
<td>14.8</td>
</tr>
<tr>
<td>yolox</td>
<td>yolox_s</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>15.5</td>
<td>17.7</td>
<td>32.9</td>
</tr>
<tr>
<td></td>
<td>yolox_m</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>6.7</td>
<td>8.1</td>
<td>14.8</td>
</tr>
<tr>
<td>ppyoloe</td>
<td>ppyoloe_s</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>17.5</td>
<td>19.7</td>
<td>32.9</td>
</tr>
<tr>
<td></td>
<td>ppyoloe_m</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>7.9</td>
<td>8.3</td>
<td>16.2</td>
</tr>
<tr>
<td>deeplabv3</td>
<td>deeplab-v3-plus-mobilenet-v2</td>
<td>[1, 513, 513, 1]</td>
<td>INT8</td>
<td>10.7</td>
<td>20.7</td>
<td>34.4</td>
</tr>
<tr>
<td>yolov5_seg</td>
<td>yolov5n-seg</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>33.9</td>
<td>36.3</td>
<td>58.0</td>
</tr>
<tr>
<td></td>
<td>yolov5s-seg</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>15.3</td>
<td>17.2</td>
<td>32.6</td>
</tr>
<tr>
<td></td>
<td>yolov5m-seg</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>6.8</td>
<td>8.1</td>
<td>15.2</td>
</tr>
<tr>
<td>yolov8_seg</td>
<td>yolov8n-seg</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>29.1</td>
<td>30.7</td>
<td>49.1</td>
</tr>
<tr>
<td></td>
<td>yolov8s-seg</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>11.8</td>
<td>11.3</td>
<td>25.4</td>
</tr>
<tr>
<td></td>
<td>yolov8m-seg</td>
<td>[1, 3, 640, 640]</td>
<td>INT8</td>
<td>5.2</td>
<td>6.1</td>
<td>11.6</td>
</tr>
<tr>
<td>ppseg</td>
<td>pp_liteseg_cityscapes</td>
<td>[1, 3, 512, 512]</td>
<td>FP16</td>
<td>2.6</td>
<td>4.6</td>
<td>13.0</td>
</tr>
<tr>
<td>RetinaFace</td>
<td>RetinaFace_mobile320</td>
<td>[1, 3, 320, 320]</td>
<td>INT8</td>
<td>142.5</td>
<td>279.5</td>
<td>234.7</td>
</tr>
<tr>
<td></td>
<td>RetinaFace_resnet50_320</td>
<td>[1, 3, 320, 320]</td>
<td>INT8</td>
<td>18.5</td>
<td>26.0</td>
<td>48.8</td>
</tr>
<tr>
<td>LPRNet</td>
<td>lprnet</td>
<td>[1, 3, 24, 94]</td>
<td>INT8</td>
<td>58.2</td>
<td>119.7</td>
<td>204.4</td>
</tr>
<tr>
<td>PPOCR-Det</td>
<td>ppocrv4_det</td>
<td>[1, 3, 480, 480]</td>
<td>INT8</td>
<td>24.4</td>
<td>27.5</td>
<td>43.0</td>
</tr>
<tr>
<td>PPOCR-Rec</td>
<td>ppocrv4_rec</td>
<td>[1, 3, 48, 320]</td>
<td>FP16</td>
<td>20.0</td>
<td>45.1</td>
<td>35.7</td>
</tr>
<tr>
<td>lite_transformer</td>
<td>lite-transformer-encoder-16</td>
<td>embedding-256, token-16</td>
<td>FP16</td>
<td>130.8</td>
<td>656.7</td>
<td>261.5</td>
</tr>
<tr>
<td></td>
<td>lite-transformer-decoder-16</td>
<td>embedding-256, token-16</td>
<td>FP16</td>
<td>114.3</td>
<td>151.3</td>
<td>164.0</td>
</tr>
</tbody>
</table>
<ul>
<li>This performance data are collected based on the maximum NPU frequency of each platform.</li>
<li>This performance data calculate the time-consuming of model inference. Does not include the time-consuming of pre-processing and post-processing.</li>
</ul>
<h2>Compile Demo</h2>
<p>For Linux develop board:</p>
<pre><code class="language-sh">./build-linux.sh -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m]
-t : target (rk356x/rk3588/rv1106)
-a : arch (aarch64/armhf)
-d : demo name
-b : build_type(Debug/Release)
-m : enable address sanitizer, build_type need set to Debug
# Here is an example for compiling yolov5 demo for 64-bit Linux RK3566.
./build-linux.sh -t rk356x -a aarch64 -d yolov5
</code></pre>
<p>For Android develop board:</p>
<pre><code class="language-sh"># For Android develop boards, it's require to set path for Android NDK compilation tool path according to the user environment
export ANDROID_NDK_PATH=~/opts/ndk/android-ndk-r18b
./build-android.sh -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m]
-t : target (rk356x/rk3588)
-a : arch (arm64-v8a/armeabi-v7a)
-d : demo name
-b : build_type (Debug/Release)
-m : enable address sanitizer, build_type need set to Debug
# Here is an example for compiling yolov5 demo for 64-bit Android RK3566.
./build-android.sh -t rk356x -a arm64-v8a -d yolov5
</code></pre>
<h2>Release Notes</h2>
<table>
<thead>
<tr>
<th>Version</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.6.0</td>
<td>New demo release, including object detection, image segmentation, OCR, car plate detection&recognition etc.<br>Full support for <code>RK3566</code>, <code>RK3568</code>, <code>RK3588</code>, <code>RK3562</code> platforms.<br>Limited support for <code>RV1103</code>, <code>RV1106</code> platforms.</td>
</tr>
<tr>
<td>1.5.0</td>
<td>Yolo detection demo release.</td>
</tr>
</tbody>
</table>
<h2>Environment dependencies</h2>
<p>All demos in <code>RKNN Model Zoo</code> are verified based on the latest RKNPU SDK. If using a lower version for verification, the inference performance and inference results may be wrong.</p>
<table>
<thead>
<tr>
<th>Version</th>
<th>RKNPU2 SDK</th>
<th>RKNPU1 SDK</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.6.0</td>
<td>>=1.6.0</td>
<td>- Coming soon</td>
</tr>
<tr>
<td>1.5.0</td>
<td>>=1.5.0</td>
<td>>=1.7.3</td>
</tr>
</tbody>
</table>
<h2>RKNPU Resource</h2>
<ul>
<li>RKNPU2 SDK: <a href="https://github.com/airockchip/rknn-toolkit2">https://github.com/airockchip/rknn-toolkit2</a></li>
<li>RKNPU1 SDK: <a href="https://github.com/airockchip/rknn-toolkit">https://github.com/airockchip/rknn-toolkit</a></li>
</ul>
<h2>License</h2>
<p><a href="https://raw.githubusercontent.com/airockchip/rknn_model_zoo/main/LICENSE">Apache License 2.0</a></p>
+
+
+ h2o/h2o
+ 2023-12-24T01:29:36Z
+ tag:github.com,2023-12-24:/h2o/h2o
+
+ <p>H2O - the optimized HTTP/1, HTTP/2, HTTP/3 server</p><hr><h1>H2O - an optimized HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3 (experimental)</h1>
<p><a href="https://github.com/h2o/h2o/actions/workflows/ci.yml"><img src="https://github.com/h2o/h2o/actions/workflows/ci.yml/badge.svg?sanitize=true" alt="CI"></a> <a href="https://scan.coverity.com/projects/h2o-h2o"> <img alt="Coverity Scan Build Status" src="https://scan.coverity.com/projects/10654/badge.svg?sanitize=true"> </a> <a href="https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:h2o"><img src="https://oss-fuzz-build-logs.storage.googleapis.com/badges/h2o.svg?sanitize=true" alt="Fuzzing Status"></a></p>
<p>Copyright (c) 2014-2019 <a href="http://dena.com/">DeNA Co., Ltd.</a>, <a href="https://github.com/kazuho/">Kazuho Oku</a>, <a href="https://github.com/cubicdaiya/">Tatsuhiko Kubo</a>, <a href="https://github.com/mingodad/">Domingo Alvarez Duarte</a>, <a href="https://github.com/nickdesaulniers/">Nick Desaulniers</a>, <a href="https://github.com/mback2k">Marc Hörsken</a>, <a href="https://github.com/kazeburo/">Masahiro Nagano</a>, Jeff Marrison, <a href="https://github.com/lestrrat/">Daisuke Maki</a>, <a href="https://github.com/GrayShade/">Laurentiu Nicola</a>, <a href="https://github.com/zlm2012/">Justin Zhu</a>, <a href="https://github.com/tatsuhiro-t">Tatsuhiro Tsujikawa</a>, <a href="https://github.com/matsumotory">Ryosuke Matsumoto</a>, <a href="https://github.com/mochipon">Masaki TAGAWA</a>, <a href="https://github.com/takahashim">Masayoshi Takahashi</a>, <a href="https://github.com/cwyang">Chul-Woong Yang</a>, <a href="https://github.com/sorah">Shota Fukumori</a>, <a href="https://github.com/cho45">Satoh Hiroh</a>, <a href="https://www.fastly.com">Fastly, Inc.</a>, <a href="https://github.com/devnexen">David Carlier</a>, <a href="https://github.com/deweerdt">Frederik Deweerdt</a>, <a href="https://github.com/jfoote">Jonathan Foote</a>, <a href="https://github.com/yannick">Yannick Koechlin</a>, <a href="https://github.com/hbowden">Harrison Bowden</a>, <a href="https://github.com/kazan417">Kazantsev Mikhail</a></p>
<p>H2O is a new generation HTTP server. Not only is it very fast, it also provides much quicker response to end-users when compared to older generations of HTTP servers.</p>
<p>Written in C and licensed under <a href="http://opensource.org/licenses/MIT">the MIT License</a>, it can also be used as a library.</p>
<p>For more information, please refer to the documentation at <a href="https://h2o.examp1e.net">h2o.examp1e.net</a>.</p>
<h2>Reporting Security Issues</h2>
<p>Please report vulnerabilities to <a href="mailto:h2o-vuln@googlegroups.com">h2o-vuln@googlegroups.com</a>. See <a href="https://raw.githubusercontent.com/h2o/h2o/master/SECURITY.md">SECURITY.md</a> for more information.</p>
+
+
+ gtworek/PSBits
+ 2023-12-24T01:29:36Z
+ tag:github.com,2023-12-24:/gtworek/PSBits
+
+ <p>Simple (relatively) things allowing you to dig a bit deeper than usual.</p><hr><h1>PSBits</h1>
<p>Simple (relatively) solutions allowing you to dig a bit deeper than usual.</p>
<p>Each folder should have its own readme.md explaining details. If not - the code has extensive comments at the beginning and inline.</p>
<p>If you want to compile stuff on your own, the detailed instruction about downloading, installing, and configuring the free version of Visual Studio can be seen here:<br> <a href="https://www.youtube.com/watch?v=rjnlDxZtZZc"><img src="https://img.youtube.com/vi/rjnlDxZtZZc/0.jpg" alt="YouTube"></a></p>
<p><a rel="me" href="https://infosec.exchange/@0gt">Trying to be present on Mastodon as well.</a></p>
\ No newline at end of file
diff --git a/c/weekly/index.xml b/c/weekly/index.xml
new file mode 100644
index 00000000000..4a02ed88690
--- /dev/null
+++ b/c/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub C Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:27Z
+ Weekly Trending of C in GitHub
+
+
+ jakkra/ZSWatch
+ 2023-12-24T01:46:27Z
+ tag:github.com,2023-12-24:/jakkra/ZSWatch
+
+ <p>ZSWatch - the Open Source Zephyr™ based Smartwatch, including both HW and FW.</p><hr><div align="center">
<h1>ZSWatch</h1>
<p><a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-GPL%203.0-blue.svg?sanitize=true" alt="License"></a> <a href="https://discord.gg/8XfNBmDfbY"><img src="https://img.shields.io/badge/chat-discord-blue?logo=discord&logoColor=white" alt="discord"></a></p>
<p float="left"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/in_use.jpg" width="67.5%" object-fit="cover"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/v3_case.jpg" width="31%" object-fit="cover"> </p>
<sub> ZSWatch v4 CNC:ed Stainless Steel (left), Clear Resin 3D print (right) </sub>
</div>
<br>
<br>
<p>Smartwatch built from scratch, both hardware and software. Built on the <a href="https://www.zephyrproject.org/">Zephyr™ Project</a> RTOS, hence the name <strong>ZSWatch</strong> - <em>Zephyr Smartwatch</em>. <br></p>
<p><kbd><img title="Overview" src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/overview.jpg"></kbd><br></p>
<p><strong>Synced remote control over BLE</strong></p>
<p><a href="https://github.com/jakkra/ZSWatch/assets/4318648/8d0f40c2-d519-4db1-8634-b43caa502cbe">https://user-images.githubusercontent.com/64562059/234390129-321d4f35-cb4b-45e8-89d9-20ae292f34fc.mp4</a></p>
<p align="center"> <a href="https://www.youtube.com/watch?v=MmCzV0jV9hs"><img width="55%" src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/presentation.png"></a> </p>
<p align="center">Watch my presentation at Zephyr Developer Summit 2023</p>
<h2>Building or getting one</h2>
<ul>
<li>Head over to the hardware repos <a href="https://github.com/jakkra/ZSWatch-HW">https://github.com/jakkra/ZSWatch-HW</a> and <a href="https://github.com/jakkra/ZSWatch-Dock">https://github.com/jakkra/ZSWatch-Dock</a> for information about ordering the PCBs and assembly from PCBWay.</li>
<li>Go to the <a href="https://github.com/jakkra/ZSWatch/wiki/Case,-3D-printing-and-assembling">Wiki</a> for information how to print parts and assemble ZSWatch.</li>
</ul>
<p>Some things are still in progress:</p>
<ul>
<li>Work in progress <a href="https://github.com/jakkra/ZSWatch/wiki/Case,-3D-printing-and-assembling">building instructions in Wiki</a></li>
<li>Dock casing.</li>
</ul>
<p><strong>I'll also build a few initial kits</strong> (assembled) for those who don't want or can build ZSWatch themselves.<br> In addition to assembled ZSWatch and dock you will get the following compared to if you build it yourself:</p>
<ul>
<li><strong>A magnetic dock connector and cable</strong>. I have got custom ordered cables to fit the needs of ZSWatch.</li>
<li><strong>Dock with onboard SEGGER J-Link OB debgger</strong>, which means you won't need an external debugger for ZSWatch development and flashing.</li>
<li><strong>Possibly CNC:ed casing in Stainless steel</strong>.</li>
</ul>
<p>If you are interested in a kit, or want to get notified when the missing parts above are resolved, fill in your <strong><a href="https://forms.gle/G48Sm5zDe9aCaYtT9">mail here (Google form)</a></strong> and I'll send a reminder when it's ready.</p>
<p><strong>Or</strong> if you want to get notified for releases and when the missing parts are finished simply press the <code>Watch</code> button (next to Fork and Star) -> <code>Custom -> Releases</code> and you will see in your feed when it's officially released. <br> <br></p>
<h1>Table of content ZSWatch</h1>
<ul>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#building-or-getting-one">Building or getting one</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#hardware-features">Hardware features</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#chargerdock">Charger/Dock</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#enclosurecasing">Enclosure/Casing</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#software-features">Software Features</a>
<ul>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#features-and-progress">Features and progress</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#watchfaces">Watchfaces</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#smartphone-communication">Smartphone communication</a>
<ul>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#android-phone-communication">Android phone communication</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#ios-device-communication">iOS device communication</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#pcb">PCB</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#zswatch-v1-in-action-note-old-not-updated-for-latest-hw-and-sw">ZSWatch v1 in action (Note old, not updated for latest HW and SW).</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#environment-compiling-and-running-the-code">Environment, Compiling and running the code</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#writing-apps-for-the-application-manager">Writing apps for the Application Manager</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#other-tools">Other tools</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#licence-gpl-30">Licence GPL-3.0</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#thanks">Thanks</a></li>
</ul>
<h2>Hardware features</h2>
<ul>
<li>nRF5340 BLE chip (u-blox NORA-B10 module).
<ul>
<li>128 MHz Dual core.</li>
<li>512 KB RAM.</li>
<li>1 MB Flash.</li>
<li>30 MHz SPI for display.</li>
</ul> </li>
<li><a href="https://www.buydisplay.com/240x240-round-ips-tft-lcd-display-1-28-inch-capactive-touch-circle-screen">240x240 round display</a> with touch screen.</li>
<li>IMU <a href="https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmi270-ds000.pdf">Bosch BMI270</a>, with this one it's possible to do many fancy things such as navigation using gestures and the typical smartwatch wakeup by moving the arm so the display is viewable.</li>
<li>Bosch <a href="https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors/bme688/">BME688</a> Environmental sensor with AI.</li>
<li>Bosch <a href="https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp581/">BMP581</a> High performance pressure sensor accuracy in units of ~20cm's.</li>
<li>ST <a href="https://www.st.com/resource/en/datasheet/lis2mdl.pdf">LIS2MDLTR</a> Magnetometer.</li>
<li>Renesas <a href="https://eu.mouser.com/datasheet/2/698/REN_DS_AT25SL128A_109S_032023_DST_20230329-3076025.pdf">AT25SL128A</a> 16 MB external flash.</li>
<li>Broadcom <a href="https://docs.broadcom.com/docs/AV02-4755EN">APDS-9306-065</a> Light Sensor for automatic brightness control.</li>
<li>Option to not mount some sensors to save BOM cost.</li>
</ul>
<h2>Charger/Dock</h2>
<p>Option with and without onboard SEGGER J-Link OB debugger.<br> As the debugger requires a license, this will only be availible as part of a kit.</p>
<p>See more at <a href="https://github.com/jakkra/ZSWatch-Dock">https://github.com/jakkra/ZSWatch-Dock</a></p>
<p float="left"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/dock.jpg" width="48%" object-fit="cover"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/dock_connector.jpg" width="49%" object-fit="cover"> </p>
<h2>Enclosure/Casing</h2>
<p>3D printed casing with 3D printed buttons, option CNC:able casing in metal.</p>
<h2>Software Features</h2>
<ul>
<li>Bluetooth LE communications with <a href="https://codeberg.org/Freeyourgadget/Gadgetbridge">GadgetBridge</a> Android app.</li>
<li>Also support Bluetooth Direction Finding so the watch can act as a tag and is trackable using any <a href="https://www.u-blox.com/en/product/ant-b10-antenna-board">u-blox AoA antenna board</a></li>
<li>Multiple Watchfaces showing:
<ul>
<li>Standard stuff as time, date, battery</li>
<li>Weather</li>
<li>Step count</li>
<li>Number unread notifications</li>
<li>Environmental data</li>
<li>...</li>
</ul> </li>
<li>Pop-up notifications</li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/#writing-apps-for-the-application-manager">Application picker and app concept</a>
<ul>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/app/src/applications/settings/">Setting menu system, with easy extendability</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/app/src/applications/music_control/">Music control app</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/app/src/applications/settings/">Settings app</a></li>
<li><a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/app/src/applications/compass/">Compass app</a></li>
<li>etc.</li>
</ul> </li>
<li>Step counting</li>
<li>Gestures</li>
<li>And much more ...</li>
</ul>
<h3>Features and progress</h3>
<p>There are almost endless of posiblities for features that could be implemented, see <a href="https://github.com/users/jakkra/projects/1">here for full progress</a> and in GitHub issues.</p>
<h2>Watchfaces</h2>
<p>Alternative watch faces can be chosen by selecting one or many of the appropriate Kconfig. <br> Swiping left to right will change the watchface. for something else, and can then be disabled.</p>
<p><code>CONFIG_WATCHFACE_ANALOG=n</code><br> <code>CONFIG_WATCHFACE_DIGITAL=y</code><br> <code>CONFIG_WATCHFACE_MINIMAL=y</code><br></p>
<p>To select watchface background see below config in prj.conf:</p>
<p><code>CONFIG_WATCHFACE_BACKGROUND_SPACE=y</code><br> <code>CONFIG_WATCHFACE_BACKGROUND_FLOWER=n</code><br> <code>CONFIG_WATCHFACE_BACKGROUND_PLANET=n</code><br> <code>CONFIG_WATCHFACE_BACKGROUND_NONE=n</code><br></p>
<p float="center"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/watchfaces.png" width="99%"> </p>
<h2>Smartphone communication</h2>
<h3>Android phone communication</h3>
<p>Fortunately there is a great Android app called <a href="https://codeberg.org/Freeyourgadget">GadgetBridge</a> which handles everything needed on the phone side, such as notifications management, music control and so much more... The ZSWatch right now pretends to be one of the supported Smart Watches in Gadgetbridge, following the same API as it does. In future there may be a point adding native support, we'll see.</p>
<h4>Pairing</h4>
<ul>
<li>In the watch go to Settings -> Bluetooth -> Enable pairing</li>
<li>Now go reconnect to the watch from Gadgetbridge app.</li>
<li>You should now be paired.</li>
</ul>
<h3>iOS device communication</h3>
<p>Apple exposes <a href="https://developer.apple.com/library/archive/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Specification/Specification.html">Apple Notification Center Service</a> GATT server which handles notifications management on the phone side, music control is done in the same fashion using <a href="https://developer.apple.com/library/archive/documentation/CoreBluetooth/Reference/AppleMediaService_Reference/Specification/Specification.html">Apple Media Service</a>... The ZSWatch communicates straight to the iOS with no extra Apps.</p>
<h4>Pairing</h4>
<ul>
<li>In the watch go to Settings -> Bluetooth -> Enable pairing</li>
<li>Now go to your device settings -> Bluetooth and choose "ZSWatch"</li>
<li>You should be prompted to pair and allow share notifications</li>
</ul>
<h2>PCB</h2>
<p>A 4 layer board which measures 38mm in diameter designed in KiCad.<br> More info here: <a href="https://github.com/jakkra/ZSWatch-HW">https://github.com/jakkra/ZSWatch-HW</a></p>
<p float="left"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/pcb.jpg" width="83%" object-fit="cover"> </p>
<p float="left"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/front_pcb_render.png" width="43%" object-fit="cover"> <img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/back_pcb_render.png" width="40%" object-fit="cover"> </p>
<h2>ZSWatch v1 in action (Note old, not updated for latest HW and SW).</h2>
<table>
<thead>
<tr>
<th><em>Music control</em></th>
<th><em>Accelerometer for step count and tap detection</em></th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/music.gif" object-fit="cover"></td>
<td><img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/accel.gif" object-fit="cover"></td>
</tr>
<tr>
<td><em>Notifications from phone (Gmail here)</em></td>
<td><em>Settings</em></td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/notifications.gif" object-fit="cover"></td>
<td><img src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/settings.gif" object-fit="cover"></td>
</tr>
</tbody>
</table>
<p><a href="https://github.com/jakkra/ZSWatch/assets/4318648/8d8ec724-8145-4a30-b241-e69a8c2853bf">https://github.com/jakkra/ZSWatch/assets/4318648/8d8ec724-8145-4a30-b241-e69a8c2853bf</a></p>
<h2>Environment, Compiling and running the code</h2>
<p>See <a href="https://raw.githubusercontent.com/jakkra/ZSWatch/main/GETTING_STARTED.md">GETTING_STARTED.md</a></p>
<h2>Writing apps for the Application Manager</h2>
<p>See <a href="https://github.com/jakkra/ZSWatch/wiki/Apps">Wiki page about apps</a></p>
<h2>Other tools</h2>
<ul>
<li>Visit <a href="https://jakkra.github.io/ZSWatch-Web-Dashboard">https://jakkra.github.io/ZSWatch-Web-Dashboard</a> to connect and view sensor data in a browser that supports Web Bluetooth <a href="https://github.com/jakkra/ZSWatch-Web-Dashboard">(Source code)</a></li>
</ul>
<h2>Licence GPL-3.0</h2>
<p>Main difference from MIT is now that if anyone want to build something more with this, then they need to also open source their changes back to the project, which I thinks is fair. This is so everyone can benefit from those improvements. If you think this is wrong for some reason feel free to contact me, I'm open to change the LICENCE.</p>
<h2>Thanks</h2>
<p><a href="https://www.segger.com/"><img width="25%" src="https://raw.githubusercontent.com/jakkra/ZSWatch/main/.github/images/SEGGER-Logo-the-embedded-experts-RGB.jpg"></a></p>
<p>SEGGER for supporting with SEGGER-OB licenses which makes the dock a fully functional programmer and debugger for ZSWatch. Thanks to this the project will be much more approchable for persons without a J-Link debugger, letting them have full development and debugging capabilites.</p>
+
+
+ vedderb/bldc
+ 2023-12-24T01:46:27Z
+ tag:github.com,2023-12-24:/vedderb/bldc
+
+ <p>The VESC motor control firmware</p><hr><h1>VESC firmware</h1>
<p><a href="https://www.gnu.org/licenses/gpl-3.0"><img src="https://img.shields.io/badge/License-GPLv3-blue.svg?sanitize=true" alt="License: GPL v3"></a> <a href="https://travis-ci.com/vedderb/bldc"><img src="https://travis-ci.com/vedderb/bldc.svg?branch=master" alt="Travis CI Status"></a> <a href="https://www.codacy.com/app/vedderb/bldc?utm_source=github.com&utm_medium=referral&utm_content=vedderb/bldc&utm_campaign=Badge_Grade"><img src="https://api.codacy.com/project/badge/Grade/75e90ffbd46841a3a7be2a9f7a94c242" alt="Codacy Badge"></a> <a href="https://github.com/vedderb/bldc/graphs/contributors"><img src="https://img.shields.io/github/contributors/vedderb/bldc.svg?sanitize=true" alt="Contributors"></a> <a href="https://github.com/vedderb/bldc/watchers"><img src="https://img.shields.io/github/watchers/vedderb/bldc.svg?sanitize=true" alt="Watchers"></a> <a href="https://github.com/vedderb/bldc/stargazers"><img src="https://img.shields.io/github/stars/vedderb/bldc.svg?sanitize=true" alt="Stars"></a> <a href="https://github.com/vedderb/bldc/network/members"><img src="https://img.shields.io/github/forks/vedderb/bldc.svg?sanitize=true" alt="Forks"></a></p>
<p>An open source motor controller firmware.</p>
<p>This is the source code for the VESC DC/BLDC/FOC controller. Read more at <a href="https://vesc-project.com/">https://vesc-project.com/</a></p>
<h2>Supported boards</h2>
<p>All of them!</p>
<p>Check the supported boards by typing <code>make</code></p>
<pre><code>[Firmware]
fw - Build firmware for default target
supported boards are: 100_250 100_250_no_limits 100_500...
</code></pre>
<p>There are also many other options that can be changed in <a href="https://raw.githubusercontent.com/vedderb/bldc/master/conf_general.h">conf_general.h</a>.</p>
<h2>Prerequisites</h2>
<h3>On Ubuntu (Linux)/macOS</h3>
<ul>
<li>Tools: <code>git</code>, <code>wget</code>, and <code>make</code></li>
<li>Additional Linux requirements: <code>libgl-dev</code> and <code>libxcb-xinerama0</code></li>
<li>Helpful Ubuntu commands:</li>
</ul>
<pre><code class="language-bash">sudo apt install git build-essential libgl-dev libxcb-xinerama0 wget git-gui
</code></pre>
<ul>
<li>Helpful macOS tools:</li>
</ul>
<pre><code class="language-bash">brew install stlink
brew install openocd
</code></pre>
<h3>On Windows</h3>
<ul>
<li>Chocolately: <a href="https://chocolatey.org/install">https://chocolatey.org/install</a></li>
<li>Git: <a href="https://git-scm.com/download/win">https://git-scm.com/download/win</a>. Make sure to click any boxes to add Git to your Environment (aka PATH)</li>
</ul>
<h2>Install Dev environment and build</h2>
<h3>On Ubuntu (Linux)/MacOS</h3>
<p>Open up a terminal</p>
<ol>
<li><code>git clone http://github.com/vedderb/bldc.git</code></li>
<li><code>cd bldc</code></li>
<li>Continue with <a href="https://raw.githubusercontent.com/vedderb/bldc/master/#on-all-platforms">On all platforms</a></li>
</ol>
<h3>On Windows</h3>
<ol>
<li>Open up a Windows Powershell terminal (Resist the urge to run Powershell as administrator, that will break things)</li>
<li>Type <code>choco install make</code></li>
<li><code>git clone http://github.com/vedderb/bldc</code></li>
<li><code>cd bldc</code></li>
<li>Continue with <a href="https://raw.githubusercontent.com/vedderb/bldc/master/#on-all-platforms">On all platforms</a></li>
</ol>
<h3>On all platforms</h3>
<ol>
<li><code>git checkout origin/master</code></li>
<li><code>make arm_sdk_install</code></li>
<li><code>make</code> <-- Pick out the name of your target device from the supported boards list. For instance, I have a Trampa <strong>VESC 100/250</strong>, so my target is <code>100_250</code></li>
<li><code>make 100_250</code> <-- This will build the <strong>VESC 100/250</strong> firmware and place it into the <code>bldc/builds/100_250/</code> directory</li>
</ol>
<h2>Other tools</h2>
<p><strong>Linux Optional - Add udev rules to use the stlink v2 programmer without being root</strong></p>
<pre><code class="language-bash">wget vedder.se/Temp/49-stlinkv2.rules
sudo mv 49-stlinkv2.rules /etc/udev/rules.d/
sudo udevadm trigger
</code></pre>
<h2>IDE</h2>
<h3>Prerequisites</h3>
<h4>On macOS/Linux</h4>
<ul>
<li><code>python3</code>, and <code>pip</code></li>
</ul>
<h4>On Windows</h4>
<ul>
<li>Python 3: <a href="https://www.python.org/downloads/">https://www.python.org/downloads/</a>. Make sure to click the box to add Python3 to your Environment.</li>
</ul>
<h3>All platforms</h3>
<ol>
<li><code>pip install aqtinstall</code></li>
<li><code>make qt_install</code></li>
<li>Open Qt Creator IDE installed in <code>tools/Qt/Tools/QtCreator/bin/qtcreator</code></li>
<li>With Qt Creator, open the vesc firmware Qt Creator project, named vesc.pro. You will find it in <code>Project/Qt Creator/vesc.pro</code></li>
<li>The IDE is configured by default to build 100_250 firmware, this can be changed in the bottom of the left panel, there you will find all hardware variants supported by VESC</li>
</ol>
<h2>Upload to VESC</h2>
<h3>Method 1 - Flash it using an STLink SWD debugger</h3>
<ol>
<li>Build and flash the <a href="https://github.com/vedderb/bldc-bootloader">bootloader</a> first</li>
<li>Then <code>_flash</code> to the target of your choice. So for instance, for the VESC 100/250:</li>
</ol>
<pre><code class="language-bash">make 100_250_flash
</code></pre>
<h3>Method 2 - Upload Firmware via VESC tool through USB</h3>
<ol>
<li>Clone and build the firmware in <strong>.bin</strong> format as in the above Build instructions</li>
</ol>
<p>In VESC tool</p>
<ol start="2">
<li>Connect to the VESC</li>
<li>Navigate to the Firmware tab on the left side menu</li>
<li>Click on Custom file tab</li>
<li>Click on the folder icon to select the built firmware in .bin format (e.g. <code>build/100_250/100_250.bin</code>)</li>
</ol>
<h5>[ Reminder : It is normal to see VESC disconnects during the firmware upload process ]</h5>
<h5><strong>[ Warning : DO NOT DISCONNECT POWER/USB to VESC during the upload process, or you will risk bricking your VESC ]</strong></h5>
<h5><strong>[ Warning : ONLY DISCONNECT your VESC 10s after the upload loading bar completed and "FW Upload DONE" ]</strong></h5>
<ol start="6">
<li>Press the upload firmware button (downward arrow) on the bottom right to start upload the selected firmware.</li>
<li>Wait for <strong>10s</strong> after the loading bar completed (Warning: unplug sooner will risk bricking your VESC)</li>
<li>The VESC will disconnect itself after new firmware is uploaded.</li>
</ol>
<h2>In case you bricked your VESC</h2>
<p>you will need to upload a new working firmware to the VESC.<br> However, to upload a firmware to a bricked VESC, you have to use a SWD Debugger.</p>
<h2>Contribute</h2>
<p>Head to the <a href="https://vesc-project.com/forum">forums</a> to get involved and improve this project. Join the <a href="https://discord.gg/JgvV5NwYts">Discord</a> for real-time support and chat</p>
<h2>Tags</h2>
<p>Every firmware release has a tag. They are created as follows:</p>
<pre><code class="language-bash">git tag -a [version] [commit] -m "VESC Firmware Version [version]"
git push --tags
</code></pre>
<h2>License</h2>
<p>The software is released under the GNU General Public License version 3.0</p>
+
+
+ webui-dev/webui
+ 2023-12-24T01:46:27Z
+ tag:github.com,2023-12-24:/webui-dev/webui
+
+ <p>Use any web browser as GUI, with your preferred language in the backend and HTML5 in the frontend, all in a lightweight portable lib.</p><hr><div align="center">
<p><img src="https://github.com/webui-dev/webui/assets/34311583/c92e712f-0698-486a-a460-d4acea28a4f8" alt="Logo"></p>
<h1>WebUI v2.4.2</h1>
<p><a href="https://github.com/webui-dev/webui/actions?query=branch%3Amain"><img src="https://img.shields.io/github/actions/workflow/status/webui-dev/webui/ci.yml?branch=main&style=for-the-badge&logo=githubactions&labelColor=414868&logoColor=C0CAF5" alt=""></a> <a href="https://github.com/webui-dev/webui/pulse"><img src="https://img.shields.io/github/last-commit/webui-dev/webui?style=for-the-badge&logo=github&logoColor=C0CAF5&labelColor=414868" alt=""></a> <a href="https://github.com/webui-dev/webui/releases/latest"><img src="https://img.shields.io/github/v/tag/webui-dev/webui?style=for-the-badge&logo=webtrees&logoColor=C0CAF5&labelColor=414868&color=7664C6" alt=""></a> <a href="https://github.com/webui-dev/webui/raw/main/LICENSE"><img src="https://img.shields.io/github/license/webui-dev/webui?style=for-the-badge&logo=opensourcehardware&label=License&logoColor=C0CAF5&labelColor=414868&color=8c73cc" alt=""></a></p>
<blockquote>
<p>WebUI is not a web-server solution or a framework, but it allows you to use any web browser as a GUI, with your preferred language in the backend and HTML5 in the frontend. All in a lightweight portable lib.</p>
</blockquote>
<p><img src="https://github.com/webui-dev/webui/assets/34311583/57992ef1-4f7f-4d60-8045-7b07df4088c6" alt="Screenshot"></p>
</div>
<h2>Download</h2>
<ul>
<li><a href="https://github.com/webui-dev/webui/releases">Latest Stable Release</a></li>
<li><a href="https://github.com/webui-dev/webui/releases/tag/nightly">Nightly Build</a></li>
</ul>
<h2>Contents</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#features">Features</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#showcase">Showcase</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#ui--the-web-technologies">UI & The Web Technologies</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#documentation">Documentation</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#build">Build</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#examples">Examples</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#wrappers">Wrappers</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#supported-web-browsers">Supported Web Browsers</a></li>
<li><a href="https://raw.githubusercontent.com/webui-dev/webui/main/#license">License</a></li>
</ul>
<h2>Features</h2>
<ul>
<li>Portable (<em>Needs only a web browser at runtime</em>)</li>
<li>One header file</li>
<li>Lightweight (<em>Few Kb library</em>) & Small memory footprint</li>
<li>Fast binary communication protocol</li>
<li>Multi-platform & Multi-Browser</li>
<li>Using private profile for safety</li>
</ul>
<h2>Showcase</h2>
<p>This <a href="https://github.com/webui-dev/webui/tree/main/examples/C/text-editor">text editor</a> is a lightweight and portable example written in C using WebUI as the GUI library.</p>
<div align="center">
<p><img src="https://github.com/webui-dev/webui/assets/34311583/c1ccf29c-806a-4742-bfd7-a3dc30cab70b" alt="Example"></p>
</div>
<h2>UI & The Web Technologies</h2>
<p><a href="https://ibob.bg/">Borislav Stanimirov</a> discusses using HTML5 in the web browser as GUI at the <a href="https://www.youtube.com/watch?v=bbbcZd4cuxg">C++ Conference 2019 (<em>YouTube</em>)</a>.</p>
<!-- <div align="center">
<a href="https://www.youtube.com/watch?v=bbbcZd4cuxg"><img src="https://img.youtube.com/vi/bbbcZd4cuxg/0.jpg" alt="Embrace Modern Technology: Using HTML 5 for GUI in C++ - Borislav Stanimirov - CppCon 2019"></a>
</div> -->
<div align="center">
<p><img src="https://github.com/webui-dev/webui/assets/34311583/4e830caa-4ca0-44ff-825f-7cd6d94083c8" alt="CPPCon"></p>
</div>
<p>Web application UI design is not just about how a product looks but how it works. Using web technologies in your UI makes your product modern and professional, And a well-designed web application will help you make a solid first impression on potential customers. Great web application design also assists you in nurturing leads and increasing conversions. In addition, it makes navigating and using your web app easier for your users.</p>
<h3>Why Use Web Browsers?</h3>
<p>Today's web browsers have everything a modern UI needs. Web browsers are very sophisticated and optimized. Therefore, using it as a GUI will be an excellent choice. While old legacy GUI lib is complex and outdated, a WebView-based app is still an option. However, a WebView needs a huge SDK to build and many dependencies to run, and it can only provide some features like a real web browser. That is why WebUI uses real web browsers to give you full features of comprehensive web technologies while keeping your software lightweight and portable.</p>
<h3>How Does it Work?</h3>
<div align="center">
<p><img src="https://github.com/ttytm/webui/assets/34311583/dbde3573-3161-421e-925c-392a39f45ab3" alt="Diagram"></p>
</div>
<p>Think of WebUI like a WebView controller, but instead of embedding the WebView controller in your program, which makes the final program big in size, and non-portable as it needs the WebView runtimes. Instead, by using WebUI, you use a tiny static/dynamic library to run any installed web browser and use it as GUI, which makes your program small, fast, and portable. <strong>All it needs is a web browser</strong>.</p>
<h3>Runtime Dependencies Comparison</h3>
<table>
<thead>
<tr>
<th></th>
<th>WebView</th>
<th>Qt</th>
<th>WebUI</th>
</tr>
</thead>
<tbody>
<tr>
<td>Runtime Dependencies on Windows</td>
<td><em>WebView2</em></td>
<td><em>QtCore, QtGui, QtWidgets</em></td>
<td><strong><em>A Web Browser</em></strong></td>
</tr>
<tr>
<td>Runtime Dependencies on Linux</td>
<td><em>GTK3, WebKitGTK</em></td>
<td><em>QtCore, QtGui, QtWidgets</em></td>
<td><strong><em>A Web Browser</em></strong></td>
</tr>
<tr>
<td>Runtime Dependencies on macOS</td>
<td><em>Cocoa, WebKit</em></td>
<td><em>QtCore, QtGui, QtWidgets</em></td>
<td><strong><em>A Web Browser</em></strong></td>
</tr>
</tbody>
</table>
<h2>Documentation</h2>
<blockquote>
<p><strong>Note</strong> We are currently writing documentation.</p>
</blockquote>
<ul>
<li><a href="https://webui.me/docs/#/c_api">Online Documentation - C</a></li>
<li><a href="https://webui.me/docs/#/cpp_api">Online Documentation - C++</a></li>
</ul>
<h2>Build</h2>
<ul>
<li> <p><strong>Windows</strong></p> <pre><code class="language-powershell"># GCC
mingw32-make
# MSVC
nmake
</code></pre> <p><strong>Windows SSL/TLS (<em>Optional</em>)</strong></p> <p>Download and install the OpenSSL pre-compiled binaries for Windows:</p>
<ul>
<li>MSVC: <a href="https://slproweb.com/download/Win64OpenSSL-3_1_3.msi">x64 OpenSSL v3.1.3</a> or <a href="https://slproweb.com/download/Win32OpenSSL-3_1_3.msi"><em>32Bit</em></a>. Please check this <a href="https://wiki.openssl.org/index.php/Binaries">Wiki list</a> for more info.</li>
<li>MinGW: <a href="https://curl.se/windows/">Curl for Windows win OpenSSL</a></li>
</ul> <pre><code class="language-powershell"># GCC
mingw32-make WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\curl-xxx-xxx-mingw\curl-xxx-xxx-mingw\include" WEBUI_TLS_LIB="C:\curl-xxx-xxx-mingw\curl-xxx-xxx-mingw\lib"
# MSVC
nmake WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\Program Files\OpenSSL-xxx\include" WEBUI_TLS_LIB="C:\Program Files\OpenSSL-xxx\lib"
</code></pre> </li>
<li> <p><strong>Linux</strong></p> <pre><code class="language-sh"># GCC
make
# Clang
make CC=clang
</code></pre> <p><strong>Linux SSL/TLS (<em>Optional</em>)</strong></p> <pre><code class="language-sh">sudo apt update
sudo apt install libssl-dev
# GCC
make WEBUI_USE_TLS=1
# Clang
make WEBUI_USE_TLS=1 CC=clang
</code></pre> </li>
<li> <p><strong>macOS</strong></p> <pre><code class="language-sh">make
</code></pre> <p><strong>macOS SSL/TLS (<em>Optional</em>)</strong></p> <pre><code class="language-sh">brew install openssl
make WEBUI_USE_TLS=1
</code></pre> </li>
</ul>
<h2>Examples</h2>
<ul>
<li><a href="https://github.com/webui-dev/webui/tree/main/examples/C">C</a></li>
<li><a href="https://github.com/webui-dev/webui/tree/main/examples/C++">C++</a></li>
</ul>
<h2>Wrappers</h2>
<table>
<thead>
<tr>
<th>Language</th>
<th>Status</th>
<th>Link</th>
</tr>
</thead>
<tbody>
<tr>
<td>Go</td>
<td>✔️</td>
<td><a href="https://github.com/webui-dev/go-webui">Go-WebUI</a></td>
</tr>
<tr>
<td>Nim</td>
<td>✔️</td>
<td><a href="https://github.com/webui-dev/nim-webui">Nim-WebUI</a></td>
</tr>
<tr>
<td>Pascal</td>
<td>✔️</td>
<td><a href="https://github.com/webui-dev/pascal-webui">Pascal-WebUI</a></td>
</tr>
<tr>
<td>Python</td>
<td>✔️</td>
<td><a href="https://github.com/webui-dev/python-webui">Python-WebUI</a></td>
</tr>
<tr>
<td>Rust</td>
<td><em>not complete</em></td>
<td><a href="https://github.com/webui-dev/rust-webui">Rust-WebUI</a></td>
</tr>
<tr>
<td>TypeScript / JavaScript</td>
<td>✔️</td>
<td><a href="https://github.com/webui-dev/deno-webui">Deno-WebUI</a></td>
</tr>
<tr>
<td>V</td>
<td>✔️</td>
<td><a href="https://github.com/webui-dev/v-webui">V-WebUI</a></td>
</tr>
<tr>
<td>Zig</td>
<td><em>not complete</em></td>
<td><a href="https://github.com/webui-dev/zig-webui">Zig-WebUI</a></td>
</tr>
<tr>
<td>Odin</td>
<td><em>not complete</em></td>
<td><a href="https://github.com/webui-dev/odin-webui">Odin-WebUI</a></td>
</tr>
</tbody>
</table>
<h2>Supported Web Browsers</h2>
<table>
<thead>
<tr>
<th>Browser</th>
<th>Windows</th>
<th>macOS</th>
<th>Linux</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mozilla Firefox</td>
<td>✔️</td>
<td>✔️</td>
<td>✔️</td>
</tr>
<tr>
<td>Google Chrome</td>
<td>✔️</td>
<td>✔️</td>
<td>✔️</td>
</tr>
<tr>
<td>Microsoft Edge</td>
<td>✔️</td>
<td>✔️</td>
<td>✔️</td>
</tr>
<tr>
<td>Chromium</td>
<td>✔️</td>
<td>✔️</td>
<td>✔️</td>
</tr>
<tr>
<td>Yandex</td>
<td>✔️</td>
<td>✔️</td>
<td>✔️</td>
</tr>
<tr>
<td>Brave</td>
<td>✔️</td>
<td>✔️</td>
<td>✔️</td>
</tr>
<tr>
<td>Vivaldi</td>
<td>✔️</td>
<td>✔️</td>
<td>✔️</td>
</tr>
<tr>
<td>Epic</td>
<td>✔️</td>
<td>✔️</td>
<td><em>not available</em></td>
</tr>
<tr>
<td>Apple Safari</td>
<td><em>not available</em></td>
<td><em>coming soon</em></td>
<td><em>not available</em></td>
</tr>
<tr>
<td>Opera</td>
<td><em>coming soon</em></td>
<td><em>coming soon</em></td>
<td><em>coming soon</em></td>
</tr>
</tbody>
</table>
<h3>License</h3>
<blockquote>
<p>Licensed under MIT License.</p>
</blockquote>
<h3>Stargazers</h3>
<p><a href="https://github.com/webui-dev/webui/stargazers"><img src="https://reporoster.com/stars/webui-dev/webui" alt="Stargazers repo roster for @webui-dev/webui"></a></p>
+
+
\ No newline at end of file
diff --git a/c2hs-haskell/daily/index.xml b/c2hs-haskell/daily/index.xml
index 490df1ed814..78dfa277cd8 100644
--- a/c2hs-haskell/daily/index.xml
+++ b/c2hs-haskell/daily/index.xml
@@ -1,7 +1,7 @@
GitHub C2hs Haskell Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:55Z
+ 2023-12-24T01:29:58Z
Daily Trending of C2hs Haskell in GitHub
\ No newline at end of file
diff --git a/c2hs-haskell/weekly/index.xml b/c2hs-haskell/weekly/index.xml
new file mode 100644
index 00000000000..f18eb6ca612
--- /dev/null
+++ b/c2hs-haskell/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub C2hs Haskell Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:45Z
+ Weekly Trending of C2hs Haskell in GitHub
+
+
\ No newline at end of file
diff --git a/cabal-config/daily/index.xml b/cabal-config/daily/index.xml
index 6908e1b2ace..4715418b144 100644
--- a/cabal-config/daily/index.xml
+++ b/cabal-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cabal Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:25:54Z
+ 2023-12-24T01:29:58Z
Daily Trending of Cabal Config in GitHub
\ No newline at end of file
diff --git a/cabal-config/weekly/index.xml b/cabal-config/weekly/index.xml
new file mode 100644
index 00000000000..101c36512b9
--- /dev/null
+++ b/cabal-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cabal Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:47Z
+ Weekly Trending of Cabal Config in GitHub
+
+
\ No newline at end of file
diff --git a/cadence/daily/index.xml b/cadence/daily/index.xml
index ec9a243aff1..15e4cc36e2a 100644
--- a/cadence/daily/index.xml
+++ b/cadence/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cadence Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:11Z
+ 2023-12-24T01:30:12Z
Daily Trending of Cadence in GitHub
\ No newline at end of file
diff --git a/cadence/weekly/index.xml b/cadence/weekly/index.xml
new file mode 100644
index 00000000000..9b302e33389
--- /dev/null
+++ b/cadence/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cadence Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:46:58Z
+ Weekly Trending of Cadence in GitHub
+
+
\ No newline at end of file
diff --git a/cairo/daily/index.xml b/cairo/daily/index.xml
index 3c085b55964..926611bda2e 100644
--- a/cairo/daily/index.xml
+++ b/cairo/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cairo Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:09Z
+ 2023-12-24T01:30:15Z
Daily Trending of Cairo in GitHub
\ No newline at end of file
diff --git a/cairo/weekly/index.xml b/cairo/weekly/index.xml
new file mode 100644
index 00000000000..5d1e58afd35
--- /dev/null
+++ b/cairo/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Cairo Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:01Z
+ Weekly Trending of Cairo in GitHub
+
+
+ keep-starknet-strange/unruggable.meme
+ 2023-12-24T01:47:01Z
+ tag:github.com,2023-12-24:/keep-starknet-strange/unruggable.meme
+
+ <p>☣️ A framework for building safer memecoins 💸</p><hr>
+
+
\ No newline at end of file
diff --git a/cap'n-proto/daily/index.xml b/cap'n-proto/daily/index.xml
index 874b4854bcf..74834888b36 100644
--- a/cap'n-proto/daily/index.xml
+++ b/cap'n-proto/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cap'n Proto Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:15Z
+ 2023-12-24T01:30:16Z
Daily Trending of Cap'n Proto in GitHub
\ No newline at end of file
diff --git a/cap'n-proto/weekly/index.xml b/cap'n-proto/weekly/index.xml
new file mode 100644
index 00000000000..a60bafea3b3
--- /dev/null
+++ b/cap'n-proto/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cap'n Proto Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:04Z
+ Weekly Trending of Cap'n Proto in GitHub
+
+
\ No newline at end of file
diff --git a/cartocss/daily/index.xml b/cartocss/daily/index.xml
index dd23aa01a48..c3d98d272f4 100644
--- a/cartocss/daily/index.xml
+++ b/cartocss/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CartoCSS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:15Z
+ 2023-12-24T01:30:18Z
Daily Trending of CartoCSS in GitHub
\ No newline at end of file
diff --git a/cartocss/weekly/index.xml b/cartocss/weekly/index.xml
new file mode 100644
index 00000000000..8375c2f9a91
--- /dev/null
+++ b/cartocss/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CartoCSS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:03Z
+ Weekly Trending of CartoCSS in GitHub
+
+
\ No newline at end of file
diff --git a/ceylon/daily/index.xml b/ceylon/daily/index.xml
index d50a1383a0c..3a690408b3b 100644
--- a/ceylon/daily/index.xml
+++ b/ceylon/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ceylon Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:13Z
+ 2023-12-24T01:30:17Z
Daily Trending of Ceylon in GitHub
\ No newline at end of file
diff --git a/ceylon/weekly/index.xml b/ceylon/weekly/index.xml
new file mode 100644
index 00000000000..70d8db7d462
--- /dev/null
+++ b/ceylon/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ceylon Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:02Z
+ Weekly Trending of Ceylon in GitHub
+
+
\ No newline at end of file
diff --git a/chapel/daily/index.xml b/chapel/daily/index.xml
index 88bd0a42954..e70055f8c1b 100644
--- a/chapel/daily/index.xml
+++ b/chapel/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Chapel Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:14Z
+ 2023-12-24T01:30:18Z
Daily Trending of Chapel in GitHub
\ No newline at end of file
diff --git a/chapel/weekly/index.xml b/chapel/weekly/index.xml
new file mode 100644
index 00000000000..e24d125abe7
--- /dev/null
+++ b/chapel/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Chapel Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:05Z
+ Weekly Trending of Chapel in GitHub
+
+
\ No newline at end of file
diff --git a/charity/daily/index.xml b/charity/daily/index.xml
index 97bc31616b4..033a51c1e33 100644
--- a/charity/daily/index.xml
+++ b/charity/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Charity Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:17Z
+ 2023-12-24T01:30:21Z
Daily Trending of Charity in GitHub
\ No newline at end of file
diff --git a/charity/weekly/index.xml b/charity/weekly/index.xml
new file mode 100644
index 00000000000..91f9ba6afab
--- /dev/null
+++ b/charity/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Charity Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:07Z
+ Weekly Trending of Charity in GitHub
+
+
\ No newline at end of file
diff --git a/chuck/daily/index.xml b/chuck/daily/index.xml
index 4881a8b42ec..82fff51fa59 100644
--- a/chuck/daily/index.xml
+++ b/chuck/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ChucK Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:18Z
+ 2023-12-24T01:30:22Z
Daily Trending of ChucK in GitHub
\ No newline at end of file
diff --git a/chuck/weekly/index.xml b/chuck/weekly/index.xml
new file mode 100644
index 00000000000..b9e8eca4223
--- /dev/null
+++ b/chuck/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ChucK Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:06Z
+ Weekly Trending of ChucK in GitHub
+
+
\ No newline at end of file
diff --git a/cil/daily/index.xml b/cil/daily/index.xml
index d1b854b56f8..481fd376f37 100644
--- a/cil/daily/index.xml
+++ b/cil/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CIL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:19Z
+ 2023-12-24T01:30:20Z
Daily Trending of CIL in GitHub
\ No newline at end of file
diff --git a/cil/weekly/index.xml b/cil/weekly/index.xml
new file mode 100644
index 00000000000..5a9812b8714
--- /dev/null
+++ b/cil/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CIL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:09Z
+ Weekly Trending of CIL in GitHub
+
+
\ No newline at end of file
diff --git a/cirru/daily/index.xml b/cirru/daily/index.xml
index f4e9749aaa7..570caa37872 100644
--- a/cirru/daily/index.xml
+++ b/cirru/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cirru Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:22Z
+ 2023-12-24T01:30:25Z
Daily Trending of Cirru in GitHub
\ No newline at end of file
diff --git a/cirru/weekly/index.xml b/cirru/weekly/index.xml
new file mode 100644
index 00000000000..83f2511324d
--- /dev/null
+++ b/cirru/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cirru Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:11Z
+ Weekly Trending of Cirru in GitHub
+
+
\ No newline at end of file
diff --git a/clarion/daily/index.xml b/clarion/daily/index.xml
index 90506511cf4..05885f1d888 100644
--- a/clarion/daily/index.xml
+++ b/clarion/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Clarion Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:23Z
+ 2023-12-24T01:30:25Z
Daily Trending of Clarion in GitHub
\ No newline at end of file
diff --git a/clarion/weekly/index.xml b/clarion/weekly/index.xml
new file mode 100644
index 00000000000..c12e4c6b816
--- /dev/null
+++ b/clarion/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Clarion Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:11Z
+ Weekly Trending of Clarion in GitHub
+
+
\ No newline at end of file
diff --git a/clarity/daily/index.xml b/clarity/daily/index.xml
index 6391483946a..b72f586de2e 100644
--- a/clarity/daily/index.xml
+++ b/clarity/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Clarity Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:20Z
+ 2023-12-24T01:30:23Z
Daily Trending of Clarity in GitHub
\ No newline at end of file
diff --git a/clarity/weekly/index.xml b/clarity/weekly/index.xml
new file mode 100644
index 00000000000..b3768b51737
--- /dev/null
+++ b/clarity/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Clarity Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:12Z
+ Weekly Trending of Clarity in GitHub
+
+
\ No newline at end of file
diff --git a/classic-asp/daily/index.xml b/classic-asp/daily/index.xml
index 6cbab768a94..e3902a61f2e 100644
--- a/classic-asp/daily/index.xml
+++ b/classic-asp/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Classic ASP Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:27Z
+ 2023-12-24T01:30:27Z
Daily Trending of Classic ASP in GitHub
\ No newline at end of file
diff --git a/classic-asp/weekly/index.xml b/classic-asp/weekly/index.xml
new file mode 100644
index 00000000000..da5646d4c1c
--- /dev/null
+++ b/classic-asp/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Classic ASP Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:15Z
+ Weekly Trending of Classic ASP in GitHub
+
+
\ No newline at end of file
diff --git a/clean/daily/index.xml b/clean/daily/index.xml
index ea704b08a12..d96325cc71d 100644
--- a/clean/daily/index.xml
+++ b/clean/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Clean Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:25Z
+ 2023-12-24T01:30:29Z
Daily Trending of Clean in GitHub
\ No newline at end of file
diff --git a/clean/weekly/index.xml b/clean/weekly/index.xml
new file mode 100644
index 00000000000..77e95763de8
--- /dev/null
+++ b/clean/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Clean Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:15Z
+ Weekly Trending of Clean in GitHub
+
+
\ No newline at end of file
diff --git a/click/daily/index.xml b/click/daily/index.xml
index 9f86a6591e1..00a7ca8a3be 100644
--- a/click/daily/index.xml
+++ b/click/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Click Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:24Z
+ 2023-12-24T01:30:27Z
Daily Trending of Click in GitHub
\ No newline at end of file
diff --git a/click/weekly/index.xml b/click/weekly/index.xml
new file mode 100644
index 00000000000..be9321be160
--- /dev/null
+++ b/click/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Click Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:14Z
+ Weekly Trending of Click in GitHub
+
+
\ No newline at end of file
diff --git a/clips/daily/index.xml b/clips/daily/index.xml
index ff99572bd0b..2d0e1f3d5c2 100644
--- a/clips/daily/index.xml
+++ b/clips/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CLIPS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:26Z
+ 2023-12-24T01:30:28Z
Daily Trending of CLIPS in GitHub
\ No newline at end of file
diff --git a/clips/weekly/index.xml b/clips/weekly/index.xml
new file mode 100644
index 00000000000..df43ded5d20
--- /dev/null
+++ b/clips/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CLIPS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:16Z
+ Weekly Trending of CLIPS in GitHub
+
+
\ No newline at end of file
diff --git a/clojure/daily/index.xml b/clojure/daily/index.xml
index 4604b3c2d97..7cc9c399053 100644
--- a/clojure/daily/index.xml
+++ b/clojure/daily/index.xml
@@ -1,7 +1,28 @@
GitHub Clojure Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:31Z
+ 2023-12-24T01:30:33Z
Daily Trending of Clojure in GitHub
+
+ heroku/kensa-create-clojure
+ 2023-12-24T01:30:33Z
+ tag:github.com,2023-12-24:/heroku/kensa-create-clojure
+
+ <p>[DEPRECATED] Clojure template Heroku add-on for kensa create --template flag</p><hr>
+
+
+ heroku/pulse
+ 2023-12-24T01:30:33Z
+ tag:github.com,2023-12-24:/heroku/pulse
+
+ <p>DEPRECATED: Real-time Heroku operations dashboard</p><hr>
+
+
+ cjohansen/powerblog
+ 2023-12-24T01:30:33Z
+ tag:github.com,2023-12-24:/cjohansen/powerblog
+
+ <p>A step-by-step tutorial for building a static site with Stasis Powerpack</p><hr>
+
\ No newline at end of file
diff --git a/clojure/weekly/index.xml b/clojure/weekly/index.xml
new file mode 100644
index 00000000000..f222faac8a2
--- /dev/null
+++ b/clojure/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Clojure Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:21Z
+ Weekly Trending of Clojure in GitHub
+
+
+ jafingerhut/thalia
+ 2023-12-24T01:47:21Z
+ tag:github.com,2023-12-24:/jafingerhut/thalia
+
+ <p>A collection of documentation for Clojure symbols</p><hr>
+
+
+ yaml/yamlscript
+ 2023-12-24T01:47:21Z
+ tag:github.com,2023-12-24:/yaml/yamlscript
+
+ <p>Programming in YAML</p><hr>
+
+
+ silk-web-toolkit/silk-cli
+ 2023-12-24T01:47:21Z
+ tag:github.com,2023-12-24:/silk-web-toolkit/silk-cli
+
+ <p>Silk compile time web toolkit command line interface.</p><hr>
+
+
\ No newline at end of file
diff --git a/closure-templates/daily/index.xml b/closure-templates/daily/index.xml
index 641eecac362..ae1431265b5 100644
--- a/closure-templates/daily/index.xml
+++ b/closure-templates/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Closure Templates Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:29Z
+ 2023-12-24T01:30:30Z
Daily Trending of Closure Templates in GitHub
\ No newline at end of file
diff --git a/closure-templates/weekly/index.xml b/closure-templates/weekly/index.xml
new file mode 100644
index 00000000000..c2944f39087
--- /dev/null
+++ b/closure-templates/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Closure Templates Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:18Z
+ Weekly Trending of Closure Templates in GitHub
+
+
\ No newline at end of file
diff --git a/cloud-firestore-security-rules/daily/index.xml b/cloud-firestore-security-rules/daily/index.xml
index 4ea03f99535..4a3c7e7d887 100644
--- a/cloud-firestore-security-rules/daily/index.xml
+++ b/cloud-firestore-security-rules/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cloud Firestore Security Rules Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:28Z
+ 2023-12-24T01:30:31Z
Daily Trending of Cloud Firestore Security Rules in GitHub
\ No newline at end of file
diff --git a/cloud-firestore-security-rules/weekly/index.xml b/cloud-firestore-security-rules/weekly/index.xml
new file mode 100644
index 00000000000..f8e5544e707
--- /dev/null
+++ b/cloud-firestore-security-rules/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cloud Firestore Security Rules Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:18Z
+ Weekly Trending of Cloud Firestore Security Rules in GitHub
+
+
\ No newline at end of file
diff --git a/cmake/daily/index.xml b/cmake/daily/index.xml
index 11c8e1834d1..53451f113a9 100644
--- a/cmake/daily/index.xml
+++ b/cmake/daily/index.xml
@@ -1,14 +1,14 @@
GitHub CMake Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:33Z
+ 2023-12-24T01:30:36Z
Daily Trending of CMake in GitHub
- learning-process/ppc-2023-mpi-reports
- 2023-12-23T01:26:33Z
- tag:github.com,2023-12-23:/learning-process/ppc-2023-mpi-reports
-
- <p></p><hr>
+ Lvcky-gg/notNotOdd
+ 2023-12-24T01:30:36Z
+ tag:github.com,2023-12-24:/Lvcky-gg/notNotOdd
+
+ <p>The codebase is haunted</p><hr>
\ No newline at end of file
diff --git a/cmake/weekly/index.xml b/cmake/weekly/index.xml
new file mode 100644
index 00000000000..2ef84991364
--- /dev/null
+++ b/cmake/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub CMake Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:24Z
+ Weekly Trending of CMake in GitHub
+
+
+ PX4/uavcan_board_ident
+ 2023-12-24T01:47:24Z
+ tag:github.com,2023-12-24:/PX4/uavcan_board_ident
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/cobol/daily/index.xml b/cobol/daily/index.xml
index 6267de52331..b151e8ab8a7 100644
--- a/cobol/daily/index.xml
+++ b/cobol/daily/index.xml
@@ -1,7 +1,7 @@
GitHub COBOL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:35Z
+ 2023-12-24T01:30:38Z
Daily Trending of COBOL in GitHub
\ No newline at end of file
diff --git a/cobol/weekly/index.xml b/cobol/weekly/index.xml
new file mode 100644
index 00000000000..1b81e477f34
--- /dev/null
+++ b/cobol/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub COBOL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:25Z
+ Weekly Trending of COBOL in GitHub
+
+
\ No newline at end of file
diff --git a/codeowners/daily/index.xml b/codeowners/daily/index.xml
index 9aef6d261f9..32071d8a2de 100644
--- a/codeowners/daily/index.xml
+++ b/codeowners/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CODEOWNERS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:36Z
+ 2023-12-24T01:30:37Z
Daily Trending of CODEOWNERS in GitHub
\ No newline at end of file
diff --git a/codeowners/weekly/index.xml b/codeowners/weekly/index.xml
new file mode 100644
index 00000000000..1b6e8672c1a
--- /dev/null
+++ b/codeowners/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CODEOWNERS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:27Z
+ Weekly Trending of CODEOWNERS in GitHub
+
+
\ No newline at end of file
diff --git a/codeql/daily/index.xml b/codeql/daily/index.xml
index dc0d7a81948..c5c2d8e3770 100644
--- a/codeql/daily/index.xml
+++ b/codeql/daily/index.xml
@@ -1,7 +1,14 @@
GitHub CodeQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:36Z
+ 2023-12-24T01:30:38Z
Daily Trending of CodeQL in GitHub
+
+ ice-doom/CodeQLRule
+ 2023-12-24T01:30:38Z
+ tag:github.com,2023-12-24:/ice-doom/CodeQLRule
+
+ <p>个人使用CodeQL编写的一些规则</p><hr>
+
\ No newline at end of file
diff --git a/codeql/weekly/index.xml b/codeql/weekly/index.xml
new file mode 100644
index 00000000000..a0b060fa4eb
--- /dev/null
+++ b/codeql/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CodeQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:26Z
+ Weekly Trending of CodeQL in GitHub
+
+
\ No newline at end of file
diff --git a/coffeescript/daily/index.xml b/coffeescript/daily/index.xml
index 17f2932643a..404907fa96d 100644
--- a/coffeescript/daily/index.xml
+++ b/coffeescript/daily/index.xml
@@ -1,7 +1,28 @@
GitHub CoffeeScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:38Z
+ 2023-12-24T01:30:40Z
Daily Trending of CoffeeScript in GitHub
+
+ heroku/node-version-resolver
+ 2023-12-24T01:30:40Z
+ tag:github.com,2023-12-24:/heroku/node-version-resolver
+
+ <p>Give me a semver range and I'll tell you the latest node version that satisfies it.</p><hr>
+
+
+ heroku/websocket-demo
+ 2023-12-24T01:30:40Z
+ tag:github.com,2023-12-24:/heroku/websocket-demo
+
+ <p></p><hr>
+
+
+ nprapps/totebot
+ 2023-12-24T01:30:40Z
+ tag:github.com,2023-12-24:/nprapps/totebot
+
+ <p>THIS IS NOT THE REPO YOU WANT. YOU WANT THIS ONE: https://github.com/nprapps/totebot2</p><hr>
+
\ No newline at end of file
diff --git a/coffeescript/weekly/index.xml b/coffeescript/weekly/index.xml
new file mode 100644
index 00000000000..f4e6cc2691f
--- /dev/null
+++ b/coffeescript/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub CoffeeScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:29Z
+ Weekly Trending of CoffeeScript in GitHub
+
+
+ rchunduru/tiny-cli
+ 2023-12-24T01:47:29Z
+ tag:github.com,2023-12-24:/rchunduru/tiny-cli
+
+ <p>Tiny CLI</p><hr>
+
+
+ HubSpot/documentation-example
+ 2023-12-24T01:47:29Z
+ tag:github.com,2023-12-24:/HubSpot/documentation-example
+
+ <p>HubSpot open source project documentation example</p><hr>
+
+
+ HubSpot/vee
+ 2023-12-24T01:47:29Z
+ tag:github.com,2023-12-24:/HubSpot/vee
+
+ <p>A personal proxy server for web developers</p><hr>
+
+
\ No newline at end of file
diff --git a/coldfusion-cfc/daily/index.xml b/coldfusion-cfc/daily/index.xml
index 578b7d0f2da..2c3257f5527 100644
--- a/coldfusion-cfc/daily/index.xml
+++ b/coldfusion-cfc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ColdFusion CFC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:42Z
+ 2023-12-24T01:30:41Z
Daily Trending of ColdFusion CFC in GitHub
\ No newline at end of file
diff --git a/coldfusion-cfc/weekly/index.xml b/coldfusion-cfc/weekly/index.xml
new file mode 100644
index 00000000000..2c094cf203e
--- /dev/null
+++ b/coldfusion-cfc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ColdFusion CFC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:31Z
+ Weekly Trending of ColdFusion CFC in GitHub
+
+
\ No newline at end of file
diff --git a/coldfusion/daily/index.xml b/coldfusion/daily/index.xml
index 38976eb0759..9b097da73cc 100644
--- a/coldfusion/daily/index.xml
+++ b/coldfusion/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ColdFusion Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:39Z
+ 2023-12-24T01:30:43Z
Daily Trending of ColdFusion in GitHub
\ No newline at end of file
diff --git a/coldfusion/weekly/index.xml b/coldfusion/weekly/index.xml
new file mode 100644
index 00000000000..c77157efda5
--- /dev/null
+++ b/coldfusion/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ColdFusion Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:32Z
+ Weekly Trending of ColdFusion in GitHub
+
+
\ No newline at end of file
diff --git a/collada/daily/index.xml b/collada/daily/index.xml
index 64dc1ff1dd4..57389d0ba94 100644
--- a/collada/daily/index.xml
+++ b/collada/daily/index.xml
@@ -1,7 +1,7 @@
GitHub COLLADA Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:41Z
+ 2023-12-24T01:30:42Z
Daily Trending of COLLADA in GitHub
\ No newline at end of file
diff --git a/collada/weekly/index.xml b/collada/weekly/index.xml
new file mode 100644
index 00000000000..f8f86a46366
--- /dev/null
+++ b/collada/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub COLLADA Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:33Z
+ Weekly Trending of COLLADA in GitHub
+
+
\ No newline at end of file
diff --git a/common-lisp/daily/index.xml b/common-lisp/daily/index.xml
index fc1801a1b52..f16616af8ac 100644
--- a/common-lisp/daily/index.xml
+++ b/common-lisp/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Common Lisp Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:42Z
+ 2023-12-24T01:30:44Z
Daily Trending of Common Lisp in GitHub
+
+ rotatef/gettext
+ 2023-12-24T01:30:44Z
+ tag:github.com,2023-12-24:/rotatef/gettext
+
+ <p>A port of gettext runtime to Common Lisp</p><hr><h1>gettext for Common Lisp</h1>
<p>This is a port of the GNU gettext runtime to Common Lisp. For more information about GNU gettext see <a href="http://www.gnu.org/software/gettext/">http://www.gnu.org/software/gettext/</a>.</p>
<h2>Highlights</h2>
<ul>
<li>Implemented in Common Lisp. No need for any C libraries.</li>
<li>Use GNU gettext tools during development.</li>
<li>Supports multithreaded applications with different langauge in each thread.</li>
<li>Translations can be embedded into compiled applications.</li>
</ul>
<h2>Download and installation</h2>
<p>The libarary has some dependencies, so the easiest way is to use Quicklisp, see <a href="http://www.quicklisp.org/">http://www.quicklisp.org/</a></p>
<p>Get the gettext sources from GitHub:</p>
<pre><code>cd quicklisp/local-projects
git clone git://github.com/copyleft/gettext.git
ln -s gettext/gettext-example .
</code></pre>
<p>Then load it:</p>
<pre><code>(ql:quickload "gettext")
</code></pre>
<p>Eventually gettext will become part of quicklisp, and only the last step will be neccary (unless you need the latest version).</p>
<h2>How to use</h2>
<p>This library reimplements only the runtime part of GNU gettext in Common Lisp. In order to successfully use this library you need to install the GNU gettext tools. No GNU gettext tools or library are needed at runtime.</p>
<p>The easiest way to get started is to look at the sample application located in the subdirectory gettext-example.</p>
<p>Step 1: Add gettext as a dependency to your system definition (gettext-example.asd):</p>
<pre><code>:depends-on (:gettext)
</code></pre>
<p>Step 2: Add the GETTEXT package to the use list of you applications package. Setup gettext in your applications package (package.lisp):</p>
<pre><code>(gettext:setup-gettext #:example "gettext-example")
</code></pre>
<p>The first parameter is the name of the package. The second parameter is the textdomain. Textdomains are namespaces for the translated text. For most application a single textdomain (with the same name as the asdf system) will suffice.</p>
<p>Step 3: Load the translated messages (example.lisp):</p>
<pre><code>(preload-catalogs #.(asdf:system-relative-pathname :gettext-example "locale/"))
</code></pre>
<p>This macro takes a single parameter, the pathname of a directory tree containing translation catalogs in MO format. The texts are loaded at compile time and become part of the compiled file, thus the the MO files are not need at runtime. An alternative approch is to load the MO files at runtime, see the section "Loading catalogs at runtime".</p>
<p>Step 4: Make sure the current locale is set by binding the special variable GETTEXT:<em>CURRENT-LOCALE</em>:</p>
<pre><code>(setf *current-locale* "nn")
</code></pre>
<p>Here the locale is hardcoded to "nn". In a real world application it would be set to the current users preferred language. If the application is a multithreaded multiuser application (like most web applications), dynamically bind GETTEXT:<em>CURRENT-LOCALE</em> to the logged in users preferred language.</p>
<p>Step 5: Mark texts for translation, e.g.:</p>
<pre><code>(write-line (_ "This is an example gettext program."))
</code></pre>
<p>Extract the texts for translations using the xgettext program from GNU gettext. This step will have to be repeated whenver the texts are updated in the source code. See update-translations.sh for a script that automates this job.</p>
<p>Step 6: Translate the texts. First create a PO file for the langauge, using the msginit tool. Then you edit this file using e.g. Emacs with po-mode. The PO file can easly be updated with new texts with the help of the msgmerge tool. See update-translations.sh.</p>
<p>Step 7: Finally convert the PO files into MO files using msgfmt. See update-translations.sh for details.</p>
<h2>Loading catalogs at runtime</h2>
<p>Replace GETTEXT:PRELOAD-CATALOGS with a SETF of the place GETTEXT:TEXTDOMAINDIR:</p>
<pre><code>(setf (textdomaindir "gettext-example")
(asdf:system-relative-pathname :gettext-example "locale/"))
</code></pre>
<p>The catalogs will be loaded as needed and cached until the appliciatons quits.</p>
<h2>Reference</h2>
<p>Special variable GETTEXT:<em>CURRENT-LOCALE</em></p>
<p>This variable must be bound to a string denoting the current locale. The library does not try to decode this string any way, it simply uses it to look for message catalogs in the file system. It's recommended to use the two letter language codes defined in ISO 639-1. A list can be found here: <a href="http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes">http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes</a></p>
<p>Macro GETTEXT:SETUP-GETTEXT package default-domain</p>
<p>Defines gettext lookup functions in the provided package. _ and GETTEXT is as shortcut for GETTEXT:GETTEXT* and NGETTEXT is a shortcut for GETTEXT:NGETTEXT*, but with default-domain as the default domain. N_ is simply a shortcut for GETTEXT:GETTEXT-NOOP.</p>
<p>Place GETTEXT:TEXTDOMAINDIR domain (SETF (GETTEXT:TEXTDOMAINDIR domain) directory)</p>
<p>Specifies where to find translation catalogs for the given domain. The directory is the base directory used for lookup. The actual name of message catalog will be TEXTDOMAINDIR/l/LC_MESSAGES/domain.mo, where TEXTDOMAINDIR is the directory given setf to GETTEXT:TEXTDOMAINDIR, l is the current locale, LC_MESSAGES is the category and domain is the text domain.</p>
<p>Place GETTEXT:TEXTDOMAIN (SETF (GETTEXT:TEXTDOMAIN) domain)</p>
<p>Returns or sets the default text domain used by GETTEXT:GETTEXT* and GETTEXT:NGETTEXT*. Shortcut lookup functions defined by GETTEXT:SETUP-GETTEXT ignores this place.</p>
<p>Function GETTEXT:GETTEXT* msgid &optional domain category locale</p>
<p>Lookup a translated using the provided msgid. Domain defaults to (GETTEXT:TEXTDOMAIN). Category defaults to :LC_MESSAGES, and locale defaults to GETTEXT:<em>CURRENT-LOCALE</em>.</p>
<p>Function GETTEXT:NGETTEXT* msgid1 msgid2 n &optional domain category locale</p>
<p>Lookup a plural translated text. msgid1 is the singular form, msgid2 is the plural form and n is the number used to decide which plural form to use. See GETTEXT:GETTEXT* for description of the optional parameters.</p>
<p>Function GETTEXT:GETTEXT-NOOP msgid</p>
<p>This function simply returns its msgid parameter untranslated. It's only used to mark texts that shall be translated, but where the text occurs in an expression that will be executed at compile time. Example:</p>
<pre><code>(defparameter *greeting* (gettext-noop "Hello world"))
;; In some function:
(write-line (gettext* *greeting*))
</code></pre>
<p>Macro GETTEXT:PRELOAD-CATALOGS textdomaindir</p>
<p>Loads all message catalogs (in every category, in every locale and every domain) in the textdomaindir directory tree. This loading is done at macro expantion time. The effects is as if the translated text where part of the source code. Thus, the message catalogs are not needed at runtime.</p>
<p>Type GETTEXT:LC-CATEGORY</p>
<p>The allowed type of the locale parameter. One of the keyword symbols L:LC_ADDRESS, :LC_ALL, :LC_COLLATE, :LC_CTYPE, :LC_IDENTIFICATION, :LC_MEASUREMENT, :LC_MESSAGES, :LC_MONETARY, :LC_NAME, :LC_NUMERIC, :LC_PAPER, :LC_TELEPHONE and :LC_TIME.</p>
<p>Function GETTEXT:CATALOG-META* &optional domain category locale</p>
<p>Returns meta data about catalog as an assoc list. See <a href="https://www.gnu.org/software/gettext/manual/gettext.html#Header-Entry">https://www.gnu.org/software/gettext/manual/gettext.html#Header-Entry</a></p>
<h2>TODO</h2>
<p>The pgettext function of GNU gettext is not implemented. Implementing this should be fairly stright forward, but apparently the xgettext tool doesn't support this function when extracting texts form Lisp code.</p>
<p>Encoding in MO files is hardcoded to UTF-8. Is this really a problem? Is there really a good reason for using anything else these days?</p>
+
\ No newline at end of file
diff --git a/common-lisp/weekly/index.xml b/common-lisp/weekly/index.xml
new file mode 100644
index 00000000000..f4d64d96700
--- /dev/null
+++ b/common-lisp/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Common Lisp Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:34Z
+ Weekly Trending of Common Lisp in GitHub
+
+
\ No newline at end of file
diff --git a/common-workflow-language/daily/index.xml b/common-workflow-language/daily/index.xml
index 21f059b3494..3113b72d4e9 100644
--- a/common-workflow-language/daily/index.xml
+++ b/common-workflow-language/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Common Workflow Language Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:46Z
+ 2023-12-24T01:30:46Z
Daily Trending of Common Workflow Language in GitHub
\ No newline at end of file
diff --git a/common-workflow-language/weekly/index.xml b/common-workflow-language/weekly/index.xml
new file mode 100644
index 00000000000..d0c6d1244ec
--- /dev/null
+++ b/common-workflow-language/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Common Workflow Language Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:38Z
+ Weekly Trending of Common Workflow Language in GitHub
+
+
\ No newline at end of file
diff --git a/component-pascal/daily/index.xml b/component-pascal/daily/index.xml
index e26d3eaf174..88bbf6042fc 100644
--- a/component-pascal/daily/index.xml
+++ b/component-pascal/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Component Pascal Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:44Z
+ 2023-12-24T01:30:47Z
Daily Trending of Component Pascal in GitHub
\ No newline at end of file
diff --git a/component-pascal/weekly/index.xml b/component-pascal/weekly/index.xml
new file mode 100644
index 00000000000..4888bbf4f43
--- /dev/null
+++ b/component-pascal/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Component Pascal Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:37Z
+ Weekly Trending of Component Pascal in GitHub
+
+
\ No newline at end of file
diff --git a/conll-u/daily/index.xml b/conll-u/daily/index.xml
index 03f169465ea..92d39f07eaf 100644
--- a/conll-u/daily/index.xml
+++ b/conll-u/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CoNLL-U Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:46Z
+ 2023-12-24T01:30:48Z
Daily Trending of CoNLL-U in GitHub
\ No newline at end of file
diff --git a/conll-u/weekly/index.xml b/conll-u/weekly/index.xml
new file mode 100644
index 00000000000..2868730ebcc
--- /dev/null
+++ b/conll-u/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CoNLL-U Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:39Z
+ Weekly Trending of CoNLL-U in GitHub
+
+
\ No newline at end of file
diff --git a/cool/daily/index.xml b/cool/daily/index.xml
index ac2eccdc4fc..930a2c833a1 100644
--- a/cool/daily/index.xml
+++ b/cool/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cool Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:45Z
+ 2023-12-24T01:30:47Z
Daily Trending of Cool in GitHub
\ No newline at end of file
diff --git a/cool/weekly/index.xml b/cool/weekly/index.xml
new file mode 100644
index 00000000000..64a3bdd3c96
--- /dev/null
+++ b/cool/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cool Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:36Z
+ Weekly Trending of Cool in GitHub
+
+
\ No newline at end of file
diff --git a/coq/daily/index.xml b/coq/daily/index.xml
index ff7bc67a268..63806c0ae90 100644
--- a/coq/daily/index.xml
+++ b/coq/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Coq Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:50Z
+ 2023-12-24T01:30:51Z
Daily Trending of Coq in GitHub
\ No newline at end of file
diff --git a/coq/weekly/index.xml b/coq/weekly/index.xml
new file mode 100644
index 00000000000..9d2a80b14af
--- /dev/null
+++ b/coq/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Coq Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:40Z
+ Weekly Trending of Coq in GitHub
+
+
\ No newline at end of file
diff --git a/cpp-objdump/daily/index.xml b/cpp-objdump/daily/index.xml
index 21e393292c8..c163fb2ba56 100644
--- a/cpp-objdump/daily/index.xml
+++ b/cpp-objdump/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cpp-ObjDump Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:48Z
+ 2023-12-24T01:30:50Z
Daily Trending of Cpp-ObjDump in GitHub
\ No newline at end of file
diff --git a/cpp-objdump/weekly/index.xml b/cpp-objdump/weekly/index.xml
new file mode 100644
index 00000000000..5eba1d8786c
--- /dev/null
+++ b/cpp-objdump/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cpp-ObjDump Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:42Z
+ Weekly Trending of Cpp-ObjDump in GitHub
+
+
\ No newline at end of file
diff --git a/creole/daily/index.xml b/creole/daily/index.xml
index a06ab83af12..e91a2588777 100644
--- a/creole/daily/index.xml
+++ b/creole/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Creole Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:48Z
+ 2023-12-24T01:30:49Z
Daily Trending of Creole in GitHub
\ No newline at end of file
diff --git a/creole/weekly/index.xml b/creole/weekly/index.xml
new file mode 100644
index 00000000000..5cb0cabfda3
--- /dev/null
+++ b/creole/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Creole Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:41Z
+ Weekly Trending of Creole in GitHub
+
+
\ No newline at end of file
diff --git a/crystal/daily/index.xml b/crystal/daily/index.xml
index c0f43f77c3a..5c98d15877c 100644
--- a/crystal/daily/index.xml
+++ b/crystal/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Crystal Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:50Z
+ 2023-12-24T01:30:52Z
Daily Trending of Crystal in GitHub
\ No newline at end of file
diff --git a/crystal/weekly/index.xml b/crystal/weekly/index.xml
new file mode 100644
index 00000000000..5a2a7256f4d
--- /dev/null
+++ b/crystal/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Crystal Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:43Z
+ Weekly Trending of Crystal in GitHub
+
+
\ No newline at end of file
diff --git a/cson/daily/index.xml b/cson/daily/index.xml
index 8f3fd57a8a4..0e15ff6c628 100644
--- a/cson/daily/index.xml
+++ b/cson/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CSON Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:52Z
+ 2023-12-24T01:30:53Z
Daily Trending of CSON in GitHub
\ No newline at end of file
diff --git a/cson/weekly/index.xml b/cson/weekly/index.xml
new file mode 100644
index 00000000000..1aa24c87d54
--- /dev/null
+++ b/cson/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CSON Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:44Z
+ Weekly Trending of CSON in GitHub
+
+
\ No newline at end of file
diff --git a/csound-document/daily/index.xml b/csound-document/daily/index.xml
index 73827973e30..b4b8ea7c491 100644
--- a/csound-document/daily/index.xml
+++ b/csound-document/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Csound Document Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:53Z
+ 2023-12-24T01:30:54Z
Daily Trending of Csound Document in GitHub
\ No newline at end of file
diff --git a/csound-document/weekly/index.xml b/csound-document/weekly/index.xml
new file mode 100644
index 00000000000..79d79cc8f49
--- /dev/null
+++ b/csound-document/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Csound Document Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:45Z
+ Weekly Trending of Csound Document in GitHub
+
+
\ No newline at end of file
diff --git a/csound-score/daily/index.xml b/csound-score/daily/index.xml
index 4e726fc0aa8..8953267aad7 100644
--- a/csound-score/daily/index.xml
+++ b/csound-score/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Csound Score Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:54Z
+ 2023-12-24T01:30:56Z
Daily Trending of Csound Score in GitHub
\ No newline at end of file
diff --git a/csound-score/weekly/index.xml b/csound-score/weekly/index.xml
new file mode 100644
index 00000000000..a7097bb416e
--- /dev/null
+++ b/csound-score/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Csound Score Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:45Z
+ Weekly Trending of Csound Score in GitHub
+
+
\ No newline at end of file
diff --git a/csound/daily/index.xml b/csound/daily/index.xml
index dbc8270c0b9..724c4c90eb6 100644
--- a/csound/daily/index.xml
+++ b/csound/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Csound Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:52Z
+ 2023-12-24T01:30:55Z
Daily Trending of Csound in GitHub
\ No newline at end of file
diff --git a/csound/weekly/index.xml b/csound/weekly/index.xml
new file mode 100644
index 00000000000..daa44752e45
--- /dev/null
+++ b/csound/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Csound Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:46Z
+ Weekly Trending of Csound in GitHub
+
+
\ No newline at end of file
diff --git a/css/daily/index.xml b/css/daily/index.xml
index a50b3c5935b..168ec4e845a 100644
--- a/css/daily/index.xml
+++ b/css/daily/index.xml
@@ -1,21 +1,14 @@
GitHub CSS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:00Z
+ 2023-12-24T01:31:03Z
Daily Trending of CSS in GitHub
- hyperweek/mx3-revamped
- 2023-12-23T01:27:00Z
- tag:github.com,2023-12-23:/hyperweek/mx3-revamped
-
- <p>mx3 revamped!</p><hr><h1>mx3</h1>
<p>Use <a href="http://middlemanapp.com/">http://middlemanapp.com/</a> to run the site.</p>
-
-
- aalmiray/java-champions
- 2023-12-23T01:27:00Z
- tag:github.com,2023-12-23:/aalmiray/java-champions
-
- <p>A list of Java Champions</p><hr><h1>Java Champions</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p><span class="image"><img src="https://raw.githubusercontent.com/aalmiray/java-champions/main/site/assets/img/duke_champion.png" alt="duke champion"></span></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_what_is_a_java_champion">What is a Java Champion?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>One of the best descriptions was given in the 2009 JavaOne Conference PDF:</p>
</div>
<div class="paragraph">
<p>"The Java Champions community was started by Sun at the 2005 JavaOne conference to recognize key influencers in the Java community. Java Champions are influential Rock Star presenters and Java technology educators, authors, and consultants; Java platform event organizers; and others within the Java technology ecosystem. For the third consecutive year, Java Champions have contributed to the JavaOne conference process as technical reviewers for paper submissions, have been recognized for their achievements, and have shared their thoughts about the state of the Java platform at their BOF sessions." From <a href="https://raw.githubusercontent.com/aalmiray/java-champions/main/site/content/resources/javaone-2009.pdf">javaone-2009.pdf</a></p>
</div>
<div class="paragraph">
<p>Note: This list is maintained by the Java Champions themselves.</p>
</div>
</div>
</div>
+ Akashkumar9508/Smart-Attend
+ 2023-12-24T01:31:03Z
+ tag:github.com,2023-12-24:/Akashkumar9508/Smart-Attend
+
+ <p></p><hr><h1>Smart Attend</h1>
<p>Smart Attend is a web application designed to track attendance in a smart way. It provides separate login interfaces for teachers and students.</p>
<blockquote>
<p>It is in building phase for the project Smart Attend !</p>
</blockquote>
<h2>Version</h2>
<p>1.0.0</p>
<h2>Authors</h2>
<ul>
<li><a href="https://github.com/Akashkumar9508">Akash Kumar</a></li>
<li><a href="https://github.com/Anant1004">Anant Kumar</a></li>
<li><a href="https://github.com/bickysrm">Bicky Kumar</a></li>
<li><a href="https://github.com/Aniruddh0012">Aniruddh Sharma</a></li>
</ul>
<h2>Features</h2>
<ul>
<li>Responsive design</li>
<li>Separate login for teachers and students</li>
<li>Contact, About, and Uses pages</li>
</ul>
<h2>Technologies Used</h2>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li>AOS library for animations</li>
<li>Boxicons for icons</li>
<li>Smpt js</li>
</ul>
<h2>License</h2>
<p>Copyright © 2023. All Rights Reserved to Smart Attend Team !</p>
\ No newline at end of file
diff --git a/css/weekly/index.xml b/css/weekly/index.xml
new file mode 100644
index 00000000000..b4d8600480c
--- /dev/null
+++ b/css/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub CSS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:53Z
+ Weekly Trending of CSS in GitHub
+
+
+ BuilderIO/hydration-overlay
+ 2023-12-24T01:47:53Z
+ tag:github.com,2023-12-24:/BuilderIO/hydration-overlay
+
+ <p>Overlay for hydration errors with explicit diff between renders.</p><hr><h1>Hydration Overlay 🕵️</h1>
<p>This package displays an overlay during Hydration Errors, providing an explicit diff between the server-side and client-side renders.</p>
<p><img src="https://raw.githubusercontent.com/BuilderIO/hydration-overlay/main/imgs/after.png" alt="after"></p>
<h2>Installation</h2>
<pre><code class="language-bash">npm install @builder.io/react-hydration-overlay
</code></pre>
<h2>Usage</h2>
<h3><code>HydrationOverlay</code></h3>
<p>First, wrap the root of your app in the <code>HydrationOverlay</code> component.</p>
<pre><code class="language-tsx">import { HydrationOverlay } from "@builder.io/react-hydration-overlay";
const App = () => {
return (
<HydrationOverlay>
<YourApp />
</HydrationOverlay>
);
};
</code></pre>
<h3>Plugin</h3>
<p>Second, add the plugin for your framework. Currently, we support Next.js & Webpack.</p>
<h4>Next.js</h4>
<p>in <code>next.config.js</code>:</p>
<pre><code class="language-js">const {
withHydrationOverlay,
} = require("@builder.io/react-hydration-overlay/next");
/** @type {import('next').NextConfig} */
const nextConfig = {
/** your config here */
};
module.exports = withHydrationOverlay({
/**
* Optional: `appRootSelector` is the selector for the root element of your app. By default, it is `#__next` which works
* for Next.js apps with pages directory. If you are using the app directory, you should change this to `main`.
*/
appRootSelector: "main",
})(nextConfig);
</code></pre>
<h4>Webpack</h4>
<p>Here is an example (still with Next), but using the Webpack helper directly:</p>
<pre><code class="language-ts">const {
withHydrationOverlayWebpack,
} = require("@builder.io/react-hydration-overlay/webpack");
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
webpack: (config, options) => {
config = withHydrationOverlayWebpack({
appRootSelector: "#__next",
isMainAppEntryPoint: (entryPointName) =>
!options.isServer &&
(entryPointName === "pages/_app" || entryPointName === "main-app"),
})(config);
return config;
},
};
module.exports = nextConfig;
</code></pre>
<h2>Notes</h2>
<ul>
<li>This package is currently in beta. Please report any issues you find!</li>
<li>This package is not intended for production use. We highly recommend you remove this package from your production builds.</li>
</ul>
<h2>Caveats</h2>
<p>This package works by comparing the HTML received from the server with the HTML rendered by the client, which has one important consequence. React re-renders the entire app when hydration fails, potentially introducing even more changes.</p>
<p>The biggest example is <code>style</code> attributes: React appends <code>;</code> to each one and alters the whitespace. In <a href="https://x.com/samijaber_/status/1734760349662957906?s=20">more extreme examples</a>, it causes enormous diffs for properties like <code>all: unset</code>.</p>
<p>Therefore, this tool will give you false positives for style changes.</p>
<h2>How It Works</h2>
<ul>
<li>The plugin injects <code>hydration-overlay-initializer.js</code> into your app's entry point. This script reads the HTML from the server and stores it, and then listens for hydration errors and stores the resulting HTML then.</li>
<li>The <code>HydrationOverlay</code> component reads both HTML strings and compares them, and renders the overlay.</li>
</ul>
<h2>Support</h2>
<p>To add support for other frameworks, what is needed is a plugin that injects the <code>hydration-overlay-initializer.js</code> script into the app's entry point. See <a href="https://raw.githubusercontent.com/BuilderIO/hydration-overlay/main/packages/lib/src/next-plugin.ts">next-plugin.ts</a> for more information. PRs welcome!</p>
<ul>
<li><input type="checkbox" checked disabled> Next.js</li>
<li><input type="checkbox" disabled> Remix</li>
<li><input type="checkbox" disabled> Vite SSR</li>
</ul>
<h2>Release process</h2>
<h3>Add changesets</h3>
<p>in the same PR where your change is made, run:</p>
<pre><code>pnpm c:add
</code></pre>
<p>and follow instructions to add changesets. You can then merge your PR.</p>
<h3>Merge automated PR</h3>
<p>Once your PR is merged, the <code>changeset</code> bot will open a PR with the changeset. You can merge this PR once CI passes. This will trigger a release.</p>
<br>
<br>
<p align="center"> <a href="https://www.builder.io/m/developers">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/844291/230786554-eb225eeb-2f6b-4286-b8c2-535b1131744a.png">
<img width="250" alt="Made with love by Builder.io" src="https://user-images.githubusercontent.com/844291/230786555-a58479e4-75f3-4222-a6eb-74c5af953eac.png">
</picture> </a> </p>
+
+
+ Mozilla-Ocho/Memory-Cache
+ 2023-12-24T01:47:53Z
+ tag:github.com,2023-12-24:/Mozilla-Ocho/Memory-Cache
+
+ <p>MemoryCache is an experimental development project to turn a local desktop environment into an on-device AI agent</p><hr><h1>Memory Cache</h1>
<p>Memory Cache is a project that allows you to save a webpage while you're browsing in Firefox as a PDF, and save it to a synchronized folder that can be used in conjunction with privateGPT to augment a local language model.</p>
<table>
<thead>
<tr>
<th>⚠️: This setup uses the primordial version of privateGPT. I'm working from a fork that can be found <a href="https://github.com/misslivirose/privateGPT">here</a>.</th>
</tr>
</thead>
</table>
<h2>Prerequisites</h2>
<ol>
<li>Set up <a href="https://github.com/imartinez/privateGPT">privateGPT</a> - either using the primordial checkpoint, or from my fork.</li>
<li>Create a symlink between a subdirectory in your default Downloads folder called 'MemoryCache' and a 'MemoryCache' directory created inside of /PrivateGPT/source_documents/MemoryCache</li>
<li>Apply patch to Firefox to add the <code>printerSettings.silentMode</code> property to the Tabs API. <a href="https://github.com/misslivirose/MemoryCacheExt/wiki/Modifying-Firefox-to-use-Memory-Cache">See wiki page for instructions</a></li>
<li>Copy /scripts/run_ingest.sh into your privateGPT directory and run it to start <code>inotifywait</code> watching your downloads directory for new content</li>
</ol>
<h2>Setting up the Extension</h2>
<ol>
<li>Clone the Memory-Cache GitHub repository to your local machine</li>
<li>In Firefox, navigate to <code>about:debugging</code> and click on 'This Firefox'</li>
<li>Click 'Load Temporary Add-on" and open the <code>extension/manifest.json</code> file in the MemoryCacheExt directory</li>
</ol>
<h2>Using the Extension</h2>
<ol>
<li>Under the 'Extensions' menu, add the Memory Cache extension to the toolbar</li>
<li>When you want to save a page to your Memory Cache, click the icon and select the 'Save' button. This will save the file silently as a PDF if you are using a Firefox build with the <code>printerSettings.silentMode</code> property addition.</li>
</ol>
+
+
+ xhunmon/VABlog
+ 2023-12-24T01:47:53Z
+ tag:github.com,2023-12-24:/xhunmon/VABlog
+
+ <p>YUV/PCM/H264/H265/AAC/FFmpeg/Opengl. 这有丰富的音视频开发的学习资源、开发工具、优秀书籍、教程、面试题和开源项目,旨在帮助开发者和爱好者更好地学习、实践和工作。</p><hr><p>为了更好的阅读请前往<a href="https://xhunmon.github.io/VABlog/">GitBook</a></p>
<blockquote>
<blockquote>
<p>欢迎加入QQ技术交流群:389713575</p>
</blockquote>
</blockquote>
<h1>一、前言</h1>
<p>这里整理有着丰富的音视频开发的学习资源、开发工具、优秀书籍、教程和开源项目,旨在帮助开发者和爱好者更好地学习、实践和工作。而下图是开发处理的过程:</p>
<p><img src="https://raw.githubusercontent.com/xhunmon/VABlog/main/styles/va_program.jpg" alt="音视频处理过程"></p>
<h1>二、学习技能</h1>
<table>
<thead>
<tr>
<th>语言</th>
<th>重要度</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr>
<td>C/C++</td>
<td>★★★★★</td>
<td>作为底层开发语言,可以实现音视频编码/解码,滤镜等高性能的操作,是音视频开发中最为重要的基础语言之一。</td>
</tr>
<tr>
<td>Python</td>
<td>★★★☆☆</td>
<td>Python 在音视频开发中可以用于快速开发或原型开发,尤其在深度学习及音视频处理应用中表现突出。</td>
</tr>
<tr>
<td>Java/Kotlin</td>
<td>★★★☆☆</td>
<td>Java/Kotlin 适用于 Android平台的音视频开发,它们提供了音视频录制、剪辑、播放等 API。</td>
</tr>
<tr>
<td>Objective-C/Swift</td>
<td>★★★☆☆</td>
<td>用于MacOS、iOS平台的开发,其开发API包含音视频流的处理和流媒体播放等。</td>
</tr>
<tr>
<td>JavaScript</td>
<td>★☆☆☆☆</td>
<td>JavaScript是Web开发的常用编程语言,它的WebRTC技术可以用于浏览器中的音视频流处理和实时通讯。</td>
</tr>
<tr>
<td>Shell</td>
<td>★☆☆☆☆</td>
<td>脚本编写、系统管理等。</td>
</tr>
<tr>
<td>CMake</td>
<td>★☆☆☆☆</td>
<td>跨平台编译、构建工具等。</td>
</tr>
<tr>
<td>GLSL</td>
<td>★☆☆☆☆</td>
<td>图形学、OpenGL着色器等。</td>
</tr>
</tbody>
</table>
<h1>三、学习音视频理论知识</h1>
<h2>1.重要知识点</h2>
<table>
<thead>
<tr>
<th>知识点</th>
<th>重要度</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr>
<td>YUV/RGB</td>
<td>★★★★★</td>
<td>视频原始(裸流)数据,解码最终显示就是一帧帧YUV数据 。</td>
</tr>
<tr>
<td>PCM</td>
<td>★★★★★</td>
<td>音频原始(裸流)数据,解码最终播放的就是PCM数据。</td>
</tr>
<tr>
<td>H.264(AVC)</td>
<td>★★★★★</td>
<td>目前主流的视频编解码协议。</td>
</tr>
<tr>
<td>H.265(HEVC)</td>
<td>★★★☆☆</td>
<td>基于H.264的升级版,大幅度提升了编码大小和质量。因为版权和收费问题没有普及。</td>
</tr>
<tr>
<td>AAC</td>
<td>★★★★★</td>
<td>目前主流的音频编解码协议。</td>
</tr>
<tr>
<td>RTMP</td>
<td>★★★☆☆</td>
<td>直播推流,看侧重点</td>
</tr>
<tr>
<td>封装格式</td>
<td>★★☆☆☆</td>
<td>MP4、AVI、MKV、RMVB、FLV等容器,把音频、视频、字幕等通道封装成一个文件</td>
</tr>
<tr>
<td>webrtc(VP8)</td>
<td>★★★☆☆</td>
<td>P2P的音视频通话,看侧重点</td>
</tr>
<tr>
<td>OpenGL</td>
<td>★★★☆☆</td>
<td>使用GPU渲染视频,释放宝贵的CPU资源,看侧重点</td>
</tr>
</tbody>
</table>
<h2>2.书籍推荐</h2>
<ul>
<li><a href="https://item.jd.com/12292642.html">书:音视频开发进阶指南:基于Android与iOS平台的实践(京东)</a> :<strong>第1章 音视频基础概念</strong>;电子书往最后翻。</li>
<li><a href="https://item.jd.com/12467530.html">书:Android 音视频开发_何俊林(京东)</a> :<strong>第1章 音视频基础知识</strong>;电子书往最后翻。</li>
<li><a href="https://item.jd.com/10022441804147.html">书:新一代视频压缩编码标准-H.264/AVC(第二版)(京东)</a> : 讲述H.264等编解码原理实现,其中几个算法 <a href="https://zhuanlan.zhihu.com/p/40356456">这篇文章</a>讲的很深刻。</li>
<li><a href="http://www.52im.net/thread-228-1-1.html">这系列文章通俗易懂讲述编解码的一些知识</a> 。</li>
</ul>
<h2>3.实践</h2>
<h3>3.1.视音频数据处理入门</h3>
<p><a href="https://blog.csdn.net/leixiaohua1020/article/details/18893769">[总结]视音频编解码技术零基础学习方法</a> 系列文章,介绍了视音频编解码技术大体上原理和流程,通俗易懂。包括以下文章:</p>
<ul>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/50534150">视音频数据处理入门:RGB、YUV像素数据处理</a> :视频就是由它们组成的。</li>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/50534316">视音频数据处理入门:PCM音频采样数据处理</a> :音频就是由它们组成的。</li>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/50534369">视音频数据处理入门:H.264视频码流解析</a> :视频编码技术的一种(现代音视频开发必须掌握)。</li>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/50535042">视音频数据处理入门:AAC音频码流解析</a> :音频编码技术的一种(现代音视频开发必须掌握)。</li>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/50535082">视音频数据处理入门:FLV封装格式解析</a> :音视频封装格式的一种。</li>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/50535230">视音频数据处理入门:UDP-RTP协议解析</a> :音视频协议的一种。</li>
</ul>
<h3>3.2.完整的RTMP推送小项目</h3>
<p>此过程,体现从0~1。0是采集到的原始视频和音频数据,进行编码、封装,变为1(文件)。</p>
<ul>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/README.md">直播推流全过程:总纲</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/1-yuv.md">直播推流全过程:视频数据源之YUV</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/2-pcm.md">直播推流全过程:音频数据源之PCM</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/3-h264.md">直播推流全过程:视频编码之H.264</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/4-aac.md">直播推流全过程:音频编码之AAC</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/5-rtmp.md">直播推流全过程:直播推流编码之RTMP</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/h264-descriptor.md">其他:H.264符号描述</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/RTMP/6-optimize.md">其他:直播优化基础</a></li>
</ul>
<h3>3.3.播放器小项目</h3>
<p>此过程,体现从1~0。与3.2正好相反,把封装的文件(网络数据)通过解封装和解码,得到原始的裸数据(一帧帧图片)进行播放。</p>
<ul>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/AFPlayer/README.md">AFPlayer项目</a> Android实现FFmpeg、OpenSL ES、OpenGL SE、MediaCodec等,实现简单的播放器,主要体现出相关知识点的使用。</li>
</ul>
<h1>四、学习过程的分析工具</h1>
<table>
<thead>
<tr>
<th>工具</th>
<th>作用</th>
<th>下载地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>VideoEye</td>
<td>来自雷神的强大实时视频码流分析软件。</td>
<td><a href="https://blog.csdn.net/leixiaohua1020/article/details/34553607">地址</a></td>
</tr>
<tr>
<td>Codecian</td>
<td>H264/H265等分析工具(跨平台)。</td>
<td><a href="http://codecian.com/">地址</a></td>
</tr>
<tr>
<td>H264Visa</td>
<td>H.264/AVC实时视频分析工具。</td>
<td>(略)</td>
</tr>
<tr>
<td>Elecard StreamEye</td>
<td>编码视频的可视化表现,流结构分析,这些流是MPEG-1/2/4 or AVC/H.264 VES(视频基本流)、SS(MPEG1的系统流)、PS(MPEG2的程序流)、TS(mpeg2的传输流)。</td>
<td>(略)</td>
</tr>
<tr>
<td>Hxd Hex Editor</td>
<td>16进制查看工具。</td>
<td><a href="https://mh-nexus.de/en/downloads.php?product=HxD20">地址</a></td>
</tr>
<tr>
<td>ffprobe</td>
<td>ffmpeg中自带的分析工具,非常强大,不过上手有难度。</td>
<td><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/18_command.md">参考</a></td>
</tr>
</tbody>
</table>
<h1>五、重点开发工具/组件/开源库</h1>
<h2>1.FFmpeg</h2>
<p>音视频开发是绕不开FFmpeg的,因为它是一个"集大成者",里面已经包含或可集成现代几乎所有的音视频技术(库)。</p>
<h3>1.1.学习途径</h3>
<ul>
<li><a href="http://ffmpeg.org/ffmpeg.html">阅读官方文档</a></li>
<li>学习官方例子(源码中<code>doc/examples/xxx</code>)</li>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/15811977">[总结]FFMPEG视音频编解码零基础学习方法</a></li>
<li><a href="https://ffmpeg.xianwaizhiyin.net/">FFmpeg原理(推荐)</a></li>
<li><a href="https://github.com/leandromoreira/ffmpeg-libav-tutorial/raw/master/README-cn.md">FFmpeg 中文文档</a></li>
<li>书籍(电子书往最后翻)</li>
</ul>
<blockquote>
<ul>
<li><a href="https://item.jd.com/12349436.html">1.FFmpeg从入门到精通(京东)</a></li>
<li><a href="https://download.csdn.net/detail/leixiaohua1020/6377803">2.FFMPEG_FFPLAY源码剖析(CSDN)</a></li>
<li><a href="https://item.jd.com/12292642.html">3.音视频开发进阶指南:基于Android与iOS平台的实践(京东)</a></li>
<li><a href="https://item.jd.com/12467530.html">4.Android 音视频开发_何俊林(京东)</a></li>
</ul>
</blockquote>
<h3>1.2.学习路线</h3>
<p><a href="https://blog.csdn.net/leixiaohua1020/article/details/15811977">这里不推荐直接学习雷神的 [总结]FFMPEG视音频编解码零基础学习方法,建议是通过在学习FFmpeg官方例子中进行学习,避免先入为主使用了过时的API。</a></p>
<h4>1.2.1.源码编译</h4>
<p><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/03_build_ffmpeg.md">编译ffmpeg4.2.2</a>通过这篇文章我们基本可以编译出我们想要的FFmpeg库</p>
<h4>1.2.2.源码阅读</h4>
<ul>
<li>源码导入:<a href="https://ffmpeg.xianwaizhiyin.net/debug-ffmpeg/debug-ffmpeg.html">FFmpeg调试环境搭建</a></li>
<li>阅读参考:<a href="https://download.csdn.net/detail/leixiaohua1020/6377803">FFMPEG_FFPLAY源码剖析(CSDN)</a> 、<a href="https://blog.csdn.net/leixiaohua1020/article/details/44220151">雷神的FFmpeg源代码系列</a></li>
</ul>
<h4>1.2.3.学习官方例子</h4>
<ul>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/06_struct.md">FFmpeg重要结构体(转载)</a> ,因为在学习FFmpeg中,必须得知道结构体中重要参数的含义,否则举步维艰。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/08_demuxing.md">FFmpeg Demuxing(解封装)</a> 对应 <code>doc/examples/demuxing_decoding.c</code> 中的解封装部分。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/09_muxing.md">FFmpeg Muxing(封装)</a> 对应 <code>doc/examples/muxing.c</code> 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/10_remuxing.md">FFmpeg Remuxing(重新封装)</a> 对应 <code>doc/examples/remuxing.c</code> 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/11_decode.md">FFmpeg Decode(解码)</a> 对应 <code>doc/examples/decode_audio.c</code> 和 <code>doc/examples/decode_video.c</code> 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/12_encode.md">FFmpeg Encode(编码)</a> 对应 <code>doc/examples/encode_audio.c</code> 和 <code>doc/examples/encode_video.c</code> 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/13_transfer.md">FFmpeg 简单实现转码</a> 汇总解封装、解码、编码、封装放到一起方便理解 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/14_filter_v.md">FFmpeg Filter和SDL(Video)</a> 对应 <code>doc/examples/filtering_video.c</code> 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/15_filter_a.md">FFmpeg Filter和SDL(Audio)</a> 对应 <code>doc/examples/filtering_video.c</code> 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/16_transcode.md">FFmpeg Transcode(转码)</a> 对应 <code>doc/examples/transcoding.c</code> 。</li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/19_swscale.md">FFmpeg Swscale(图像转换)</a> 对应 <code>doc/examples/scaling_video.c</code> 。</li>
</ul>
<h4>1.2.4.音视频同步</h4>
<ul>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/17_sync.md">FFmpeg 音视频同步处理</a></li>
</ul>
<h4>1.2.5.FFmpeg相关</h4>
<ul>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/FFmpeg/18_command.md">FFmpeg 命令使用指南:分析ffmpeg、ffprobe、ffplay工具使用文档,关联官方文档,以及滤镜、协议、视频合并、各种播放参数等相关介绍</a></li>
</ul>
<h2>2 OpenGL</h2>
<p>OpenGL使用GPU渲染视频,释放宝贵的CPU资源,学习它是必不可少的。但是,正如<a href="https://blog.csdn.net/leixiaohua1020/article/details/40246783">雷神所说</a> :作为一个搞视频技术的人研究OpenGL,需要耗费大量时间和精力,这样学习不是很经济。所以推荐只学习有关视频渲染相关知识。</p>
<ul>
<li><a href="https://zh.wikipedia.org/wiki/OpenGL">OpenGL介绍,和相关程序库</a></li>
<li><a href="https://blog.csdn.net/leixiaohua1020/article/details/40301179">纹理有关的基础知识</a> 、<a href="https://blog.csdn.net/leixiaohua1020/article/details/40333583">OpenGL播放RGB/YUV</a> 、<a href="https://blog.csdn.net/leixiaohua1020/article/details/40379845">OpenGL播放YUV420P(通过Texture,使用Shader)</a></li>
<li><a href="https://developer.android.google.cn/guide/topics/graphics/opengl?hl=zh_cn">Android OpenGL ES官方文档</a></li>
<li><a href="https://github.com/LearnOpenGL-CN/LearnOpenGL-CN">LearnOpenGL-CN</a></li>
<li><a href="https://github.com/Canber/OpenGL-ES-for-android">OpenGL电子书下载</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/OpenGL/01_opengl.md">OpenGL基础知识</a></li>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/OpenGL/02_glsl.md">GLSL(着色器语言)中文手册</a></li>
<li><a href="https://github.com/githubhaohao/NDK_OpenGLES_3_0">Android OpenGL ES 3.0 从入门到精通系统性学习教程</a></li>
<li>OpenGL ES推荐:WebGL编程指南(资源见下)</li>
</ul>
<h2>3.音频相关处理库</h2>
<table>
<thead>
<tr>
<th>库名称</th>
<th>作用</th>
<th>平台</th>
<th>项目地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>SoX</td>
<td>SoX 可以进行音频处理,如音调、声速、混响、后暂式等等</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://github.com/chirlu/sox">https://github.com/chirlu/sox</a></td>
</tr>
<tr>
<td>Essentia</td>
<td>Essentia 可以进行音频处理、分析、提取等,提供了很多现成的功能算法</td>
<td>Windows、macOS、Linux、Android、iOS</td>
<td><a href="https://github.com/MTG/essentia">https://github.com/MTG/essentia</a></td>
</tr>
<tr>
<td>Spleeter</td>
<td>Spleeter 是一款分离歌曲音轨的库,可以分离歌曲中的伴奏、人声等(如:不带背景乐的伴奏)</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://github.com/deezer/spleeter">https://github.com/deezer/spleeter</a></td>
</tr>
<tr>
<td>libsndfile</td>
<td>libsndfile 可以读写、处理多种音频文件,支持变速、变调等处理</td>
<td>Linux、macOS、Windows</td>
<td><a href="http://www.mega-nerd.com/libsndfile/">http://www.mega-nerd.com/libsndfile/</a></td>
</tr>
<tr>
<td>Rubber Band Audio</td>
<td>Rubber Band Audio 可以进行音频处理,支持变速、变调、变形和时间拉伸等多种处理操作</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://breakfastquay.com/rubberband/">https://breakfastquay.com/rubberband/</a></td>
</tr>
<tr>
<td>librubberband</td>
<td>librubberband 是 Rubber Band Audio 的 C++ 接口,简化了音频处理操作。</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://github.com/breakfastquay/rubberband/tree/master/src">https://github.com/breakfastquay/rubberband/tree/master/src</a></td>
</tr>
<tr>
<td>SoundTouch</td>
<td>SoundTouch 可用进行音频连续变速变调处理,包括作品(“chipway/Pydub-Playground”),可实现歌曲同步播放。</td>
<td>Windows、macOS、Linux、Android、iOS</td>
<td><a href="https://gitlab.com/soundtouch/soundtouch">https://gitlab.com/soundtouch/soundtouch</a></td>
</tr>
<tr>
<td>Sonic</td>
<td>Sonic 可实现音频变速、变调等处理,运用于 播客、游戏等领域。</td>
<td>Windows、macOS、Linux、Android、iOS</td>
<td><a href="https://github.com/waywardgeek/sonic">https://github.com/waywardgeek/sonic</a></td>
</tr>
<tr>
<td>Oboe</td>
<td>Oboe是一个C++库,它使在Android上建立高性能的音频应用变得容易。</td>
<td>Android</td>
<td><a href="https://github.com/google/oboe">https://github.com/google/oboe</a></td>
</tr>
</tbody>
</table>
<h2>4.视频相关处理库</h2>
<table>
<thead>
<tr>
<th>库名称</th>
<th>作用</th>
<th>平台</th>
<th>项目地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>FFmpeg</td>
<td>FFmpeg 可以转换视频文件格式、添加滤镜、剪辑、提取音频等功能</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://github.com/FFmpeg/FFmpeg">https://github.com/FFmpeg/FFmpeg</a></td>
</tr>
<tr>
<td>Libav</td>
<td>libav 同样可以转换视频文件格式、添加滤镜、剪辑、提取音频等功能,是 FFmpeg 的一个分支版本</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://libav.org/">https://libav.org/</a></td>
</tr>
<tr>
<td>GStreamer</td>
<td>GStreamer 是一个流媒体框架,支持流式传输视频文件并进行处理,可以添加滤镜、编解码、格式转换等功能</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://gstreamer.freedesktop.org/">https://gstreamer.freedesktop.org/</a></td>
</tr>
<tr>
<td>MLT Framework</td>
<td>MLT Framework 可以用于视频混合、转换、添加滤镜、效果等,也是 Kdenlive 软件所使用的引擎</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://github.com/mltframework/">https://github.com/mltframework/</a></td>
</tr>
<tr>
<td>OpenCV</td>
<td>OpenCV 是一个计算机视觉库,但也支持读取、写入视频文件、添加滤镜、实现对象追踪等功能</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://github.com/opencv/opencv">https://github.com/opencv/opencv</a></td>
</tr>
<tr>
<td>Blender</td>
<td>Blender 是一个 3D 制作软件,支持读取、写入视频文件、添加滤镜、实现对象制作等功能</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://www.blender.org/">https://www.blender.org/</a></td>
</tr>
<tr>
<td>MLV App</td>
<td>MLV App 主要用于处理和编辑 Magic Lantern 的电影录制格式,可以进行视频转换和色彩分级等</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://bitbucket.org/dmilligan/mlv_app/">https://bitbucket.org/dmilligan/mlv_app/</a></td>
</tr>
<tr>
<td>HandBrake</td>
<td>HandBrake 是一个跨平台的视频转换器,支持多种输入、输出格式,可以添加滤镜、转换分辨率等操作</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://github.com/HandBrake/HandBrake">https://github.com/HandBrake/HandBrake</a></td>
</tr>
<tr>
<td>Avidemux</td>
<td>Avidemux 是一款视频编辑器,支持许多基本的编辑功能,如修建、编码、添加滤镜等</td>
<td>Linux、macOS、Windows</td>
<td><a href="http://avidemux.sourceforge.net/">http://avidemux.sourceforge.net/</a></td>
</tr>
<tr>
<td>Shotcut</td>
<td>Shotcut 是一个跨平台的视频编辑器,支持多种基本编辑功能,并提供了丰富的视频滤镜</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://www.shotcut.org/">https://www.shotcut.org/</a></td>
</tr>
<tr>
<td>Lightworks</td>
<td>Lightworks 是一款视频编辑软件,支持多种高级编辑功能,如多个视频轨道、音频同步、字幕、剪辑等</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://www.lwks.com/">https://www.lwks.com/</a></td>
</tr>
<tr>
<td>Kino</td>
<td>Kino 是一款开源的视频编辑器,支持视频的剪辑、滤镜、导出等</td>
<td>Linux</td>
<td><a href="http://www.kinodv.org/">http://www.kinodv.org/</a></td>
</tr>
<tr>
<td>Cinelerra GG</td>
<td>Cinelerra GG 是截至目前正在活跃开发的 Cinelerra 的一个独特分支,具有更多先进的编辑功能</td>
<td>Linux</td>
<td><a href="https://cinelerra-gg.org/">https://cinelerra-gg.org/</a></td>
</tr>
<tr>
<td>Flowblade</td>
<td>Flowblade 是一个跨平台的视频编辑器,具有自动编辑、视频剪辑、渐变调色、音轨图、文本动画等功能</td>
<td>Linux、macOS</td>
<td><a href="https://github.com/jliljebl/flowblade">https://github.com/jliljebl/flowblade</a></td>
</tr>
<tr>
<td>Olive</td>
<td>Olive 是一款跨平台的视频编辑器,支持多个视频、音频和图像轨道,具有类似 Adobe Premiere 和 Final Cut Pro 等视频编辑器的界面</td>
<td>Linux、macOS、Windows</td>
<td><a href="https://www.olivevideoeditor.org/">https://www.olivevideoeditor.org/</a></td>
</tr>
</tbody>
</table>
<h2>5.其他常用库</h2>
<table>
<thead>
<tr>
<th>库名称</th>
<th>描述</th>
<th>作用平台</th>
<th>项目地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>ARToolKit</td>
<td>一个用于创建增强现实体验的开源跟踪库</td>
<td>多平台</td>
<td><a href="https://github.com/artoolkit/ARToolKit5/">https://github.com/artoolkit/ARToolKit5/</a></td>
</tr>
<tr>
<td>Kurento</td>
<td>可以集成WebRTC和媒体服务器的平台</td>
<td>Web</td>
<td><a href="https://www.kurento.org/">https://www.kurento.org/</a></td>
</tr>
<tr>
<td>Webrtc</td>
<td>实时通信的开源项目,包括音频、视频和数据通信</td>
<td>Web</td>
<td><a href="https://webrtc.org/">https://webrtc.org/</a></td>
</tr>
<tr>
<td>VLC</td>
<td>一个免费的开源跨平台媒体播放器和框架,可播放大多数多媒体文件</td>
<td>多平台</td>
<td><a href="https://www.videolan.org/vlc/index.html">https://www.videolan.org/vlc/index.html</a></td>
</tr>
<tr>
<td>ExoPlayer</td>
<td>一个可扩展的Android媒体播放器,包括支持DASH和HLS的内置组件</td>
<td>Android</td>
<td><a href="https://github.com/google/ExoPlayer">https://github.com/google/ExoPlayer</a></td>
</tr>
<tr>
<td>Vitamio</td>
<td>Android和iOS的流媒体解决方案</td>
<td>Android,iOS</td>
<td><a href="https://www.vitamio.org/en/">https://www.vitamio.org/en/</a></td>
</tr>
<tr>
<td>AVPlayer</td>
<td>一个iOS播放器框架,支持本地和网络音频和视频文件</td>
<td>iOS</td>
<td><a href="https://developer.apple.com/documentation/avfoundation/avplayer">https://developer.apple.com/documentation/avfoundation/avplayer</a></td>
</tr>
<tr>
<td>FFmpegKit</td>
<td>FFmpeg库的原生iOS和Android包装器</td>
<td>iOS,Android</td>
<td><a href="https://github.com/tanersener/ffmpeg-kit">https://github.com/tanersener/ffmpeg-kit</a></td>
</tr>
<tr>
<td>libVLC</td>
<td>适用于Android、iOS、tvOS和macOS的VLC音视频框架</td>
<td>Android,iOS,tvOS,macOS</td>
<td><a href="https://code.videolan.org/videolan/libvlc-framework">https://code.videolan.org/videolan/libvlc-framework</a></td>
</tr>
<tr>
<td>AVKit</td>
<td>一个macOS框架,提供音频和视频播放和处理功能</td>
<td>macOS</td>
<td><a href="https://developer.apple.com/documentation/avkit">https://developer.apple.com/documentation/avkit</a></td>
</tr>
<tr>
<td>Unity Video Player</td>
<td>一种用于在游戏中播放视频的Unity组件</td>
<td>Unity</td>
<td><a href="https://docs.unity3d.com/Manual/class-VideoPlayer.html">https://docs.unity3d.com/Manual/class-VideoPlayer.html</a></td>
</tr>
<tr>
<td>Three.js</td>
<td>一个基于WebGL的跨平台JavaScript库,可用于创建和显示3D计算机图形</td>
<td>Web</td>
<td><a href="https://threejs.org/">https://threejs.org/</a></td>
</tr>
<tr>
<td>A-Frame</td>
<td>一个用于构建虚拟现实和增强现实的Web框架</td>
<td>Web</td>
<td><a href="https://aframe.io/">https://aframe.io/</a></td>
</tr>
<tr>
<td>WebVR</td>
<td>一种可用于任何Web浏览器的虚拟现实解决方案</td>
<td>Web</td>
<td><a href="https://webvr.info/">https://webvr.info/</a></td>
</tr>
<tr>
<td>Web Audio API</td>
<td>JavaScript API,用于处理和操纵音频</td>
<td>Web</td>
<td><a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API">https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API</a></td>
</tr>
<tr>
<td>Tone.js</td>
<td>用于Web音乐软件的框架</td>
<td>Web</td>
<td><a href="https://tonejs.github.io/">https://tonejs.github.io/</a></td>
</tr>
<tr>
<td>Pygame</td>
<td>用于开发2D游戏的Python库</td>
<td>Python</td>
<td><a href="https://www.pygame.org/news">https://www.pygame.org/news</a></td>
</tr>
<tr>
<td>OpenAL</td>
<td>多平台上的跨API的3D音频库</td>
<td>多平台</td>
<td><a href="https://www.openal.org/">https://www.openal.org/</a></td>
</tr>
<tr>
<td>SDL_mixer</td>
<td>用于游戏和其他多媒体应用程序的音频库</td>
<td>多平台</td>
<td><a href="https://www.libsdl.org/projects/SDL_mixer/">https://www.libsdl.org/projects/SDL_mixer/</a></td>
</tr>
<tr>
<td>Houdini</td>
<td>针对3D艺术家和游戏开发人员的3D建模、动画和视觉效果软件</td>
<td>多平台</td>
<td><a href="https://www.sidefx.com/">https://www.sidefx.com/</a></td>
</tr>
<tr>
<td>Natron</td>
<td>免费的、开源的视频合成软件</td>
<td>多平台</td>
<td><a href="https://natrongithub.github.io/">https://natrongithub.github.io/</a></td>
</tr>
<tr>
<td>OBS Studio</td>
<td>免费、开源、跨平台的流媒体和录制软件</td>
<td>多平台</td>
<td><a href="https://obsproject.com/">https://obsproject.com/</a></td>
</tr>
<tr>
<td>GIMP</td>
<td>免费的开源图像编辑器</td>
<td>多平台</td>
<td><a href="https://www.gimp.org/">https://www.gimp.org/</a></td>
</tr>
<tr>
<td>Inkscape</td>
<td>一个用于创建和编辑矢量图形的开源软件</td>
<td>多平台</td>
<td><a href="https://inkscape.org/">https://inkscape.org/</a></td>
</tr>
<tr>
<td>MediaInfo</td>
<td>一个开源的多媒体信息解析器,用于获取媒体文件的各种信息</td>
<td>多平台</td>
<td><a href="https://mediaarea.net/en/MediaInfo">https://mediaarea.net/en/MediaInfo</a></td>
</tr>
<tr>
<td>libde265</td>
<td>一种异步HEVC解码器库</td>
<td>多平台</td>
<td><a href="https://github.com/strukturag/libde265">https://github.com/strukturag/libde265</a></td>
</tr>
<tr>
<td>libvpx</td>
<td>适用于WebRTC、VP8和VP9的开源视频编解码器</td>
<td>多平台</td>
<td><a href="https://github.com/webmproject/libvpx">https://github.com/webmproject/libvpx</a></td>
</tr>
<tr>
<td>x264</td>
<td>一种高质量的H.264 / AVC编码器</td>
<td>多平台</td>
<td><a href="https://www.videolan.org/developers/x264.html">https://www.videolan.org/developers/x264.html</a></td>
</tr>
<tr>
<td>x265</td>
<td>一种用于UHD编码的开源HEVC编码器</td>
<td>多平台</td>
<td><a href="https://bitbucket.org/multicoreware/x265_git">https://bitbucket.org/multicoreware/x265_git</a></td>
</tr>
<tr>
<td>Theora</td>
<td>一种开源视频编解码器</td>
<td>Web</td>
<td><a href="https://www.theora.org/">https://www.theora.org/</a></td>
</tr>
<tr>
<td>Ogg</td>
<td>一种开源多媒体容器格式,通常与Theora和Vorbis一起使用</td>
<td>Web</td>
<td><a href="https://www.xiph.org/ogg/">https://www.xiph.org/ogg/</a></td>
</tr>
<tr>
<td>Vorbis</td>
<td>一种开源音频编解码器</td>
<td>Web</td>
<td><a href="https://xiph.org/vorbis/">https://xiph.org/vorbis/</a></td>
</tr>
<tr>
<td>WebVTT</td>
<td>一种用于视频文本替代品的Web文本轨道</td>
<td>Web</td>
<td><a href="https://w3c.github.io/webvtt/">https://w3c.github.io/webvtt/</a></td>
</tr>
<tr>
<td>PyAV</td>
<td>基于FFmpeg的Python封装,可用于解码、编码和处理音频和视频</td>
<td>Python</td>
<td><a href="https://pyav.org/">https://pyav.org/</a></td>
</tr>
<tr>
<td>FFpyplayer</td>
<td>Python+FFmpeg解决方案,在Python中播放音频和视频</td>
<td>Python</td>
<td><a href="https://ffpyplayer.readthedocs.io/en/latest/">https://ffpyplayer.readthedocs.io/en/latest/</a></td>
</tr>
<tr>
<td>SoundManager2</td>
<td>一个轻型、大众化的JavaScript音频播放器库</td>
<td>Web</td>
<td><a href="https://github.com/scottschiller/SoundManager2">https://github.com/scottschiller/SoundManager2</a></td>
</tr>
<tr>
<td>wave.js</td>
<td>用于简化Web音频的JavaScript库</td>
<td>Web</td>
<td><a href="https://github.com/jaz303/waveform-data">https://github.com/jaz303/waveform-data</a></td>
</tr>
<tr>
<td>Howler.js</td>
<td>用于现代Web音频的JavaScript音频库</td>
<td>Web</td>
<td><a href="https://github.com/goldfire/howler.js">https://github.com/goldfire/howler.js</a></td>
</tr>
<tr>
<td>Web Audio DAW</td>
<td>用于在浏览器中创建数字音频工作站(DAW)的Web Audio Editor</td>
<td>Web</td>
<td><a href="https://beryju.org/web">https://beryju.org/web</a></td>
</tr>
</tbody>
</table>
<h1>六、实践项目</h1>
<ul>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/AFPlayer/README.md">AFPlayer项目</a> Android实现FFmpeg、OpenSL ES、OpenGL SE、MediaCodec等,实现简单的播放器,主要体现出相关知识点的使用。</li>
<li><a href="https://github.com/xhunmon/OpenGLES">OpenGLES基本使用</a> :点、线、三角形、四边形、矩阵、纹理(贴纸)、摄像头显示、FBO、EGL、滤镜叠加、视频流编码输出。</li>
<li>直接阅读上方优秀开源库效果更佳...</li>
</ul>
<h1>七、最后</h1>
<ul>
<li><a href="https://raw.githubusercontent.com/xhunmon/VABlog/main/MustRead/03_fst.md">面试题整理:祝君拿到满意的offer!</a></li>
</ul>
<h1><a href="https://pan.baidu.com/s/1Y5PFgbVu3W0ELBgQnrHNYA">音视频学习资料</a></h1>
<p><strong>创作皆不易,有条件的朋友请支持原版,谢谢!</strong> 密码:lqi9</p>
<pre><code class="language-text"> 网易视频
价值几千块的音视频视频
动脑视频
C++侯捷视频
音视频开发进阶指南:基于Android与iOS平台的实践.pdf
音视频05-H265码流分析.pdf
音视频04-H265之CU TU PU划分.pdf
音视频03-H265深度解析.pdf
音视频02-H265编码与H264区别.pdf
音视频01-H265编码.pdf
新一代视频压缩编码标准-H.264_AVC(第二版).pdf
数字信号处理教程(第四版).pdf
视频技术手册(第5版).pdf
《FFmpeg从入门到精通》.pdf
《FFmpeg_Basics(260页)》.pdf
webrtc介绍.pdf
WebGL编程指南.zip
video_file_format_spec_v10_1.pdf
STL源码剖析简体中文完整版(清晰扫描带目录).pdf
SDL2-API手册.doc
rtmp规范翻译1.0.docx
rtmp_specification_1.0.pdf
rtmp.part3.Commands-Messages.pdf
rtmp.part2.Message-Formats.pdf
rtmp.part1.Chunk-Stream.pdf
jni基础介绍.pdf
OpenGL ES 2.0 编程指南 中文版.pdf
OpenGL+着色语言第三版.pdf
OpenGL.ES.2.0.Programming.Guide.pdf
OpenGL着色语言.pdf
ISO_IEC_14496-14_2003-11-15.pdf
ISO_IEC-14496-3-2009.pdf
hls-mpeg-ts-VB_WhitePaper_TransportStreamVSProgramStream_rd2.pdf
hls-mpeg-ts-iso13818-1.pdf
H.264官方中文版.pdf
H.264_MPEG-4-Part-10-White-Paper.pdf
H.264-AVC-ISO_IEC_14496-15.pdf
H.264-AVC-ISO_IEC_14496-10.pdf
ffmpeg命令大全.pdf
FFmpeg命令大全.docx
ffmpeg翻译文档.pdf
FFMPEG_FFPLAY源码剖析.7z
CMake中文手册.pdf
Cmake在Android studio Ndk使用.pdf
C++ Primer(第5版)中文版.pdf
C++ Primer Plus(第6版)中文版.azw3
C Primer中文版 第五版 .pdf
Android 音视频开发_何俊林.pdf
amf3_spec_121207.pdf
amf0_spec_121207.pdf
Advanced C and C++ Compiling.pdf
AAC解码算法原理详解.pdf
WebRTC权威指南(第三版中文版).pdf
音频编码(高泽华)上.pdf
视频技术手册.pdf
高级音频编解码器资料.pdf
《数字信号处理》视频:https://www.bilibili.com/video/BV13P411P7Pv
</code></pre>
<hr>
<p><strong>【重点声明】此系列仅用于学习,禁止用于非法攻击,非法传播。一切遵守《网络安全法》。且如有发现商用,必纠法律责任。如有侵权请联系我(邮箱:<a href="mailto:xhunmon@126.com">xhunmon@126.com</a>)进行删除。</strong></p>
+
+
\ No newline at end of file
diff --git a/csv/daily/index.xml b/csv/daily/index.xml
index 8c26b4320c1..f16724183dd 100644
--- a/csv/daily/index.xml
+++ b/csv/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CSV Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:56Z
+ 2023-12-24T01:30:57Z
Daily Trending of CSV in GitHub
\ No newline at end of file
diff --git a/csv/weekly/index.xml b/csv/weekly/index.xml
new file mode 100644
index 00000000000..9b84b0c8003
--- /dev/null
+++ b/csv/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CSV Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:48Z
+ Weekly Trending of CSV in GitHub
+
+
\ No newline at end of file
diff --git a/cuda/daily/index.xml b/cuda/daily/index.xml
index f6b3908479d..5d9c9604754 100644
--- a/cuda/daily/index.xml
+++ b/cuda/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Cuda Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:58Z
+ 2023-12-24T01:30:59Z
Daily Trending of Cuda in GitHub
-
- huggingface/candle-paged-attention
- 2023-12-23T01:26:58Z
- tag:github.com,2023-12-23:/huggingface/candle-paged-attention
-
- <p></p><hr>
-
\ No newline at end of file
diff --git a/cuda/weekly/index.xml b/cuda/weekly/index.xml
new file mode 100644
index 00000000000..087b95497ca
--- /dev/null
+++ b/cuda/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Cuda Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:53Z
+ Weekly Trending of Cuda in GitHub
+
+
+ artvandelay/Generate-Fractals-GPU
+ 2023-12-24T01:47:53Z
+ tag:github.com,2023-12-24:/artvandelay/Generate-Fractals-GPU
+
+ <p>GPU code to generate mandelbrot set</p><hr>
+
+
+ Dao-AILab/causal-conv1d
+ 2023-12-24T01:47:53Z
+ tag:github.com,2023-12-24:/Dao-AILab/causal-conv1d
+
+ <p>Causal depthwise conv1d in CUDA, with a PyTorch interface</p><hr>
+
+
\ No newline at end of file
diff --git a/cue/daily/index.xml b/cue/daily/index.xml
index b95391bb6a1..885a96ffbda 100644
--- a/cue/daily/index.xml
+++ b/cue/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CUE Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:26:55Z
+ 2023-12-24T01:31:00Z
Daily Trending of CUE in GitHub
\ No newline at end of file
diff --git a/cue/weekly/index.xml b/cue/weekly/index.xml
new file mode 100644
index 00000000000..caa41d0f81f
--- /dev/null
+++ b/cue/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CUE Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:47:49Z
+ Weekly Trending of CUE in GitHub
+
+
\ No newline at end of file
diff --git a/curl-config/daily/index.xml b/curl-config/daily/index.xml
index 8b3d2ec71b6..a8bdd161bbc 100644
--- a/curl-config/daily/index.xml
+++ b/curl-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub cURL Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:08Z
+ 2023-12-24T01:31:10Z
Daily Trending of cURL Config in GitHub
\ No newline at end of file
diff --git a/curl-config/weekly/index.xml b/curl-config/weekly/index.xml
new file mode 100644
index 00000000000..c816448dda4
--- /dev/null
+++ b/curl-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub cURL Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:01Z
+ Weekly Trending of cURL Config in GitHub
+
+
\ No newline at end of file
diff --git a/curry/daily/index.xml b/curry/daily/index.xml
index 61e6827df04..9a7bf7c9e12 100644
--- a/curry/daily/index.xml
+++ b/curry/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Curry Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:09Z
+ 2023-12-24T01:31:11Z
Daily Trending of Curry in GitHub
\ No newline at end of file
diff --git a/curry/weekly/index.xml b/curry/weekly/index.xml
new file mode 100644
index 00000000000..9bc9041b4da
--- /dev/null
+++ b/curry/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Curry Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:02Z
+ Weekly Trending of Curry in GitHub
+
+
\ No newline at end of file
diff --git a/cweb/daily/index.xml b/cweb/daily/index.xml
index d46d714b440..6828030dfcb 100644
--- a/cweb/daily/index.xml
+++ b/cweb/daily/index.xml
@@ -1,7 +1,7 @@
GitHub CWeb Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:10Z
+ 2023-12-24T01:31:11Z
Daily Trending of CWeb in GitHub
\ No newline at end of file
diff --git a/cweb/weekly/index.xml b/cweb/weekly/index.xml
new file mode 100644
index 00000000000..4eb4e7d2cdf
--- /dev/null
+++ b/cweb/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub CWeb Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:00Z
+ Weekly Trending of CWeb in GitHub
+
+
\ No newline at end of file
diff --git a/cycript/daily/index.xml b/cycript/daily/index.xml
index 6d1b73b7e1e..59d07c3fb03 100644
--- a/cycript/daily/index.xml
+++ b/cycript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cycript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:12Z
+ 2023-12-24T01:31:13Z
Daily Trending of Cycript in GitHub
\ No newline at end of file
diff --git a/cycript/weekly/index.xml b/cycript/weekly/index.xml
new file mode 100644
index 00000000000..b80f6c9acc9
--- /dev/null
+++ b/cycript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cycript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:03Z
+ Weekly Trending of Cycript in GitHub
+
+
\ No newline at end of file
diff --git a/cython/daily/index.xml b/cython/daily/index.xml
index 236adffda4d..2cd8af86b66 100644
--- a/cython/daily/index.xml
+++ b/cython/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Cython Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:13Z
+ 2023-12-24T01:31:15Z
Daily Trending of Cython in GitHub
\ No newline at end of file
diff --git a/cython/weekly/index.xml b/cython/weekly/index.xml
new file mode 100644
index 00000000000..206d9e47dc5
--- /dev/null
+++ b/cython/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Cython Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:04Z
+ Weekly Trending of Cython in GitHub
+
+
\ No newline at end of file
diff --git a/d-objdump/daily/index.xml b/d-objdump/daily/index.xml
index c7211135228..d0e2ac7a314 100644
--- a/d-objdump/daily/index.xml
+++ b/d-objdump/daily/index.xml
@@ -1,7 +1,7 @@
GitHub D-ObjDump Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:16Z
+ 2023-12-24T01:31:19Z
Daily Trending of D-ObjDump in GitHub
\ No newline at end of file
diff --git a/d-objdump/weekly/index.xml b/d-objdump/weekly/index.xml
new file mode 100644
index 00000000000..e9a9b927488
--- /dev/null
+++ b/d-objdump/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub D-ObjDump Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:07Z
+ Weekly Trending of D-ObjDump in GitHub
+
+
\ No newline at end of file
diff --git a/d/daily/index.xml b/d/daily/index.xml
index 346fa490c96..0e54b1dcd8e 100644
--- a/d/daily/index.xml
+++ b/d/daily/index.xml
@@ -1,7 +1,7 @@
GitHub D Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:14Z
+ 2023-12-24T01:31:16Z
Daily Trending of D in GitHub
\ No newline at end of file
diff --git a/d/weekly/index.xml b/d/weekly/index.xml
new file mode 100644
index 00000000000..25f3d3d5d57
--- /dev/null
+++ b/d/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub D Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:06Z
+ Weekly Trending of D in GitHub
+
+
\ No newline at end of file
diff --git a/dafny/daily/index.xml b/dafny/daily/index.xml
index 519ac30b6f9..dd359dda580 100644
--- a/dafny/daily/index.xml
+++ b/dafny/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Dafny Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:16Z
+ 2023-12-24T01:31:18Z
Daily Trending of Dafny in GitHub
\ No newline at end of file
diff --git a/dafny/weekly/index.xml b/dafny/weekly/index.xml
new file mode 100644
index 00000000000..6a2e1a3d02c
--- /dev/null
+++ b/dafny/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Dafny Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:09Z
+ Weekly Trending of Dafny in GitHub
+
+
\ No newline at end of file
diff --git a/darcs-patch/daily/index.xml b/darcs-patch/daily/index.xml
index 1aa93dfb23b..f4e6fbed3c7 100644
--- a/darcs-patch/daily/index.xml
+++ b/darcs-patch/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Darcs Patch Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:18Z
+ 2023-12-24T01:31:18Z
Daily Trending of Darcs Patch in GitHub
\ No newline at end of file
diff --git a/darcs-patch/weekly/index.xml b/darcs-patch/weekly/index.xml
new file mode 100644
index 00000000000..7326999ad9c
--- /dev/null
+++ b/darcs-patch/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Darcs Patch Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:08Z
+ Weekly Trending of Darcs Patch in GitHub
+
+
\ No newline at end of file
diff --git a/dart/daily/index.xml b/dart/daily/index.xml
index fe32e8a71eb..8bb4b8d069a 100644
--- a/dart/daily/index.xml
+++ b/dart/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Dart Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:24Z
+ 2023-12-24T01:31:25Z
Daily Trending of Dart in GitHub
\ No newline at end of file
diff --git a/dart/weekly/index.xml b/dart/weekly/index.xml
new file mode 100644
index 00000000000..7c503ddbe49
--- /dev/null
+++ b/dart/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Dart Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:15Z
+ Weekly Trending of Dart in GitHub
+
+
+ IshuPrabhakar/Heyy-chat-app
+ 2023-12-24T01:48:15Z
+ tag:github.com,2023-12-24:/IshuPrabhakar/Heyy-chat-app
+
+ <p>A Realtime Chat Application using flutter, Asp.Net Core Web Api, SignalR , WebRTC etc.</p><hr><h1>Heyy</h1>
<p>Yet another chat application</p>
<h2>Real-Time Chat Application</h2>
<p>This Real Time Chat Application is built using the Flutter framework.</p>
<h2>Technologies used</h2>
<ul>
<li><a href="https://flutter.dev/development?gclsrc=ds&gclsrc=ds">Flutter</a> as fronted client.</li>
<li><a href="https://dotnet.microsoft.com/en-us/apps/aspnet/apis">Asp.Net</a> Core RESTful as backend server.</li>
<li><a href="https://dotnet.microsoft.com/en-us/apps/aspnet/signalr">Signalr</a> and <a href="https://webrtc.org/">WebRTC</a> for Realtime communication.</li>
<li><a href="https://www.microsoft.com/en-in/sql-server/sql-server-downloads">SQL Server</a> as backend database.</li>
<li><a href="https://objectbox.io/">ObjectBox</a> as client app database.</li>
</ul>
<h2>Features</h2>
<ul>
<li>Modern UI</li>
<li>Sign in/ Sign up using email/phone with verification.</li>
<li>One-to-one and One to many chat support.</li>
<li>Story support.</li>
<li>Realtime communication using SignalR and WebRTC.</li>
<li>FCM for push notification.</li>
<li>Support message reaction, reply, forward, delete etc.</li>
<li>Local Storage for all kinds of data including messages, users, settings etc.</li>
<li>Audio/Video call support.</li>
<li>Light and Dark theme support.</li>
<li>And much more like other chat Applications.</li>
</ul>
<h2>Demo</h2>
<p><img src="https://user-images.githubusercontent.com/72759521/234524878-7997372b-82d7-40fb-a95a-2578179941b7.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234524899-14376172-23f3-4396-a19a-03cf4759bce3.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234524908-fe3c09eb-3028-4308-8def-7855a7fdc494.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234524911-af376014-cdb1-45d5-bf60-0488de486119.jpg" width="200" height="422"><br> <img src="https://user-images.githubusercontent.com/72759521/234524916-8ee58fce-880b-428c-861f-ce5ce4b28d62.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234524920-a92e40c1-937d-49c4-90f4-dbb5a166f3ed.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234524949-76fd39c0-eb7c-4e62-a9ca-0aee4db469ac.jpg" width="200" height="422"></p>
<p><img src="https://user-images.githubusercontent.com/72759521/234524967-80ddeb94-8bed-48ec-a058-b396ae018f3b.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234524984-4b97431a-c747-4a4d-9829-f144c6e171b4.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525002-d5fa8b5e-6d5f-4b58-867d-815f95f669a0.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525039-daa0920d-8f71-48ec-a437-3bb8d763cd03.jpg" width="200" height="422"></p>
<p><img src="https://user-images.githubusercontent.com/72759521/234525065-1fb5f646-fb49-4b9f-8619-2ec367876de7.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525095-c1740be4-3da4-470f-a2d2-17eece02efb7.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525146-d08ace65-8da4-4105-b387-c939f1f4c57c.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525167-19506759-3f84-4969-946a-2aa2c9b08e6d.jpg" width="200" height="422"></p>
<p><img src="https://user-images.githubusercontent.com/72759521/234525187-98c1746b-c5c3-4b7e-a046-eb0a7046e800.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525216-8292120e-b895-4099-8656-0c39a35ca69d.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525243-39642978-aa9f-4e2e-9007-6d12ce70052b.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525264-4068f034-032a-40fd-9cd8-53daa6387ae2.jpg" width="200" height="422"></p>
<p><img src="https://user-images.githubusercontent.com/72759521/234525293-f059b0e5-d0b3-4660-ba88-d0de3aaeb08d.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525315-389be9e2-7088-4732-8444-3c66bfafd2e7.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525327-ba423fcb-b06c-4f59-a619-122227540da9.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525368-69fc4499-017f-4503-a9cc-6ca6291826ad.jpg" width="200" height="422"></p>
<p><img src="https://user-images.githubusercontent.com/72759521/234525393-420d2851-53d3-449c-bc05-6993d61bf4f9.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525414-dddc2949-a3c3-4475-a233-276479026688.jpg" width="200" height="422"> <img src="https://user-images.githubusercontent.com/72759521/234525419-69b3206b-6d7b-4927-8848-38f004921e07.jpg" width="200" height="422"></p>
<p>This is the actively maintained project.</p>
+
+
+ supabase/supabase-flutter
+ 2023-12-24T01:48:15Z
+ tag:github.com,2023-12-24:/supabase/supabase-flutter
+
+ <p>Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.</p><hr><h1><code>Supabase Flutter</code></h1>
<p>Monorepo containing all <a href="https://supabase.com/">Supabase</a> libraries for Flutter.</p>
<ul>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/postgrest">postgrest</a></li>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/gotrue">gotrue</a></li>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/realtime_client">realtime_client</a></li>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/storage_client">storage_client</a></li>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/functions_client">functions_client</a></li>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/supabase">supabase</a></li>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/supabase_flutter">supabase_flutter</a></li>
<li><a href="https://github.com/supabase/supabase-flutter/tree/main/packages/yet_another_json_isolate">yet_another_json_isolate</a></li>
</ul>
<p>Documentation: <a href="https://supabase.com/docs/reference/dart/introduction">https://supabase.com/docs/reference/dart/introduction</a></p>
<hr>
<h2>Platform Support</h2>
<p>Except Linux, all platforms are fully supported. Linux only doesn't support deeplinks, because of our dependency <a href="https://pub.dev/packages/app_links">app_links</a>. All other features are supported.</p>
<h2>Getting Started</h2>
<p>Import the package:</p>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
</code></pre>
<p>Initialize <code>Supabase</code> before using it:</p>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Supabase.initialize(
url: SUPABASE_URL,
anonKey: SUPABASE_ANON_KEY,
);
runApp(MyApp());
}
// It's handy to then extract the Supabase client in a variable for later uses
final supabase = Supabase.instance.client;
</code></pre>
<blockquote>
<p><code>debug</code> is optional. It's enabled by default if you're running the app in debug mode (<code>flutter run --debug</code>).</p>
</blockquote>
<h2>Usage example</h2>
<h3><a href="https://supabase.com/docs/guides/auth">Authentication</a></h3>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
final supabase = Supabase.instance.client;
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
late final StreamSubscription<AuthState> _authSubscription;
User? _user;
@override
void initState() {
_authSubscription = supabase.auth.onAuthStateChange.listen((data) {
final AuthChangeEvent event = data.event;
final Session? session = data.session;
setState(() {
_user = session?.user;
});
});
super.initState();
}
@override
void dispose() {
_authSubscription.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () {
supabase.auth.signInWithOtp(email: 'my_email@example.com');
},
child: const Text('Login'),
);
}
}
</code></pre>
<h4>Native Sign in with Apple example</h4>
<p>Before you run the code, you need to <a href="https://developer.apple.com/help/account/manage-identifiers/register-an-app-id/">register your app ID with Apple</a> with the <code>Sign In with Apple</code> capability selected, and add the bundle ID to your Supabase dashboard in <code>Authentication -> Providers -> Apple</code>.</p>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
final supabase = Supabase.instance.client;
return supabase.auth.signInWithApple();
</code></pre>
<p><code>signInWithApple()</code> is only supported on iOS and on macOS. Other platforms can use the <code>signInWithOAuth()</code> method to perform Apple login.</p>
<p>The <code>signInWithApple</code> method is currently experimental and is subject to change. Follow <a href="https://github.com/supabase/supabase-flutter/issues/399">this issue</a> for platform support progress.</p>
<h3><a href="https://supabase.com/docs/guides/database">Database</a></h3>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
final supabase = Supabase.instance.client;
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
// Persisting the future as local variable to prevent refetching upon rebuilds.
final Future<dynamic> _future = supabase
.from('countries')
.select()
.order('name', ascending: true);
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _future,
builder: (context, snapshot) {
// return your widget with the data from snapshot
},
);
}
}
</code></pre>
<h3><a href="https://supabase.com/docs/guides/realtime">Realtime</a></h3>
<h4>Realtime data as <code>Stream</code></h4>
<p>To receive realtime updates, you have to first enable Realtime on from your Supabase console. You can read more <a href="https://supabase.com/docs/guides/api#realtime-api">here</a> on how to enable it.</p>
<blockquote>
<p><strong>Warning</strong> When using <code>stream()</code> with a <code>StreamBuilder</code>, make sure to persist the stream value as a variable in a <code>StatefulWidget</code> instead of directly constructing the stream within your widget tree, which could cause rapid rebuilds that will lead to losing realtime connection.</p>
</blockquote>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
final supabase = Supabase.instance.client;
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
// Persisting the future as local variable to prevent refetching upon rebuilds.
final stream = supabase.from('countries').stream(primaryKey: ['id']);
@override
Widget build(BuildContext context) {
return StreamBuilder<List<Map<String, dynamic>>>(
stream: stream,
builder: (context, snapshot) {
// return your widget with the data from snapshot
},
);
}
}
</code></pre>
<h4><a href="https://supabase.com/docs/guides/realtime#postgres-changes">Postgres Changes</a></h4>
<p>You can get notified whenever there is a change in your Supabase tables.</p>
<pre><code class="language-dart">final myChannel = supabase.channel('my_channel');
myChannel.on(
RealtimeListenTypes.postgresChanges,
ChannelFilter(
event: '*',
schema: 'public',
table: 'countries',
), (payload, [ref]) {
// Do something fun or interesting when there is an change on the database
}).subscribe();
</code></pre>
<h4><a href="https://supabase.com/docs/guides/realtime#broadcast">Broadcast</a></h4>
<p>Broadcast lets you send and receive low latency messages between connected clients by bypassing the database.</p>
<pre><code class="language-dart">final myChannel = supabase.channel('my_channel');
// Subscribe to `cursor-pos` broadcast event
myChannel.on(
RealtimeListenTypes.broadcast,
ChannelFilter(event: 'cursor-pos'),
(payload, [ref]) {
// Do something fun or interesting when there is an change on the database
},
).subscribe();
// Send a broadcast message to other connected clients
await myChannel.send(
type: RealtimeListenTypes.broadcast,
event: 'cursor-pos',
payload: {'x': 30, 'y': 50},
);
</code></pre>
<h3><a href="https://supabase.com/docs/guides/realtime#presence">Presence</a></h3>
<p>Presence let's you easily create "I'm online" feature.</p>
<pre><code class="language-dart">final myChannel = supabase.channel('my_channel');
// Subscribe to presence events
myChannel.on(
RealtimeListenTypes.presence, ChannelFilter(event: 'sync'),
(payload, [ref]) {
final onlineUsers = myChannel.presenceState();
// handle sync event
}).on(RealtimeListenTypes.presence, ChannelFilter(event: 'join'),
(payload, [ref]) {
// New users have joined
}).on(RealtimeListenTypes.presence, ChannelFilter(event: 'leave'),
(payload, [ref]) {
// Users have left
}).subscribe((status, error) async {
if (status == RealtimeSubscribeStatus.subscribed) {
// Send the current user's state upon subscribing
final status = await myChannel
.track({'online_at': DateTime.now().toIso8601String()});
}
});
</code></pre>
<h3><a href="https://supabase.com/docs/guides/storage">Storage</a></h3>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
final supabase = Supabase.instance.client;
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () {
final file = File('example.txt');
file.writeAsStringSync('File content');
supabase.storage
.from('my_bucket')
.upload('my/path/to/files/example.txt', file);
},
child: const Text('Upload'),
);
}
}
</code></pre>
<h3><a href="https://supabase.com/docs/guides/functions">Edge Functions</a></h3>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
final supabase = Supabase.instance.client;
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
// Persisting the future as local variable to prevent refetching upon rebuilds.
final future = supabase.functions.invoke('get_countries');
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: future,
builder: (context, snapshot) {
// return your widget with the data from snapshot
},
);
}
}
</code></pre>
<h2>Authentication Deep Dive</h2>
<p>Using this package automatically persists the auth state on local storage. It also helps you handle authentication with deep link from 3rd party service like Google, Github, Twitter...</p>
<h3>Email authentication</h3>
<pre><code class="language-dart">import 'package:supabase_flutter/supabase_flutter.dart';
Future<void> signIn(String email, String password) async {
final response = await Supabase.instance.client.auth.signInWithPassword(email: email, password: password);
final Session? session = response.session;
final User? user = response.user;
}
</code></pre>
<h3>signInWithProvider</h3>
<p>This method will automatically launch the auth url and open a browser for user to sign in with 3rd party login.</p>
<pre><code class="language-dart">supabase.auth.signInWithOAuth(
Provider.google,
redirectTo: 'io.supabase.flutter://reset-callback/',
);
</code></pre>
<h3>Custom LocalStorage</h3>
<p>As default, <code>supabase_flutter</code> uses <a href="https://pub.dev/packages/shared_preferences"><code>Shared preferences</code></a> to persist the user session.</p>
<p>However, you can use any other methods by creating a <code>LocalStorage</code> implementation. For example, we can use <a href="https://pub.dev/packages/flutter_secure_storage"><code>flutter_secure_storage</code></a> plugin to store the user session in a secure storage.</p>
<pre><code class="language-dart">// Define the custom LocalStorage implementation
class MockLocalStorage extends LocalStorage {
final storage = FlutterSecureStorage();
@override
Future<void> initialize() async {}
@override
Future<String?> accessToken() async {
return storage.containsKey(key: supabasePersistSessionKey);
}
@override
Future<bool> hasAccessToken() async {
return storage.read(key: supabasePersistSessionKey);
}
@override
Future<void> persistSession(String persistSessionString) async {
return storage.write(key: supabasePersistSessionKey, value: persistSessionString);
}
@override
Future<void> removePersistedSession() async {
return storage.delete(key: supabasePersistSessionKey);
}
}
// use it when initializing
Supabase.initialize(
...
authOptions: FlutterAuthClientOptions(
localStorage: const EmptyLocalStorage(),
),
);
</code></pre>
<p>You can also use <code>EmptyLocalStorage</code> to disable session persistence:</p>
<pre><code class="language-dart">Supabase.initialize(
// ...
authOptions: FlutterAuthClientOptions(
localStorage: const EmptyLocalStorage(),
),
);
</code></pre>
<h2>Deep link config</h2>
<p>*Currently supabase_flutter supports deep links on Android, iOS, Web, MacOS and Windows.</p>
<h3>Supabase redirect URLs config</h3>
<ul>
<li>Go to your Supabase project Authentication Settings page.</li>
<li>You need to enter your app redirect callback on <code>Additional Redirect URLs</code> field.</li>
</ul>
<p>The redirect callback url should have this format <code>[YOUR_SCHEME]://[YOUR_AUTH_HOSTNAME]</code></p>
<p><img src="https://raw.githubusercontent.com/supabase/supabase-flutter/main/.github/images/deeplink-config.png" alt="authentication settings page"></p>
<h3>Supabase 3rd party logins config</h3>
<p>Follow the guide <a href="https://supabase.io/docs/guides/auth#third-party-logins">https://supabase.io/docs/guides/auth#third-party-logins</a></p>
<h4>For Android</h4>
<details>
<summary>How to setup</summary>
<p>Deep Links can have any custom scheme. The downside is that any app can claim a scheme, so make sure yours are as unique as possible, eg. <code>HST0000001://host.com</code>.</p>
<pre><code class="language-xml"><manifest ...>
<!-- ... other tags -->
<application ...>
<activity ...>
<!-- ... other tags -->
<!-- Deep Links -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with YOUR_SCHEME://YOUR_HOST -->
<data
android:scheme="[YOUR_SCHEME]"
android:host="[YOUR_HOST]" />
</intent-filter>
</activity>
</application>
</manifest>
</code></pre>
<p>The <code>android:host</code> attribute is optional for Deep Links.</p>
<p>For more info: <a href="https://developer.android.com/training/app-links/deep-linking">https://developer.android.com/training/app-links/deep-linking</a></p>
</details>
<h4>For iOS</h4>
<details>
<summary>How to setup</summary>
<p>Custom URL schemes can have... any custom scheme and there is no host specificity, nor entitlements or a hosted file. The downside is that any app can claim any scheme, so make sure yours is as unique as possible, eg. <code>hst0000001</code> or <code>myIncrediblyAwesomeScheme</code>.</p>
<p>For <strong>Custom URL schemes</strong> you need to declare the scheme in <code>ios/Runner/Info.plist</code> (or through Xcode's Target Info editor, under URL Types):</p>
<pre><code class="language-xml"><!-- ... other tags -->
<plist>
<dict>
<!-- ... other tags -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>[YOUR_SCHEME]</string>
</array>
</dict>
</array>
<!-- ... other tags -->
</dict>
</plist>
</code></pre>
<p>This allows for your app to be started from <code>YOUR_SCHEME://ANYTHING</code> links.</p>
<p>For more info: <a href="https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app">https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app</a></p>
</details>
<h4>For Windows</h4>
<details>
<summary>How to setup</summary>
<p>Setting up deep links in Windows has few more steps than other platforms. <a href="https://pub.dev/packages/app_links#windows">Learn more</a></p>
<p>Declare this method in <PROJECT_DIR>\windows\runner\win32_window.h</p>
<pre><code class="language-cpp"> // Dispatches link if any.
// This method enables our app to be with a single instance too.
// This is optional but mandatory if you want to catch further links in same app.
bool SendAppLinkToInstance(const std::wstring& title);
</code></pre>
<p>Add this inclusion at the top of <PROJECT_DIR>\windows\runner\win32_window.cpp</p>
<pre><code class="language-cpp">#include "app_links_windows/app_links_windows_plugin.h"
</code></pre>
<p>Add this method in <PROJECT_DIR>\windows\runner\win32_window.cpp</p>
<pre><code class="language-cpp">bool Win32Window::SendAppLinkToInstance(const std::wstring& title) {
// Find our exact window
HWND hwnd = ::FindWindow(kWindowClassName, title.c_str());
if (hwnd) {
// Dispatch new link to current window
SendAppLink(hwnd);
// (Optional) Restore our window to front in same state
WINDOWPLACEMENT place = { sizeof(WINDOWPLACEMENT) };
GetWindowPlacement(hwnd, &place);
switch(place.showCmd) {
case SW_SHOWMAXIMIZED:
ShowWindow(hwnd, SW_SHOWMAXIMIZED);
break;
case SW_SHOWMINIMIZED:
ShowWindow(hwnd, SW_RESTORE);
break;
default:
ShowWindow(hwnd, SW_NORMAL);
break;
}
SetWindowPos(0, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
SetForegroundWindow(hwnd);
// END Restore
// Window has been found, don't create another one.
return true;
}
return false;
}
</code></pre>
<p>Add the call to the previous method in <code>CreateAndShow</code></p>
<pre><code class="language-cpp">bool Win32Window::CreateAndShow(const std::wstring& title,
const Point& origin,
const Size& size) {
if (SendAppLinkToInstance(title)) {
return false;
}
...
</code></pre>
<p>At this point, you can register your own scheme.<br> On Windows, URL protocols are setup in the Windows registry.</p>
<p>This package won't do it for you.</p>
<p>You can achieve it with <a href="https://pub.dev/packages/url_protocol">url_protocol</a> inside you app.</p>
<p>The most relevant solution is to include those registry modifications into your installer to allow for deregistration.</p>
</details>
<h4>For Mac OS</h4>
<details>
<summary>How to setup</summary>
<p>Add this XML chapter in your macos/Runner/Info.plist inside
<plist version="1.0">
<dict>
chapter:
</dict>
</plist></p>
<pre><code class="language-xml"><!-- ... other tags -->
<plist version="1.0">
<dict>
<!-- ... other tags -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<!-- abstract name for this URL type (you can leave it blank) -->
<string>sample_name</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- your schemes -->
<string>sample</string>
</array>
</dict>
</array>
<!-- ... other tags -->
</dict>
</plist>
</code></pre>
</details>
<hr>
<h2>Contributing</h2>
<ul>
<li>Fork the repo on <a href="https://github.com/supabase/supabase-flutter">GitHub</a></li>
<li>Clone the project to your own machine</li>
<li>Commit changes to your own branch</li>
<li>Push your work back up to your fork</li>
<li>Submit a Pull request so that we can review your changes and merge</li>
</ul>
<h2>License</h2>
<p>This repo is licenced under MIT.</p>
<h2>Resources</h2>
<ul>
<li><a href="https://supabase.com/docs/guides/with-flutter">Quickstart: Flutter</a></li>
<li><a href="https://supabase.com/blog/flutter-tutorial-building-a-chat-app">Flutter Tutorial: building a Flutter chat app</a></li>
<li><a href="https://supabase.com/blog/flutter-authentication-and-authorization-with-rls">Flutter Tutorial - Part 2: Authentication and Authorization with RLS</a></li>
</ul>
+
+
+ foss42/apidash
+ 2023-12-24T01:48:15Z
+ tag:github.com,2023-12-24:/foss42/apidash
+
+ <p>API Dash is a beautiful open-source cross-platform API Client built using Flutter which can help you easily create & customize your API requests, visually inspect responses and generate API integration code. A lightweight alternative to postman/insomnia.</p><hr><h1>API Dash ⚡️</h1>
<p><a href="https://bit.ly/heyfoss"><img src="https://img.shields.io/badge/DISCORD-JOIN%20SERVER-5663F7?style=for-the-badge&logo=discord&logoColor=white" alt="Discord Server Invite"></a></p>
<h3>Please support this initiative by giving this project a Star ⭐️</h3>
<p>API Dash is a beautiful open-source cross-platform API Client that can help you easily create & customize your API requests, visually inspect responses and generate Dart code on the go.</p>
<p><img src="https://github.com/foss42/apidash/assets/615622/984b3c95-a6a1-48a5-a6ba-5a1e95802b5d" alt="Image"></p>
<h2>Download</h2>
<p>API Dash can be downloaded from the links below:</p>
<table>
<thead>
<tr>
<th>OS</th>
<th>Distribution</th>
<th>Installation Guide</th>
<th>CPU/Architecture</th>
<th>Download Link</th>
</tr>
</thead>
<tbody>
<tr>
<td>macOS</td>
<td><code>.dmg</code></td>
<td><a href="https://github.com/foss42/apidash/raw/main/INSTALLATION.md#macos">Link</a></td>
<td>Apple Silicon & Intel</td>
<td><a href="https://github.com/foss42/apidash/releases/latest/download/apidash-macos.dmg">Link</a></td>
</tr>
<tr>
<td>Windows</td>
<td><code>.exe</code></td>
<td><a href="https://github.com/foss42/apidash/raw/main/INSTALLATION.md#windows">Link</a></td>
<td>64-bit</td>
<td><a href="https://github.com/foss42/apidash/releases/latest/download/apidash-windows-x86_64.exe">Link</a></td>
</tr>
<tr>
<td rowspan="5">Linux</td>
<td rowspan="2"><code>.deb</code></td>
<td rowspan="2"><a href="https://github.com/foss42/apidash/raw/main/INSTALLATION.md#debian-based-linux-distributions-debian-ubuntu-linux-mint-etc">Link</a></td>
<td>amd64</td>
<td><a href="https://github.com/foss42/apidash/releases/latest/download/apidash-linux-amd64.deb">Link</a></td>
</tr>
<tr>
<td>arm64</td>
<td><a href="https://github.com/foss42/apidash/releases/latest/download/apidash-linux-arm64.deb">Link</a></td>
</tr>
<tr>
<td rowspan="2"><code>.rpm</code></td>
<td rowspan="2"><a href="https://github.com/foss42/apidash/raw/main/INSTALLATION.md#red-hat-based-linux-distributions-fedora-rocky-almalinux-centos-rhel-etc">Link</a></td>
<td>x86_64</td>
<td><a href="https://github.com/foss42/apidash/releases/latest/download/apidash-linux-x86_64.rpm">Link</a></td>
</tr>
<tr>
<td>aarch64</td>
<td><a href="https://github.com/foss42/apidash/releases/latest/download/apidash-linux-aarch64.rpm">Link</a></td>
</tr>
<tr>
<td><code>PKGBUILD</code> (Arch Linux)</td>
<td><a href="https://aur.archlinux.org/packages/apidash-bin">Link</a></td>
<td>x86_64</td>
<td><a href="https://aur.archlinux.org/packages/apidash-bin">Link</a></td>
</tr>
</tbody>
</table>
<h2>List of Features</h2>
<p><strong>↗️ Create & Customize API Requests</strong></p>
<ul>
<li>Create different types of HTTP requests (<code>GET</code>, <code>HEAD</code>, <code>POST</code>, <code>PATCH</code>, <code>PUT</code> and <code>DELETE</code>).</li>
<li>Easily manipulate and play around with request inputs like <code>headers</code>, <code>query parameters</code> and <code>body</code>.</li>
<li>Full support to send text content with 🥳 Unicode/Emoji and preview any API response containing Unicode/Emoji.</li>
</ul>
<p><strong>💼 Organize Requests in Collections & Folders</strong></p>
<ul>
<li>Create collections and folders to organize your requests.</li>
<li>Press and Drag to Re-arrange requests.</li>
<li>Click and open popup menu to rename, duplicate and delete a request.</li>
</ul>
<p><strong>🔎 Visually Preview and Download Data & Multimedia API Responses</strong></p>
<ul>
<li>Inspect the API Response (HTTP status code, error message, headers, body, time taken).</li>
<li>View formatted code previews for responses of various content types like <code>JSON</code>, <code>XML</code>, <code>YAML</code>, <code>HTML</code>, <code>SQL</code>, etc.</li>
<li>API Dash helps explore, test & preview Multimedia API responses which is <strong>not supported by any other API client</strong>. You can directly test APIs that return images, PDF, audio & more. Check out the <a href="https://github.com/foss42/apidash#mime-types-supported-by-api-dash-response-previewer">full list of supported mimetypes/formats here</a>.</li>
<li>Save 💾 response body of any mimetype (<code>image</code>, <code>text</code>, etc.) directly in the <code>Downloads</code> folder of your system by clicking on the <code>Download</code> button.</li>
</ul>
<p><strong>👩🏻💻 Code Generation</strong></p>
<ul>
<li>We started out as the <strong>only</strong> open source API client that supports advanced Dart code generation so that you can easily integrate APIs in your Dart/Flutter project or directly run it on DartPad. But, now API Dash supports generation of well-tested integration codes for <strong>JavaScript</strong>, <strong>Python</strong>, <strong>Kotlin</strong> & various other languages. You can check out the <a href="https://github.com/foss42/apidash#code-generators">full list of supported languages/libraries</a>.</li>
</ul>
<p><strong>🌙 Full Dark Mode Support</strong></p>
<ul>
<li>Easily switch between light mode and dark mode.</li>
</ul>
<p><strong>💾 Data</strong></p>
<ul>
<li>Data is persisted locally on the disk. To save the current snapshot, just press the <strong>Save</strong> button in the collection pane.</li>
<li>Click and open the collection/folder popup menu to export it as HAR. This can be version controlled & can be directly imported in other API Clients like Postman, Paw, etc.</li>
<li>Export your entire data into a HAR (HTTP Archive) file. To access this option goto <code>Settings > Export Data</code>.</li>
</ul>
<p><strong>⚙️ Settings & Other Options</strong></p>
<ul>
<li>Customize various options using a dedicated Settings screen.</li>
<li>Window Configuration (Size & Position) is persisted and restored on app start. (Only macOS & Windows)</li>
</ul>
<h2>Code Generators</h2>
<p>API Dash currently supports API integration code generation for the following languages/libraries.</p>
<table>
<thead>
<tr>
<th>Language</th>
<th>Library</th>
</tr>
</thead>
<tbody>
<tr>
<td>cURL</td>
<td></td>
</tr>
<tr>
<td>HAR</td>
<td></td>
</tr>
<tr>
<td>Dart</td>
<td><code>http</code></td>
</tr>
<tr>
<td>JavaScript</td>
<td><code>axios</code></td>
</tr>
<tr>
<td>JavaScript</td>
<td><code>fetch</code></td>
</tr>
<tr>
<td>JavaScript (<code>node.js</code>)</td>
<td><code>axios</code></td>
</tr>
<tr>
<td>JavaScript (<code>node.js</code>)</td>
<td><code>fetch</code></td>
</tr>
<tr>
<td>Python</td>
<td><code>http.client</code></td>
</tr>
<tr>
<td>Python</td>
<td><code>requests</code></td>
</tr>
<tr>
<td>Kotlin</td>
<td><code>okhttp3</code></td>
</tr>
</tbody>
</table>
<p>We welcome contributions to support other programming languages/libraries/frameworks. Please check out more details <a href="https://github.com/foss42/apidash/discussions/80">here</a>.</p>
<h2>MIME Types supported by API Dash Response Previewer</h2>
<p>API Dash is a next-gen API client that supports exploring, testing & previewing various data & multimedia API responses which is limited/not supported by other API clients. You can directly test APIs that return images, PDF, audio & more.</p>
<p>Here is the complete list of mimetypes that can be directly previewed in API Dash:</p>
<table>
<thead>
<tr>
<th>File Type</th>
<th>Mimetype</th>
<th>Extension</th>
<th>Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td>PDF</td>
<td><code>application/pdf</code></td>
<td><code>.pdf</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/apng</code></td>
<td><code>.apng</code></td>
<td>Animated</td>
</tr>
<tr>
<td>Image</td>
<td><code>image/avif</code></td>
<td><code>.avif</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/bmp</code></td>
<td><code>.bmp</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/gif</code></td>
<td><code>.gif</code></td>
<td>Animated</td>
</tr>
<tr>
<td>Image</td>
<td><code>image/jpeg</code></td>
<td><code>.jpeg</code> or <code>.jpg</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/jp2</code></td>
<td><code>.jp2</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/jpx</code></td>
<td><code>.jpf</code> or <code>.jpx</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/pict</code></td>
<td><code>.pct</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/portable-anymap</code></td>
<td><code>.pnm</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/png</code></td>
<td><code>.png</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/sgi</code></td>
<td><code>.sgi</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/svg+xml</code></td>
<td><code>.svg</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/tiff</code></td>
<td><code>.tiff</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/targa</code></td>
<td><code>.tga</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/vnd.wap.wbmp</code></td>
<td><code>.wbmp</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/webp</code></td>
<td><code>.webp</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/xwindowdump</code></td>
<td><code>.xwd</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/x-icon</code></td>
<td><code>.ico</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/x-portable-anymap</code></td>
<td><code>.pnm</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/x-portable-bitmap</code></td>
<td><code>.pbm</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/x-portable-graymap</code></td>
<td><code>.pgm</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/x-portable-pixmap</code></td>
<td><code>.ppm</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/x-tga</code></td>
<td><code>.tga</code></td>
<td></td>
</tr>
<tr>
<td>Image</td>
<td><code>image/x-xwindowdump</code></td>
<td><code>.xwd</code></td>
<td></td>
</tr>
<tr>
<td>Audio</td>
<td><code>audio/flac</code></td>
<td><code>.flac</code></td>
<td></td>
</tr>
<tr>
<td>Audio</td>
<td><code>audio/mpeg</code></td>
<td><code>.mp3</code></td>
<td></td>
</tr>
<tr>
<td>Audio</td>
<td><code>audio/mp4</code></td>
<td><code>.m4a</code> or <code>.mp4a</code></td>
<td></td>
</tr>
<tr>
<td>Audio</td>
<td><code>audio/x-m4a</code></td>
<td><code>.m4a</code></td>
<td></td>
</tr>
<tr>
<td>Audio</td>
<td><code>audio/wav</code></td>
<td><code>.wav</code></td>
<td></td>
</tr>
<tr>
<td>Audio</td>
<td><code>audio/wave</code></td>
<td><code>.wav</code></td>
<td></td>
</tr>
</tbody>
</table>
<p>We welcome PRs to add support for previewing other multimedia mimetypes. Please go ahead and raise an issue so that we can discuss the approach. We are adding support for other mimetypes with each release. But, if you are looking for any particular mimetype support, please go ahead and open an issue. We will prioritize it's addition.</p>
<p>Here is the complete list of mimetypes that are syntax highlighted in API Dash:</p>
<table>
<thead>
<tr>
<th>Mimetype</th>
<th>Extension</th>
<th>Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>application/json</code></td>
<td><code>.json</code></td>
<td>Other mimetypes like <code>application/geo+json</code>, <code>application/vcard+json</code> that are based on <code>json</code> are also supported.</td>
</tr>
<tr>
<td><code>application/xml</code></td>
<td><code>.xml</code></td>
<td>Other mimetypes like <code>application/xhtml+xml</code>, <code>application/vcard+xml</code> that are based on <code>xml</code> are also supported.</td>
</tr>
<tr>
<td><code>text/xml</code></td>
<td><code>.xml</code></td>
<td></td>
</tr>
<tr>
<td><code>application/yaml</code></td>
<td><code>.yaml</code></td>
<td>Others - <code>application/x-yaml</code> or <code>application/x-yml</code></td>
</tr>
<tr>
<td><code>text/yaml</code></td>
<td><code>.yaml</code></td>
<td>Others - <code>text/yml</code></td>
</tr>
<tr>
<td><code>application/sql</code></td>
<td><code>.sql</code></td>
<td></td>
</tr>
<tr>
<td><code>text/css</code></td>
<td><code>.css</code></td>
<td></td>
</tr>
<tr>
<td><code>text/html</code></td>
<td><code>.html</code></td>
<td>Only syntax highlighting, no web preview.</td>
</tr>
<tr>
<td><code>text/javascript</code></td>
<td><code>.js</code></td>
<td></td>
</tr>
<tr>
<td><code>text/markdown</code></td>
<td><code>.md</code></td>
<td></td>
</tr>
</tbody>
</table>
<h2>What's new in v0.3.0?</h2>
<p>Visit <a href="https://raw.githubusercontent.com/foss42/apidash/main/CHANGELOG.md">CHANGELOG.md</a></p>
<h2>Provide Feedback, Report Bugs & Request New Features</h2>
<p>Just click on the <a href="https://github.com/foss42/apidash/issues">Issue tab</a> to raise a new issue in this repo.</p>
<h2>Contribute to API Dash</h2>
<p>You can contribute to API Dash in any or all of the following ways:</p>
<ul>
<li><a href="https://github.com/foss42/apidash/discussions">Ask a question</a></li>
<li><a href="https://github.com/foss42/apidash/issues/new/choose">Submit a bug report</a></li>
<li><a href="https://github.com/foss42/apidash/issues/new/choose">Request a new feature</a></li>
<li><a href="https://github.com/foss42/apidash/issues/new/choose">Suggest ways to improve the developer experience of an existing feature</a></li>
<li>Add documentation</li>
<li>To add a new feature, resolve an existing issue or add a new test to the project, check out our <a href="https://raw.githubusercontent.com/foss42/apidash/main/CONTRIBUTING.md">Contribution Guidelines</a>.</li>
</ul>
<h2>Need Any Help?</h2>
<p>In case you need any help with API Dash or are encountering any issue while running the tool, please feel free to drop by our <a href="https://bit.ly/heyfoss">Discord server</a> and we can have a chat in the <strong>#foss</strong> channel.</p>
+
+
\ No newline at end of file
diff --git a/dataweave/daily/index.xml b/dataweave/daily/index.xml
index 7e7694e70c7..4f00663b7f6 100644
--- a/dataweave/daily/index.xml
+++ b/dataweave/daily/index.xml
@@ -1,7 +1,7 @@
GitHub DataWeave Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:20Z
+ 2023-12-24T01:31:22Z
Daily Trending of DataWeave in GitHub
\ No newline at end of file
diff --git a/dataweave/weekly/index.xml b/dataweave/weekly/index.xml
new file mode 100644
index 00000000000..d9d267d50be
--- /dev/null
+++ b/dataweave/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub DataWeave Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:12Z
+ Weekly Trending of DataWeave in GitHub
+
+
\ No newline at end of file
diff --git a/debian-package-control-file/daily/index.xml b/debian-package-control-file/daily/index.xml
index 47ff475f1ca..f249d7d792c 100644
--- a/debian-package-control-file/daily/index.xml
+++ b/debian-package-control-file/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Debian Package Control File Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:19Z
+ 2023-12-24T01:31:23Z
Daily Trending of Debian Package Control File in GitHub
\ No newline at end of file
diff --git a/debian-package-control-file/weekly/index.xml b/debian-package-control-file/weekly/index.xml
new file mode 100644
index 00000000000..274a56ad34a
--- /dev/null
+++ b/debian-package-control-file/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Debian Package Control File Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:11Z
+ Weekly Trending of Debian Package Control File in GitHub
+
+
\ No newline at end of file
diff --git a/denizenscript/daily/index.xml b/denizenscript/daily/index.xml
index 24330f7d168..52cee17dd3e 100644
--- a/denizenscript/daily/index.xml
+++ b/denizenscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub DenizenScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:21Z
+ 2023-12-24T01:31:21Z
Daily Trending of DenizenScript in GitHub
\ No newline at end of file
diff --git a/denizenscript/weekly/index.xml b/denizenscript/weekly/index.xml
new file mode 100644
index 00000000000..18d7d9a048a
--- /dev/null
+++ b/denizenscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub DenizenScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:11Z
+ Weekly Trending of DenizenScript in GitHub
+
+
\ No newline at end of file
diff --git a/desktop/daily/index.xml b/desktop/daily/index.xml
index 9ac59426544..903e9387f74 100644
--- a/desktop/daily/index.xml
+++ b/desktop/daily/index.xml
@@ -1,7 +1,7 @@
GitHub desktop Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:36Z
+ 2023-12-24T01:31:36Z
Daily Trending of desktop in GitHub
\ No newline at end of file
diff --git a/desktop/weekly/index.xml b/desktop/weekly/index.xml
new file mode 100644
index 00000000000..7edabe59e12
--- /dev/null
+++ b/desktop/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub desktop Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:25Z
+ Weekly Trending of desktop in GitHub
+
+
\ No newline at end of file
diff --git a/dhall/daily/index.xml b/dhall/daily/index.xml
index e1af5cc34c6..aa26f16ffba 100644
--- a/dhall/daily/index.xml
+++ b/dhall/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Dhall Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:34Z
+ 2023-12-24T01:31:37Z
Daily Trending of Dhall in GitHub
\ No newline at end of file
diff --git a/dhall/weekly/index.xml b/dhall/weekly/index.xml
new file mode 100644
index 00000000000..8efc9b8e3e4
--- /dev/null
+++ b/dhall/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Dhall Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:26Z
+ Weekly Trending of Dhall in GitHub
+
+
\ No newline at end of file
diff --git a/diff/daily/index.xml b/diff/daily/index.xml
index 6d26fa69ac1..d417f2a6d35 100644
--- a/diff/daily/index.xml
+++ b/diff/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Diff Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:35Z
+ 2023-12-24T01:31:36Z
Daily Trending of Diff in GitHub
\ No newline at end of file
diff --git a/diff/weekly/index.xml b/diff/weekly/index.xml
new file mode 100644
index 00000000000..a5ef049ed63
--- /dev/null
+++ b/diff/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Diff Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:26Z
+ Weekly Trending of Diff in GitHub
+
+
\ No newline at end of file
diff --git a/digital-command-language/daily/index.xml b/digital-command-language/daily/index.xml
index 5269be830cf..61fa81271f3 100644
--- a/digital-command-language/daily/index.xml
+++ b/digital-command-language/daily/index.xml
@@ -1,7 +1,7 @@
GitHub DIGITAL Command Language Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:37Z
+ 2023-12-24T01:31:38Z
Daily Trending of DIGITAL Command Language in GitHub
\ No newline at end of file
diff --git a/digital-command-language/weekly/index.xml b/digital-command-language/weekly/index.xml
new file mode 100644
index 00000000000..0b8d46f49d3
--- /dev/null
+++ b/digital-command-language/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub DIGITAL Command Language Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:27Z
+ Weekly Trending of DIGITAL Command Language in GitHub
+
+
\ No newline at end of file
diff --git a/dircolors/daily/index.xml b/dircolors/daily/index.xml
index c0461ad40f7..d043e3074d0 100644
--- a/dircolors/daily/index.xml
+++ b/dircolors/daily/index.xml
@@ -1,7 +1,7 @@
GitHub dircolors Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:38Z
+ 2023-12-24T01:31:39Z
Daily Trending of dircolors in GitHub
\ No newline at end of file
diff --git a/dircolors/weekly/index.xml b/dircolors/weekly/index.xml
new file mode 100644
index 00000000000..aead4615886
--- /dev/null
+++ b/dircolors/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub dircolors Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:29Z
+ Weekly Trending of dircolors in GitHub
+
+
\ No newline at end of file
diff --git a/directx-3d-file/daily/index.xml b/directx-3d-file/daily/index.xml
index 91503400caa..514e6aa094a 100644
--- a/directx-3d-file/daily/index.xml
+++ b/directx-3d-file/daily/index.xml
@@ -1,7 +1,7 @@
GitHub DirectX 3D File Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:40Z
+ 2023-12-24T01:31:42Z
Daily Trending of DirectX 3D File in GitHub
\ No newline at end of file
diff --git a/directx-3d-file/weekly/index.xml b/directx-3d-file/weekly/index.xml
new file mode 100644
index 00000000000..62490cb65ac
--- /dev/null
+++ b/directx-3d-file/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub DirectX 3D File Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:31Z
+ Weekly Trending of DirectX 3D File in GitHub
+
+
\ No newline at end of file
diff --git a/dm/daily/index.xml b/dm/daily/index.xml
index ef8398b21a4..38c32bc81ca 100644
--- a/dm/daily/index.xml
+++ b/dm/daily/index.xml
@@ -1,7 +1,7 @@
GitHub DM Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:41Z
+ 2023-12-24T01:31:41Z
Daily Trending of DM in GitHub
\ No newline at end of file
diff --git a/dm/weekly/index.xml b/dm/weekly/index.xml
new file mode 100644
index 00000000000..39ab062fb7a
--- /dev/null
+++ b/dm/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub DM Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:32Z
+ Weekly Trending of DM in GitHub
+
+
\ No newline at end of file
diff --git a/dns-zone/daily/index.xml b/dns-zone/daily/index.xml
index b5f42a8a136..b04b34b09e0 100644
--- a/dns-zone/daily/index.xml
+++ b/dns-zone/daily/index.xml
@@ -1,7 +1,7 @@
GitHub DNS Zone Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:39Z
+ 2023-12-24T01:31:40Z
Daily Trending of DNS Zone in GitHub
\ No newline at end of file
diff --git a/dns-zone/weekly/index.xml b/dns-zone/weekly/index.xml
new file mode 100644
index 00000000000..6ddc29bc24a
--- /dev/null
+++ b/dns-zone/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub DNS Zone Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:30Z
+ Weekly Trending of DNS Zone in GitHub
+
+
\ No newline at end of file
diff --git a/dockerfile/daily/index.xml b/dockerfile/daily/index.xml
index 626d986a5a4..dd3b637c63c 100644
--- a/dockerfile/daily/index.xml
+++ b/dockerfile/daily/index.xml
@@ -1,28 +1,28 @@
GitHub Dockerfile Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:48Z
+ 2023-12-24T01:31:48Z
Daily Trending of Dockerfile in GitHub
- SemlerByte/Create-Host
- 2023-12-23T01:27:48Z
- tag:github.com,2023-12-23:/SemlerByte/Create-Host
-
- <p></p><hr><h1>Here This Is Used To Make Your Free Host</h1>
+ eooce/node-ws
+ 2023-12-24T01:31:48Z
+ tag:github.com,2023-12-24:/eooce/node-ws
+
+ <p>node环境通用项目</p><hr><h1>Node-ws说明</h1>
<p>用于node环境的玩具和容器,基于node三方ws库,集成哪吒探针服务,可自行添加环境变量</p>
<ul>
<li> <p>PaaS 平台设置的环境变量</p>
<table>
<thead>
<tr>
<th>变量名</th>
<th>是否必须</th>
<th>默认值</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>UUID</td>
<td>否</td>
<td>0dc5f3c0-002b-420e-86ef-7a779dfc9101</td>
<td></td>
</tr>
<tr>
<td>PORT</td>
<td>否</td>
<td>3000</td>
<td>监听端口</td>
</tr>
<tr>
<td>TIME</td>
<td>否</td>
<td>2 * 60 * 1000</td>
<td>保活间隔时间,默认2分钟</td>
</tr>
<tr>
<td>URL</td>
<td>否</td>
<td><a href="https://www.google.com">https://www.google.com</a></td>
<td>保活的域名,不填写不开启</td>
</tr>
<tr>
<td>NEZHA_SERVER</td>
<td>否</td>
<td></td>
<td>哪吒客户端域名</td>
</tr>
<tr>
<td>NEZHA_PORT</td>
<td>否</td>
<td>5555</td>
<td>当哪吒端口为443时,自动开启tls,无需设置TLS变量</td>
</tr>
<tr>
<td>NEZHA_KEY</td>
<td>否</td>
<td></td>
<td>哪吒探针客户端专用 Key</td>
</tr>
<tr>
<td>NAME</td>
<td>否</td>
<td></td>
<td>节点名称前缀,例如:Serv00</td>
</tr>
<tr>
<td>DOMAIN</td>
<td>是</td>
<td></td>
<td>项目分配的域名或已反代的域名,不包括<a href="https://%E5%89%8D%E7%BC%80">https://前缀</a></td>
</tr>
</tbody>
</table> </li>
<li> <p>本项目已编译自访问功能,如需要,在index.js第3行中添加项目分配的域名,第4行为访问周期,根据需要修改。</p> </li>
<li> <p>域名/sub查看节点信息,也是订阅地址,包含 https:// 或 http:// 前缀,非标端口,域名:端口/sub</p> </li>
<li> <p>右边的Releases中有适配FreeBSD系统的Serv00和CT8的压缩包</p> </li>
<li> <p>温馨提示:对于风控比较严格的平台建议修改完变量后,混肴后再部署,能够避免被封号,绝对安全,READAME.md为说明文件,请不要上传。 js混肴地址:<a href="https://obfuscator.io">https://obfuscator.io</a> 全部使用默认配置就好,</p> </li>
<li> <p>如需进一步修改,右边的Releases中有未混淆的源代码</p> </li>
</ul>
- navikt/dp-service-template
- 2023-12-23T01:27:48Z
- tag:github.com,2023-12-23:/navikt/dp-service-template
-
- <p>A template repository (primarily) for our Behov solver services</p><hr><h1>Dagpenger-SERVICENAME</h1>
<h2>Komme i gang</h2>
<p>Gradle brukes som byggverktøy og er bundlet inn.</p>
<p><code>./gradlew build</code></p>
<h2>Sjekkliste for ny app</h2>
<ol>
<li>Bytt navn på app i nais.yaml, settings.gradle og dockerfile.</li>
<li>Fjern kommentering i deploy.yaml (står beskrevet hva man skal kommentere ut)</li>
<li>Legge til deploysecreten i repoet.</li>
</ol>
<hr>
<h1>Henvendelser</h1>
<p>Spørsmål knyttet til koden eller prosjektet kan rettes mot:</p>
<ul>
<li>André Roaldseth, <a href="mailto:andre.roaldseth@nav.no">andre.roaldseth@nav.no</a></li>
<li>Eller en annen måte for omverden å kontakte teamet på</li>
</ul>
<h2>For NAV-ansatte</h2>
<p>Interne henvendelser kan sendes via Slack i kanalen #dagpenger.</p>
+ Itz-fork/X-Bin-Patch
+ 2023-12-24T01:31:48Z
+ tag:github.com,2023-12-24:/Itz-fork/X-Bin-Patch
+
+ <p>Method to deploy Mega.nz-Bot to Heroku</p><hr><h1>Mega-Deployer</h1>
<p>Deploy <a href="https://github.com/Itz-fork/Mega.nz-Bot/tree/nightly">Mega.nz-Bot</a> (nightly) to Heroku</p>
<blockquote>
<p>Note ⚠️ You can find the old version at <a href="https://github.com/Itz-fork/X-Bin-Patch/tree/legacy"><code>legacy</code></a> branch</p>
</blockquote>
<h1>Deployment</h1>
<ul>
<li> <p>Fork <strong>this repo</strong> - <a href="https://github.com/Itz-fork/X-Bin-Patch/fork">click here</a>.</p> <p><img src="https://user-images.githubusercontent.com/77770753/167780790-ab07f59e-d5e4-4dd1-9160-72b1fddf060d.png" alt="create fork"></p> </li>
<li> <p>Copy the link of your fork.</p> <p><a href="https://user-images.githubusercontent.com/77770753/167781274-343ddce3-70fe-4200-a554-e8e4eee3a34e.mp4">https://user-images.githubusercontent.com/77770753/167781274-343ddce3-70fe-4200-a554-e8e4eee3a34e.mp4</a></p> </li>
<li> <p>Go to <a href="https://itz-fork.github.io/Redirect-to-Heroku">Redirect-to-Heroku</a> website, enter the copied repo link in input field and click on "Deploy Now!" button.</p> <p><a href="https://user-images.githubusercontent.com/77770753/167781439-730e7b16-a2ca-4df3-8754-9ea741c34515.mp4">https://user-images.githubusercontent.com/77770753/167781439-730e7b16-a2ca-4df3-8754-9ea741c34515.mp4</a></p> </li>
<li> <p>Fill the config vars. <a href="https://github.com/Itz-fork/Mega.nz-Bot#config-vars">Click here</a> for more details.</p> </li>
<li> <p>After that click on "Deploy app" button.</p> <p><img src="https://user-images.githubusercontent.com/77770753/167781821-a9b0df9f-3e45-48b5-9104-ee033ef8421d.png" alt="click on Deploy app button"></p> </li>
</ul>
<p><strong>Done ✅!</strong></p>
- eooce/nodejs-argo
- 2023-12-23T01:27:48Z
- tag:github.com,2023-12-23:/eooce/nodejs-argo
-
- <p>node环境通用项目,输出sub.txt文件和域名/sub订阅或域名:端口/sub订阅,也可访问查看节点信息</p><hr><h1>说明 (部署前请仔细阅读完)</h1>
<ul>
<li> <p>本项目是针对node环境的paas平台和游戏玩具而生,采用Argo隧道部署节点,集成哪吒探针服务。</p> </li>
<li> <p>node玩具平台只需上传index.js和package.json即可,paas平台需要docker部署的才上传Dockerfile。</p> </li>
<li> <p>如需是链接github部署,请先删除README.md说明文件,安全起见,已混淆主代码部分。</p> </li>
<li> <p>不填写ARGO_DOMAIN和ARGO_AUTH两个变量即启用临时隧道,反之则使用固定隧道。</p> </li>
<li> <p>若遇到已获取到临时隧道但节点不通,说明域名被墙,重启即可</p> </li>
<li> <p>无需设置NEZHA_TLS,当哪吒端口为443时,自动开启--tls。</p> </li>
<li> <p>右边的Releases中已适配FreeBSD,自行下载,类似的平台Serv00,CT8</p> </li>
<li> <p>PaaS 平台设置的环境变量,index.js中的1至12行中设置</p>
<table>
<thead>
<tr>
<th>变量名</th>
<th>是否必须</th>
<th>默认值</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>URL</td>
<td>否</td>
<td><a href="https://www.google.com">https://www.google.com</a></td>
<td>项目分配的域名</td>
</tr>
<tr>
<td>PORT</td>
<td>否</td>
<td>3000</td>
<td>http服务监听端口,也是订阅端口</td>
</tr>
<tr>
<td>ARGO_PORT</td>
<td>否</td>
<td>8080</td>
<td>argo隧道端口,固定隧道token需和cloudflare后台设置的一致</td>
</tr>
<tr>
<td>UUID</td>
<td>否</td>
<td>89c13786-25aa-4520-b2e7-12cd60fb5202</td>
<td>UUID</td>
</tr>
<tr>
<td>TIME</td>
<td>否</td>
<td>2 * 60 * 1000</td>
<td>自动访问间隔时间(默认2分钟)</td>
</tr>
<tr>
<td>NEZHA_SERVER</td>
<td>否</td>
<td></td>
<td>哪吒服务端域名,例如nz.aaa.com</td>
</tr>
<tr>
<td>NEZHA_PORT</td>
<td>否</td>
<td>5555</td>
<td>当哪吒端口为443时,自动开启tls</td>
</tr>
<tr>
<td>NEZHA_KEY</td>
<td>否</td>
<td></td>
<td>哪吒客务端专用KEY</td>
</tr>
<tr>
<td>ARGO_DOMAIN</td>
<td>否</td>
<td></td>
<td>argo固定隧道域名</td>
</tr>
<tr>
<td>ARGO_AUTH</td>
<td>否</td>
<td></td>
<td>argo固定隧道json或token</td>
</tr>
<tr>
<td>CFIP</td>
<td>否</td>
<td>skk.moe</td>
<td>节点优选域名或ip</td>
</tr>
<tr>
<td>CFPORT</td>
<td>否</td>
<td>443</td>
<td>节点端口</td>
</tr>
<tr>
<td>NAME</td>
<td>否</td>
<td>ABCD</td>
<td>节点名称前缀,例如:Glitch,Replit</td>
</tr>
<tr>
<td>FILE_PATH</td>
<td>否</td>
<td>temp</td>
<td>运行目录</td>
</tr>
</tbody>
</table> </li>
</ul>
<h1>节点信息</h1>
<ul>
<li>本项目采用Argo隧道,输出sub文件和订阅,默认在temp文件夹内,域名/sub或域名:端口/sub查看节点信息,也是订阅连接</li>
</ul>
<h1>其他</h1>
<ul>
<li>本项目已添加自动访问保活功能,仅支持不重启停机的平台,需在第2行中添加项目分配的域名。建议配合外部自动访问保活,保活项目地址:<a href="https://github.com/eoovve/Auto-keep-online">https://github.com/eoovve/Auto-keep-online</a></li>
<li>Replit,Codesanbox,Glitch,Render,koyeb,Fly,Northfrank,back4app,Alwaysdate,Zeabur,Doprax及数十个游戏玩具平台均已测试ok。</li>
<li>Render及其他比较严格的容器平台,请使用docker image部署,Dockerfile地址:<a href="https://github.com/eoovve/nodejs-argo-image">https://github.com/eoovve/nodejs-argo-image</a></li>
</ul>
<h1>免责声明</h1>
<ul>
<li>本程序仅供学习了解, 非盈利目的,请于下载后 24 小时内删除, 不得用作任何商业用途, 文字、数据及图片均有所属版权, 如转载须注明来源。</li>
<li>使用本程序必循遵守部署免责声明,使用本程序必循遵守部署服务器所在地、所在国家和用户所在国家的法律法规, 程序作者不对使用者任何不当行为负责。</li>
</ul>
+ xima-media/typo3-docker
+ 2023-12-24T01:31:48Z
+ tag:github.com,2023-12-24:/xima-media/typo3-docker
+
+ <p></p><hr><h1>Docker images</h1>
<p>This repository provides various docker images used in PHP development.</p>
<h2>PHP + composer</h2>
<p>These images are just like the original <a href="https://hub.docker.com/_/composer">composer images</a>, but with pinned PHP version.</p>
\ No newline at end of file
diff --git a/dockerfile/weekly/index.xml b/dockerfile/weekly/index.xml
new file mode 100644
index 00000000000..15712faae2d
--- /dev/null
+++ b/dockerfile/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Dockerfile Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:39Z
+ Weekly Trending of Dockerfile in GitHub
+
+
+ gizumo-education/laravel-docker-template
+ 2023-12-24T01:48:39Z
+ tag:github.com,2023-12-24:/gizumo-education/laravel-docker-template
+
+ <p>Laravelレッスンで使用する環境構築用のリポジトリ</p><hr>
+
+
+ home-assistant/addons-example
+ 2023-12-24T01:48:39Z
+ tag:github.com,2023-12-24:/home-assistant/addons-example
+
+ <p>Example Home Assistant add-on repository</p><hr><h1>Example Home Assistant add-on repository</h1>
<p>This repository can be used as a "blueprint" for add-on development to help you get started.</p>
<p>Add-on documentation: <a href="https://developers.home-assistant.io/docs/add-ons">https://developers.home-assistant.io/docs/add-ons</a></p>
<p><a href="https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fhome-assistant%2Faddons-example"><img src="https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg?sanitize=true" alt="Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled."></a></p>
<h2>Add-ons</h2>
<p>This repository contains the following add-ons</p>
<h3><a href="https://raw.githubusercontent.com/home-assistant/addons-example/main/example">Example add-on</a></h3>
<p><img src="https://img.shields.io/badge/aarch64-yes-green.svg?sanitize=true" alt="Supports aarch64 Architecture"> <img src="https://img.shields.io/badge/amd64-yes-green.svg?sanitize=true" alt="Supports amd64 Architecture"> <img src="https://img.shields.io/badge/armhf-yes-green.svg?sanitize=true" alt="Supports armhf Architecture"> <img src="https://img.shields.io/badge/armv7-yes-green.svg?sanitize=true" alt="Supports armv7 Architecture"> <img src="https://img.shields.io/badge/i386-yes-green.svg?sanitize=true" alt="Supports i386 Architecture"></p>
<p><em>Example add-on to use as a blueprint for new add-ons.</em></p>
<!--
Notes to developers after forking or using the github template feature:
- While developing comment out the 'image' key from 'example/config.yaml' to make the supervisor build the addon
- Remember to put this back when pushing up your changes.
- When you merge to the 'main' branch of your repository a new build will be triggered.
- Make sure you adjust the 'version' key in 'example/config.yaml' when you do that.
- Make sure you update 'example/CHANGELOG.md' when you do that.
- The first time this runs you might need to adjust the image configuration on github container registry to make it public
- You may also need to adjust the github Actions configuration (Settings > Actions > General > Workflow > Read & Write)
- Adjust the 'image' key in 'example/config.yaml' so it points to your username instead of 'home-assistant'.
- This is where the build images will be published to.
- Rename the example directory.
- The 'slug' key in 'example/config.yaml' should match the directory name.
- Adjust all keys/url's that points to 'home-assistant' to now point to your user/fork.
- Share your repository on the forums https://community.home-assistant.io/c/projects/9
- Do awesome stuff!
-->
+
+
+ SemlerByte/Create-Host
+ 2023-12-24T01:48:39Z
+ tag:github.com,2023-12-24:/SemlerByte/Create-Host
+
+ <p></p><hr><h1>Here This Is Used To Make Your Free Host</h1>
+
+
\ No newline at end of file
diff --git a/dogescript/daily/index.xml b/dogescript/daily/index.xml
index 3ff4bd22d42..99bfa736d9c 100644
--- a/dogescript/daily/index.xml
+++ b/dogescript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Dogescript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:44Z
+ 2023-12-24T01:31:43Z
Daily Trending of Dogescript in GitHub
\ No newline at end of file
diff --git a/dogescript/weekly/index.xml b/dogescript/weekly/index.xml
new file mode 100644
index 00000000000..d4392a4815e
--- /dev/null
+++ b/dogescript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Dogescript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:33Z
+ Weekly Trending of Dogescript in GitHub
+
+
\ No newline at end of file
diff --git a/dtrace/daily/index.xml b/dtrace/daily/index.xml
index e2ef31c6409..bd28d9d5a29 100644
--- a/dtrace/daily/index.xml
+++ b/dtrace/daily/index.xml
@@ -1,7 +1,7 @@
GitHub DTrace Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:27:42Z
+ 2023-12-24T01:31:45Z
Daily Trending of DTrace in GitHub
\ No newline at end of file
diff --git a/dtrace/weekly/index.xml b/dtrace/weekly/index.xml
new file mode 100644
index 00000000000..49e1a8a513a
--- /dev/null
+++ b/dtrace/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub DTrace Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:48:35Z
+ Weekly Trending of DTrace in GitHub
+
+
\ No newline at end of file
diff --git a/dylan/daily/index.xml b/dylan/daily/index.xml
index a09d7eb012b..25f641b0448 100644
--- a/dylan/daily/index.xml
+++ b/dylan/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Dylan Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:02Z
+ 2023-12-24T01:32:24Z
Daily Trending of Dylan in GitHub
\ No newline at end of file
diff --git a/dylan/weekly/index.xml b/dylan/weekly/index.xml
new file mode 100644
index 00000000000..6781a08c02e
--- /dev/null
+++ b/dylan/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Dylan Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:05Z
+ Weekly Trending of Dylan in GitHub
+
+
\ No newline at end of file
diff --git a/e-mail/daily/index.xml b/e-mail/daily/index.xml
index 4cb741ec06d..721370e9a6f 100644
--- a/e-mail/daily/index.xml
+++ b/e-mail/daily/index.xml
@@ -1,7 +1,7 @@
GitHub E-mail Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:38Z
+ 2023-12-24T01:32:56Z
Daily Trending of E-mail in GitHub
\ No newline at end of file
diff --git a/e-mail/weekly/index.xml b/e-mail/weekly/index.xml
new file mode 100644
index 00000000000..18ed3114dff
--- /dev/null
+++ b/e-mail/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub E-mail Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:37Z
+ Weekly Trending of E-mail in GitHub
+
+
\ No newline at end of file
diff --git a/e/daily/index.xml b/e/daily/index.xml
index cb84ed41a23..129d33eb535 100644
--- a/e/daily/index.xml
+++ b/e/daily/index.xml
@@ -1,7 +1,7 @@
GitHub E Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:05Z
+ 2023-12-24T01:32:25Z
Daily Trending of E in GitHub
\ No newline at end of file
diff --git a/e/weekly/index.xml b/e/weekly/index.xml
new file mode 100644
index 00000000000..6fd1ec2c891
--- /dev/null
+++ b/e/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub E Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:04Z
+ Weekly Trending of E in GitHub
+
+
\ No newline at end of file
diff --git a/eagle/daily/index.xml b/eagle/daily/index.xml
index 6ee3684a1af..573c928365d 100644
--- a/eagle/daily/index.xml
+++ b/eagle/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Eagle Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:03Z
+ 2023-12-24T01:32:23Z
Daily Trending of Eagle in GitHub
\ No newline at end of file
diff --git a/eagle/weekly/index.xml b/eagle/weekly/index.xml
new file mode 100644
index 00000000000..4acb4c3280a
--- /dev/null
+++ b/eagle/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Eagle Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:07Z
+ Weekly Trending of Eagle in GitHub
+
+
\ No newline at end of file
diff --git a/earthly/daily/index.xml b/earthly/daily/index.xml
index ecaf6460ce9..75c8a3d3a4d 100644
--- a/earthly/daily/index.xml
+++ b/earthly/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Earthly Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:09Z
+ 2023-12-24T01:32:29Z
Daily Trending of Earthly in GitHub
\ No newline at end of file
diff --git a/earthly/weekly/index.xml b/earthly/weekly/index.xml
new file mode 100644
index 00000000000..f41f472e435
--- /dev/null
+++ b/earthly/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Earthly Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:10Z
+ Weekly Trending of Earthly in GitHub
+
+
\ No newline at end of file
diff --git a/easybuild/daily/index.xml b/easybuild/daily/index.xml
index d0e7e97fc21..efe86835096 100644
--- a/easybuild/daily/index.xml
+++ b/easybuild/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Easybuild Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:08Z
+ 2023-12-24T01:32:30Z
Daily Trending of Easybuild in GitHub
\ No newline at end of file
diff --git a/easybuild/weekly/index.xml b/easybuild/weekly/index.xml
new file mode 100644
index 00000000000..8fc739d0811
--- /dev/null
+++ b/easybuild/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Easybuild Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:08Z
+ Weekly Trending of Easybuild in GitHub
+
+
\ No newline at end of file
diff --git a/ebnf/daily/index.xml b/ebnf/daily/index.xml
index f8ca23f7ff6..c322a61ed58 100644
--- a/ebnf/daily/index.xml
+++ b/ebnf/daily/index.xml
@@ -1,7 +1,7 @@
GitHub EBNF Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:07Z
+ 2023-12-24T01:32:28Z
Daily Trending of EBNF in GitHub
\ No newline at end of file
diff --git a/ebnf/weekly/index.xml b/ebnf/weekly/index.xml
new file mode 100644
index 00000000000..1bf5bb68da5
--- /dev/null
+++ b/ebnf/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub EBNF Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:11Z
+ Weekly Trending of EBNF in GitHub
+
+
\ No newline at end of file
diff --git a/ec/daily/index.xml b/ec/daily/index.xml
index 8aca4b2d818..3a672f0c6bd 100644
--- a/ec/daily/index.xml
+++ b/ec/daily/index.xml
@@ -1,7 +1,7 @@
GitHub eC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:06Z
+ 2023-12-24T01:32:27Z
Daily Trending of eC in GitHub
\ No newline at end of file
diff --git a/ec/weekly/index.xml b/ec/weekly/index.xml
new file mode 100644
index 00000000000..8b6f9607892
--- /dev/null
+++ b/ec/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub eC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:09Z
+ Weekly Trending of eC in GitHub
+
+
\ No newline at end of file
diff --git a/ecere-projects/daily/index.xml b/ecere-projects/daily/index.xml
index 3ab858e6b01..dfd17ae40cb 100644
--- a/ecere-projects/daily/index.xml
+++ b/ecere-projects/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ecere Projects Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:11Z
+ 2023-12-24T01:32:31Z
Daily Trending of Ecere Projects in GitHub
\ No newline at end of file
diff --git a/ecere-projects/weekly/index.xml b/ecere-projects/weekly/index.xml
new file mode 100644
index 00000000000..593aa31b522
--- /dev/null
+++ b/ecere-projects/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ecere Projects Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:14Z
+ Weekly Trending of Ecere Projects in GitHub
+
+
\ No newline at end of file
diff --git a/ecl/daily/index.xml b/ecl/daily/index.xml
index f5dc7813838..49f8268ef77 100644
--- a/ecl/daily/index.xml
+++ b/ecl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ECL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:13Z
+ 2023-12-24T01:32:33Z
Daily Trending of ECL in GitHub
\ No newline at end of file
diff --git a/ecl/weekly/index.xml b/ecl/weekly/index.xml
new file mode 100644
index 00000000000..c4b05c5b050
--- /dev/null
+++ b/ecl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ECL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:14Z
+ Weekly Trending of ECL in GitHub
+
+
\ No newline at end of file
diff --git a/eclipse/daily/index.xml b/eclipse/daily/index.xml
index 9ae4ff91119..eb794d31adb 100644
--- a/eclipse/daily/index.xml
+++ b/eclipse/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ECLiPSe Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:11Z
+ 2023-12-24T01:32:31Z
Daily Trending of ECLiPSe in GitHub
\ No newline at end of file
diff --git a/eclipse/weekly/index.xml b/eclipse/weekly/index.xml
new file mode 100644
index 00000000000..95cf5478c55
--- /dev/null
+++ b/eclipse/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ECLiPSe Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:13Z
+ Weekly Trending of ECLiPSe in GitHub
+
+
\ No newline at end of file
diff --git a/editorconfig/daily/index.xml b/editorconfig/daily/index.xml
index 995e3d8fd2c..528687cf4e3 100644
--- a/editorconfig/daily/index.xml
+++ b/editorconfig/daily/index.xml
@@ -1,7 +1,7 @@
GitHub EditorConfig Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:16Z
+ 2023-12-24T01:32:38Z
Daily Trending of EditorConfig in GitHub
\ No newline at end of file
diff --git a/editorconfig/weekly/index.xml b/editorconfig/weekly/index.xml
new file mode 100644
index 00000000000..9e38c1ccb98
--- /dev/null
+++ b/editorconfig/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub EditorConfig Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:18Z
+ Weekly Trending of EditorConfig in GitHub
+
+
\ No newline at end of file
diff --git a/edje-data-collection/daily/index.xml b/edje-data-collection/daily/index.xml
index 9e9200a8099..fa3df815270 100644
--- a/edje-data-collection/daily/index.xml
+++ b/edje-data-collection/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Edje Data Collection Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:15Z
+ 2023-12-24T01:32:35Z
Daily Trending of Edje Data Collection in GitHub
\ No newline at end of file
diff --git a/edje-data-collection/weekly/index.xml b/edje-data-collection/weekly/index.xml
new file mode 100644
index 00000000000..a5d0393fb96
--- /dev/null
+++ b/edje-data-collection/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Edje Data Collection Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:16Z
+ Weekly Trending of Edje Data Collection in GitHub
+
+
\ No newline at end of file
diff --git a/edn/daily/index.xml b/edn/daily/index.xml
index 6942e44d86c..719a77da56c 100644
--- a/edn/daily/index.xml
+++ b/edn/daily/index.xml
@@ -1,7 +1,7 @@
GitHub edn Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:14Z
+ 2023-12-24T01:32:37Z
Daily Trending of edn in GitHub
\ No newline at end of file
diff --git a/edn/weekly/index.xml b/edn/weekly/index.xml
new file mode 100644
index 00000000000..0e6ee01f1c5
--- /dev/null
+++ b/edn/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub edn Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:17Z
+ Weekly Trending of edn in GitHub
+
+
\ No newline at end of file
diff --git a/eiffel/daily/index.xml b/eiffel/daily/index.xml
index eaa0bef567f..d7cc2ea6918 100644
--- a/eiffel/daily/index.xml
+++ b/eiffel/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Eiffel Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:18Z
+ 2023-12-24T01:32:39Z
Daily Trending of Eiffel in GitHub
\ No newline at end of file
diff --git a/eiffel/weekly/index.xml b/eiffel/weekly/index.xml
new file mode 100644
index 00000000000..45773c282b1
--- /dev/null
+++ b/eiffel/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Eiffel Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:19Z
+ Weekly Trending of Eiffel in GitHub
+
+
\ No newline at end of file
diff --git a/ejs/daily/index.xml b/ejs/daily/index.xml
index 89d9812e08c..2c2341b6011 100644
--- a/ejs/daily/index.xml
+++ b/ejs/daily/index.xml
@@ -1,7 +1,14 @@
GitHub EJS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:20Z
+ 2023-12-24T01:32:44Z
Daily Trending of EJS in GitHub
+
+ dvai/Ankia-Theme
+ 2023-12-24T01:32:44Z
+ tag:github.com,2023-12-24:/dvai/Ankia-Theme
+
+ <p>A card-style Trilium blog theme (based on Trilium sharing feature)</p><hr>
+
\ No newline at end of file
diff --git a/ejs/weekly/index.xml b/ejs/weekly/index.xml
new file mode 100644
index 00000000000..d61390421a2
--- /dev/null
+++ b/ejs/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub EJS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:21Z
+ Weekly Trending of EJS in GitHub
+
+
+ asynchronousJavascriptor/instaclone
+ 2023-12-24T01:49:21Z
+ tag:github.com,2023-12-24:/asynchronousJavascriptor/instaclone
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/elixir/daily/index.xml b/elixir/daily/index.xml
index 867738b61e3..f4bf4ad257b 100644
--- a/elixir/daily/index.xml
+++ b/elixir/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Elixir Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:24Z
+ 2023-12-24T01:32:42Z
Daily Trending of Elixir in GitHub
-
- sabiwara/aja
- 2023-12-23T01:28:24Z
- tag:github.com,2023-12-23:/sabiwara/aja
-
- <p>Extension of the Elixir standard library focused on data stuctures, data manipulation and performance</p><hr>
-
\ No newline at end of file
diff --git a/elixir/weekly/index.xml b/elixir/weekly/index.xml
new file mode 100644
index 00000000000..d7fac40a610
--- /dev/null
+++ b/elixir/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Elixir Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:24Z
+ Weekly Trending of Elixir in GitHub
+
+
+ mruoss/flame_k8s_backend
+ 2023-12-24T01:49:24Z
+ tag:github.com,2023-12-24:/mruoss/flame_k8s_backend
+
+ <p>A FLAME Backend for Kubernetes.</p><hr>
+
+
\ No newline at end of file
diff --git a/elm/daily/index.xml b/elm/daily/index.xml
index ecce01843a3..ec162bfade0 100644
--- a/elm/daily/index.xml
+++ b/elm/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Elm Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:21Z
+ 2023-12-24T01:32:40Z
Daily Trending of Elm in GitHub
+
+ maaslalani/quote
+ 2023-12-24T01:32:40Z
+ tag:github.com,2023-12-24:/maaslalani/quote
+
+ <p>Generate aesthetic quote images</p><hr>
+
\ No newline at end of file
diff --git a/elm/weekly/index.xml b/elm/weekly/index.xml
new file mode 100644
index 00000000000..5a629e30b71
--- /dev/null
+++ b/elm/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Elm Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:20Z
+ Weekly Trending of Elm in GitHub
+
+
\ No newline at end of file
diff --git a/emacs-lisp/daily/index.xml b/emacs-lisp/daily/index.xml
index 49d7f10df5c..1239eed4f91 100644
--- a/emacs-lisp/daily/index.xml
+++ b/emacs-lisp/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Emacs Lisp Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:30Z
+ 2023-12-24T01:32:50Z
Daily Trending of Emacs Lisp in GitHub
+
+ joelmccracken/modal-emacs
+ 2023-12-24T01:32:50Z
+ tag:github.com,2023-12-24:/joelmccracken/modal-emacs
+
+ <p></p><hr><h1>11/2015 Update</h1>
<p>I've given spacemacs a try, and have decided to not pursue this project. If you want to use it for some reason, let me know. I will license it MIT.</p>
<h1>Modal Emacs</h1>
<p>Modal Emacs is an package that adds modal keybindings to Emacs.</p>
<p>Normally, you access commands in emacs through modifier keys, such as control, meta, and shift. Modal Emacs makes it easy to change keyboard "modes", which changes what keys do.</p>
<p>Thus, whenever a keyboard is in "command" mode, we can use <code>s</code> to search, which is easier on the hand (and, in my limited experience, faster to type).</p>
<h1>Alpha Warning</h1>
<p>Modal Emacs is still in early development. You should expect lots of change as the project evolves.</p>
<p>If you have any feedback, suggestions, or would like to help, please contact me via issues!</p>
<h1>Not a Vi Emulator</h1>
<p>There are a bunch of frameworks that emulate Vim keybindings in Emacs. This is not one of them.</p>
<p>Vim is a great editor. I used Vim for years, and I really like(d) it. However, Emacs and Vim are very different beasts, and the way that they operate is also very different. Their philosophies are different, and their intellectual lineage is different.</p>
<p>Modal Emacs is an attempt to bring modal editing to Emacs, and have it exist in a native, natural way. It does not try to feel familiar to Vim converts.</p>
<h1>Installation</h1>
<h2>Manual</h2>
<p>Download modal-emacs.el someone into your loadpath. For example, you could do:</p>
<pre><code class="language-sh">cd ~/.emacs.d/
wget https://raw.github.com/joelmccracken/modal-emacs/master/modal-emacs.el
</code></pre>
<p>Load it into emacs:</p>
<pre><code class="language-emacs-lisp">;; assuming that you've
(require 'modal-emacs)
</code></pre>
<h2>Package</h2>
<p>Modal Emacs should be available as a package soon.</p>
<h1>Usage and Configuration</h1>
<h2>Enabling Globally</h2>
<p>The command <code>modal-emacs-globalized-mode</code> will enable Modal Emacs as a globalized minor mode -- thus, it will be enabled in every buffer currently in emacs, and all buffers that will be created in the future.</p>
<p>I still don't like Modal Emacs to be active in every buffer. You may enable Modal Emacs on an per-buffer basis with <code>modal-emacs-on</code>. I have it selectively enabled with this:</p>
<pre><code class="language-emacs-lisp">;; only loads in coffeescript and ruby files
(add-hook 'coffee-mode-hook 'modal-emacs-on)
(add-hook 'ruby-mode-hook 'modal-emacs-on)
</code></pre>
<h1>Problems? Help?</h1>
<p>Please direct all inquiries to issues!</p>
+
\ No newline at end of file
diff --git a/emacs-lisp/weekly/index.xml b/emacs-lisp/weekly/index.xml
new file mode 100644
index 00000000000..aa62ba91df4
--- /dev/null
+++ b/emacs-lisp/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Emacs Lisp Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:30Z
+ Weekly Trending of Emacs Lisp in GitHub
+
+
+ domtronn/all-the-icons.el
+ 2023-12-24T01:49:30Z
+ tag:github.com,2023-12-24:/domtronn/all-the-icons.el
+
+ <p>A utility package to collect various Icon Fonts and propertize them within Emacs.</p><hr><p><img src="https://raw.githubusercontent.com/domtronn/all-the-icons.el/master/logo.png" alt="img"></p>
<p align="center"> <b><a href="https://raw.githubusercontent.com/domtronn/all-the-icons.el/master/#installation">Installation</a></b> | <b><a href="https://raw.githubusercontent.com/domtronn/all-the-icons.el/master/#usage">Usage</a></b> | <b><a href="https://raw.githubusercontent.com/domtronn/all-the-icons.el/master/#resource-fonts">Fonts</a></b> | <b><a href="https://raw.githubusercontent.com/domtronn/all-the-icons.el/master/#wiki">Wiki</a></b> </p>
<p align="center"> <a href="https://melpa.org/#/all-the-icons"><img src="https://melpa.org/packages/all-the-icons-badge.svg?sanitize=true"></a> <a href="https://stable.melpa.org/#/all-the-icons"><img src="https://stable.melpa.org/packages/all-the-icons-badge.svg?sanitize=true"></a> <a href="https://github.com/domtronn/all-the-icons.el/releases"><img src="https://img.shields.io/github/tag/domtronn/all-the-icons.el.svg?sanitize=true"></a> <a href="https://travis-ci.org/domtronn/all-the-icons.el"><img src="https://travis-ci.org/domtronn/all-the-icons.el.svg?branch=master"></a> <a href="https://github.com/domtronn/all-the-icons.el/raw/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg?sanitize=true"></a> </p>
<h1>Installation</h1>
<p>You should be able to install this package in the standard way, add it to the load path and then calling</p>
<pre><code class="language-el">(when (display-graphic-p)
(require 'all-the-icons))
;; or
(use-package all-the-icons
:if (display-graphic-p))
</code></pre>
<h3>Installing Fonts</h3>
<p>In order for the icons to work it is <strong>very important</strong> that you install the Resource Fonts included in this package, they are available in the <a href="file:///fonts"> <code>fonts</code> </a> directory. You can also install the <em>latest</em> fonts for this package in the <em>(guessed?)</em> based on the OS by calling the following function;</p>
<pre><code>M-x all-the-icons-install-fonts
</code></pre>
<p>Bear in mind, this will also run <code>fc-cache -f -v</code> on <strong>MacOS</strong> and <strong>Linux</strong> which <em>can take some time</em> to complete. For <strong>Windows</strong>, this function will prompt for a <em>download</em> directory for you to install them manually.</p>
<h1>Usage</h1>
<p>The simplest usage for this package is to use the following functions;</p>
<ul>
<li><code>all-the-icons-icon-for-buffer</code></li>
<li><code>all-the-icons-icon-for-dir</code></li>
<li><code>all-the-icons-icon-for-file</code></li>
<li><code>all-the-icons-icon-for-mode</code></li>
<li><code>all-the-icons-icon-for-url</code></li>
</ul>
<p>Which can be used to get a formatted icon which you can insert into buffers, <em>e.g.</em></p>
<pre><code class="language-el">(insert (all-the-icons-icon-for-file "foo.js"))
;; Inserts a javascript icon
;; #("js-icon" 0 1 (display (raise -0.24) face (:family "alltheicon" :height 1.08 :foreground "#FFD446")))
</code></pre>
<h2>Inserting Icons Directly</h2>
<p>The above is fine if you want this package to automatically decide on the icon you want for files and things, however, to insert the icons directly you will want to use these icons functions;</p>
<ul>
<li><code>all-the-icons-alltheicon</code></li>
<li><code>all-the-icons-faicon</code></li>
<li><code>all-the-icons-fileicon</code></li>
<li><code>all-the-icons-octicon</code></li>
<li><code>all-the-icons-wicon</code></li>
</ul>
<p>You can then call these functions with the icon you want to insert, <em>e.g.</em></p>
<pre><code class="language-el">(all-the-icons-octicon "file-binary") ;; GitHub Octicon for Binary File
(all-the-icons-faicon "cogs") ;; FontAwesome icon for cogs
(all-the-icons-wicon "tornado") ;; Weather Icon for tornado
</code></pre>
<p>A list of all the icon names for a font family can be found in the <code>data</code> directory, or by inspecting the alist variables.</p>
<p>The alist variables are all prefixed with</p>
<ul>
<li><code>all-the-icons-data/</code></li>
</ul>
<p>For example <code>C-h v all-the-icons-data/ <TAB></code> will give a list of all the data alist you can describe <em>(and the icon fonts they're associated with)</em></p>
<h2>Inserting icons with properties</h2>
<p>Each of the above icon functions can also be given different properties to slightly adjust the way they're formatted, these are</p>
<ul>
<li><code>:height</code> - The height of the icon</li>
<li><code>:v-adjust</code> - Vertical adjust (<em>positive is up, negative is down</em>)</li>
<li><code>:face</code> - The face to apply to the icon, defaults to <code>\'default</code></li>
</ul>
<p>So you would call, for example</p>
<pre><code class="language-el">(all-the-icons-wicon "tornado" :face 'all-the-icons-blue)
</code></pre>
<p>These properties can also be used on the <code>all-the-icons-icon-for-file</code> and <code>all-the-icons-icon-for-mode</code> functions as well, <em>i.e.</em></p>
<pre><code class="language-el">(insert (all-the-icons-icon-for-file "foo.js" :height 2 :face 'all-the-icons-lred))
;; Inserts a RED Javascript icon with height 2
;; #("js-icon" 0 1 (display (raise -0.24) face (:family "alltheicon" :height 2.0 :foreground "red")))
</code></pre>
<p>The default icon <code>:height</code> and <code>:v-adjust</code> properties can be set with the <code>all-the-icons-scale-factor</code> and <code>all-the-icons-default-adjust</code> variables. Additional adjustments can be made per font family via the <code>all-the-icons-{familyname}-scale-factor</code> and <code>all-the-icons-default-{familyname}-adjust</code> variables, where <code>{familyname}</code> is any member of <code>all-the-icons-font-families</code>.</p>
<h2>Propertizing icons yourself</h2>
<p>However, sometimes when propertizing these icons <em>(for example if you were customising your mode line)</em> you <em>may</em> sometimes have to know the font family to add in to override the current font family being used, <em>e.g.</em></p>
<pre><code class="language-el">(propertize (all-the-icons-octicon "package")
'face `(:family ,(all-the-icons-octicon-family) :height 1.2)
'display '(raise -0.1))
</code></pre>
<h2>Troubleshooting</h2>
<p>If you see placeholders (AKA tofus) being rendered, or the wrong icons being displayed, the underlying cause generally falls into one of three categories:</p>
<ol>
<li>Font installation failed due to networking issues. Check your OS' and Emacs' networking (<code>M-x customize-group RET gnutls/nsm/url/network RET</code>) and security settings (i.e. proxy, firewall, antivirus software...)</li>
<li>On *nix systems, make sure the font cache has been updated. <code>all-the-icons-install-fonts</code> should do this for you automatically, but sometimes it may fail due to misconfiguration.</li>
<li>You've misconfigured your font settings in Emacs.</li>
</ol>
<p>To check if you've misconfigured your Emacs font settings, you can try the following steps:</p>
<ol>
<li>Print out all of the icons in an icon set and their corresponding id/name.</li>
</ol>
<pre><code class="language-el">
;; Valid font families are 'material 'wicon 'octicon 'faicon 'fileicon and 'alltheicon
(all-the-icons-insert-icons-for 'alltheicon) ;; Prints all the icons for `alltheicon' font set
(all-the-icons-insert-icons-for 'octicon 10) ;; Prints all the icons for the `octicon' family
;; and makes the icons height 10
(all-the-icons-insert-icons-for 'faicon 1 0.5) ;; Prints all the icons for the `faicon' family
;; and also waits 0.5s between printing each one
</code></pre>
<ol start="2">
<li>Now that you are certain which icon set is not displaying properly, check the fontset currently in effect.</li>
</ol>
<ul>
<li>Look up the hex code of the icon from the <code>data/data-[font-family].el</code> file. Write it down.</li>
<li><code>M-x describe-fontset RET RET</code></li>
<li>Now you are looking at the fontset for the current frame, search for the hex range for that icon. Usually it's <code>#xE000</code>, or <code>#xF0</code> <code>#xF2</code>, but there are a few outside of these offsets.</li>
<li>If you don't see the font family in question in the list of fontspecs (i.e. <code>[-*-file-icons-...]</code>) below the range, or some other fontspecs in front of the one in question, you will have to add the families back to the fontset (scroll to the top to see which one is in effect), or arrange the fontspec order. For example:</li>
</ul>
<pre><code class="language-elisp">;; Use 'prepend for the NS and Mac ports or Emacs will crash.
(set-fontset-font t 'unicode (font-spec :family "all-the-icons") nil 'append)
(set-fontset-font t 'unicode (font-spec :family "file-icons") nil 'append)
(set-fontset-font t 'unicode (font-spec :family "Material Icons") nil 'append)
(set-fontset-font t 'unicode (font-spec :family "github-octicons") nil 'append)
(set-fontset-font t 'unicode (font-spec :family "FontAwesome") nil 'append)
(set-fontset-font t 'unicode (font-spec :family "Weather Icons") nil 'append)
</code></pre>
<h1>Resource Fonts</h1>
<p>All of the fonts provided in this packages as resources come with either the SIL Open Font License <em>(OFL)</em> or an MIT License, below I will link to each of the fonts Sources and their Licenses.</p>
<table>
<thead>
<tr>
<th>Font Name</th>
<th>Font</th>
<th>License</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>file-icons.ttf</code></td>
<td><a href="https://atom.io/packages/file-icons">Atom File Icons Plugin</a></td>
<td><a href="https://github.com/DanBrooker/file-icons/raw/master/LICENSE.md">MIT LICENSE</a></td>
</tr>
<tr>
<td><code>fontawesome.ttf</code></td>
<td><a href="http://fontawesome.io/">FontAwesome Icons</a></td>
<td><a href="https://github.com/FortAwesome/Font-Awesome#license">SIL OFL LICENSE</a></td>
</tr>
<tr>
<td><code>ocitcons.ttf</code></td>
<td><a href="http://octicons.github.com">GitHub OctIcons</a></td>
<td><a href="https://github.com/primer/octicons/raw/master/LICENSE">SIL OFL LICENSE</a></td>
</tr>
<tr>
<td><code>weathericons.ttf</code></td>
<td><a href="https://erikflowers.github.io/weather-icons/">Weather Icons</a></td>
<td><a href="https://github.com/primer/octicons/raw/master/LICENSE">SIL OFL LICENSE</a></td>
</tr>
<tr>
<td><code>material-design-icons.ttf</code></td>
<td><a href="http://google.github.io/material-design-icons/">Material Icons</a></td>
<td><a href="http://www.apache.org/licenses/LICENSE-2.0.txt">APACHE LICENSE v2.0</a></td>
</tr>
<tr>
<td><code>all-the-icons.ttf</code></td>
<td>Custom Made Font</td>
<td>MIT LICENSE</td>
</tr>
</tbody>
</table>
<p>The fonts provided with this packages are locked down to a version for unicode character mapping values. In the future, these may be automatically generated.</p>
<p>I would like to thank all the authors for the creation and use of these fantastic fonts.</p>
<h1>Wiki</h1>
<p>Lastly, there is a <a href="https://github.com/domtronn/all-the-icons.el/wiki">Wiki Page</a> which should give you some ideas of ways to use this library to spruce up other Emacs packages.</p>
<h3>Slow Rendering</h3>
<p>If you experience a slow down in performance when rendering multiple icons simultaneously, you can try setting the following variable</p>
<pre><code class="language-el">(setq inhibit-compacting-font-caches t)
</code></pre>
<p>Some people have found that this <a href="https://github.com/domtronn/all-the-icons.el/issues/28">fixes the problem</a></p>
<p><a href="https://raw.githubusercontent.com/domtronn/all-the-icons.el/master/#readme">▲ back to top</a></p>
+
+
+ chetanvaity/envo
+ 2023-12-24T01:49:30Z
+ tag:github.com,2023-12-24:/chetanvaity/envo
+
+ <p>Environment files - emacs, tmux etc</p><hr><h1>envo</h1>
<p>Environment files</p>
<h1>Mac setup</h1>
<ul>
<li>3 finger swipe up and add more "Spaces"</li>
<li>System Preferences -> Keyboard shortcuts -> Mission Control section -> Add shortcuts for switching to all spaces</li>
<li>Install iterm2</li>
<li>Install brew</li>
<li>git For different SSH keys for githib, gitlab, etc, in ~/.ssh/config, add: <pre><code>Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
</code></pre> </li>
<li>VSCode
<ul>
<li>Login with Github</li>
</ul> </li>
</ul>
<h1>Useful one-liners</h1>
<ul>
<li>ffmpeg -i MVI_6451.MOV -s 640x360 Rewa_dance_photosong.mp4</li>
</ul>
+
+
+ yoshiki/yaml-mode
+ 2023-12-24T01:49:30Z
+ tag:github.com,2023-12-24:/yoshiki/yaml-mode
+
+ <p>The emacs major mode for editing files in the YAML data serialization format.</p><hr><p>RECRUITMENTS I have not used emacs and this library for a long time, so I recruit maintainers or collaborators for all yaml-mode users. If you are interested in maintaining or collaborating with this library, please contact me.</p>
<p>NAME yaml-mode - Simple major mode to edit YAML file for emacs</p>
<p>REQUIREMENTS Emacs 24.1</p>
<p>SYNOPSIS To install, just drop this file into a directory in your `load-path' and (optionally) byte-compile it. To automatically handle files ending in '.yml', add something like:</p>
<pre><code>(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
to your .emacs file.
Unlike python-mode, this mode follows the Emacs convention of not
binding the ENTER key to `newline-and-indent'. To get this
behavior, add the key definition to `yaml-mode-hook':
(add-hook 'yaml-mode-hook
'(lambda ()
(define-key yaml-mode-map "\C-m" 'newline-and-indent)))
</code></pre>
<p>DESCRIPTION yaml-mode is major mode for emacs.</p>
<p>INSTALL You can install yaml-mode typing below.</p>
<pre><code> % make
% make install
or
% make PREFIX=/your/home/dir
% make install PREFIX=/your/home/dir
</code></pre>
<p>SETTING see SYNOPSIS.</p>
<p>AUTHOR Yoshiki Kurihara <a href="mailto:kurihara@cpan.org">kurihara@cpan.org</a> Copyright (C) 2010 by Free Software Foundation, Inc.</p>
<pre><code>This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
</code></pre>
+
+
\ No newline at end of file
diff --git a/emberscript/daily/index.xml b/emberscript/daily/index.xml
index 4a0688a3492..c4016efbc23 100644
--- a/emberscript/daily/index.xml
+++ b/emberscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub EmberScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:27Z
+ 2023-12-24T01:32:46Z
Daily Trending of EmberScript in GitHub
\ No newline at end of file
diff --git a/emberscript/weekly/index.xml b/emberscript/weekly/index.xml
new file mode 100644
index 00000000000..5a5816e1b8c
--- /dev/null
+++ b/emberscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub EmberScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:26Z
+ Weekly Trending of EmberScript in GitHub
+
+
\ No newline at end of file
diff --git a/eq/daily/index.xml b/eq/daily/index.xml
index 36ee06bc4b8..43a715c7c09 100644
--- a/eq/daily/index.xml
+++ b/eq/daily/index.xml
@@ -1,7 +1,7 @@
GitHub EQ Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:37Z
+ 2023-12-24T01:32:58Z
Daily Trending of EQ in GitHub
\ No newline at end of file
diff --git a/eq/weekly/index.xml b/eq/weekly/index.xml
new file mode 100644
index 00000000000..59328931768
--- /dev/null
+++ b/eq/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub EQ Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:39Z
+ Weekly Trending of EQ in GitHub
+
+
\ No newline at end of file
diff --git a/erlang/daily/index.xml b/erlang/daily/index.xml
index 0046c2616f7..9fd96124df8 100644
--- a/erlang/daily/index.xml
+++ b/erlang/daily/index.xml
@@ -1,7 +1,28 @@
GitHub Erlang Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:41Z
+ 2023-12-24T01:33:01Z
Daily Trending of Erlang in GitHub
+
+ heroku/canal_lock
+ 2023-12-24T01:33:01Z
+ tag:github.com,2023-12-24:/heroku/canal_lock
+
+ <p>Erlang lock manager for concurrently variable resource numbers</p><hr>
+
+
+ heroku/sdiff
+ 2023-12-24T01:33:01Z
+ tag:github.com,2023-12-24:/heroku/sdiff
+
+ <p>merkle tree-based state replication from master to followers, with a live stream of data</p><hr>
+
+
+ heroku/ranch_proxy_protocol
+ 2023-12-24T01:33:01Z
+ tag:github.com,2023-12-24:/heroku/ranch_proxy_protocol
+
+ <p>PROXY protocol support for ranch</p><hr>
+
\ No newline at end of file
diff --git a/erlang/weekly/index.xml b/erlang/weekly/index.xml
new file mode 100644
index 00000000000..fb87e403755
--- /dev/null
+++ b/erlang/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Erlang Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:42Z
+ Weekly Trending of Erlang in GitHub
+
+
+ happi/theBeamBook
+ 2023-12-24T01:49:42Z
+ tag:github.com,2023-12-24:/happi/theBeamBook
+
+ <p>A description of the Erlang Runtime System ERTS and the virtual Machine BEAM.</p><hr>
+
+
\ No newline at end of file
diff --git a/euphoria/daily/index.xml b/euphoria/daily/index.xml
index 436697e7f98..7318539e134 100644
--- a/euphoria/daily/index.xml
+++ b/euphoria/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Euphoria Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:39Z
+ 2023-12-24T01:32:57Z
Daily Trending of Euphoria in GitHub
\ No newline at end of file
diff --git a/euphoria/weekly/index.xml b/euphoria/weekly/index.xml
new file mode 100644
index 00000000000..bc558dd6b58
--- /dev/null
+++ b/euphoria/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Euphoria Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:38Z
+ Weekly Trending of Euphoria in GitHub
+
+
\ No newline at end of file
diff --git a/f%23/daily/index.xml b/f%23/daily/index.xml
index 2df1b5b0360..fa124a5693e 100644
--- a/f%23/daily/index.xml
+++ b/f%23/daily/index.xml
@@ -1,14 +1,7 @@
GitHub F# Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:46Z
+ 2023-12-24T01:33:05Z
Daily Trending of F# in GitHub
-
- smies/bitPrice
- 2023-12-23T01:28:46Z
- tag:github.com,2023-12-23:/smies/bitPrice
-
- <p></p><hr>
-
\ No newline at end of file
diff --git a/f%23/weekly/index.xml b/f%23/weekly/index.xml
new file mode 100644
index 00000000000..5c4aa3593af
--- /dev/null
+++ b/f%23/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub F# Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:45Z
+ Weekly Trending of F# in GitHub
+
+
+ razzmatazz/csharp-language-server
+ 2023-12-24T01:49:45Z
+ tag:github.com,2023-12-24:/razzmatazz/csharp-language-server
+
+ <p>Roslyn-based LSP language server for C#</p><hr><h1>Description</h1>
<p>This is a hacky Roslyn-based LSP server for C#, as an alternative to <a href="https://github.com/OmniSharp/omnisharp-roslyn">omnisharp-roslyn</a>.</p>
<p><code>csharp-ls</code> requires .NET 7 SDK to be installed. However it has been reported to work with projects using older versions of dotnet SDK, including .NET Core 3, .NET Framework 4.8 and possibly older ones too as it uses the standard Roslyn/MSBuild libs that Visual Studio & omnisharp does.</p>
<p>See <a href="https://raw.githubusercontent.com/razzmatazz/csharp-language-server/master/CHANGELOG.md">CHANGELOG.md</a> for the list of recent improvements/fixes.</p>
<h1>Acknowledgements</h1>
<ul>
<li>csharp-ls is not affiliated with Microsoft Corp;</li>
<li>csharp-ls uses LSP interface from <a href="https://github.com/ionide/LanguageServerProtocol">Ionide.LanguageServerProtocol</a>;</li>
<li>csharp-ls uses <a href="https://github.com/dotnet/roslyn">Roslyn</a> to parse and update code; Roslyn maps really nicely to LSP w/relatively little impedance mismatch;</li>
<li>csharp-ls uses <a href="https://github.com/icsharpcode/ILSpy">ILSpy/ICSharpCode.Decompiler</a> to decompile types in assemblies to C# source.</li>
</ul>
<h1>Installation</h1>
<p><code>dotnet tool install --global csharp-ls</code></p>
<p>See <a href="https://www.nuget.org/packages/csharp-ls/">csharp-ls nuget page</a></p>
<h1>Settings</h1>
<ul>
<li><code>csharp.solution</code> - solution to load, optional</li>
</ul>
<h1>Clients/Editor plugins</h1>
<p><code>csharp-ls</code> implements the standard LSP protocol to interact with your editor. However there are some features that need a non-standard implementation and this is where editor-specific plugins can be helpful.</p>
<h2>Emacs</h2>
<h3>emacs/lsp-mode</h3>
<p>Supports automatic installation, go-to-metatada (can view code from nuget/compiled dlls) and some additional features.</p>
<p>See <a href="https://github.com/emacs-lsp/lsp-mode">emacs/lsp-mode</a>.</p>
<h2>Visual Studio Code</h2>
<h3>vytautassurvila/vscode-csharp-ls</h3>
<ul>
<li>Supports code decompilation from metadata</li>
</ul>
<p>See <a href="https://marketplace.visualstudio.com/items?itemName=vytautassurvila.csharp-ls">csharp-ls</a> and <a href="https://github.com/vytautassurvila/vscode-csharp-ls">vscode-csharp-ls @ github</a>.</p>
<h3>statiolake/vscode-csharp-ls</h3>
<p>See <a href="https://marketplace.visualstudio.com/items?itemName=statiolake.vscode-csharp-ls">vscode-csharp-ls</a>.</p>
<h1>Building</h1>
<h2>On Linux/macOS</h2>
<pre><code>$ (cd src && dotnet build)
</code></pre>
<h1>Features</h1>
<ul>
<li>symbol rename;</li>
<li>code refactorings from roslyn;</li>
<li>go-to-definition;</li>
<li>find references;</li>
<li>document/workspace symbol search;</li>
<li><code>textDocument/documentHighlight</code> support:
<ul>
<li>highlighting other symbol references in the document on hover;</li>
</ul> </li>
<li><code>codeAction/resolve</code> support for better performance when invoking code actions;</li>
<li>semantic token support (thanks to @tcx4c70);</li>
<li>inlay hint support (thanks to @tcx4c70);</li>
<li>go-to-definition in metadata support (needs integration from your LSP client).</li>
</ul>
<h1>TODO list</h1>
<ul>
<li>check we're not doing lense stuff or other funny things on metadata code (emacs-lsp/lsp-mode issue?);</li>
<li>find-refs is blocking r/w operations, request scheduling needs smarter refactoring;
<ul>
<li>should we cancel existing ones? -- where cancellable? how to know?</li>
</ul> </li>
<li>support for pull diagnostics (lsp 3.17);</li>
<li>go-to-def in metadata does not work for Attribute as those have Attribute suffix;</li>
<li>progress support;</li>
<li>properly escape docxml text, e.g. backquote is a special character in markdown;</li>
<li>selection range provider</li>
<li>ability to run tests / test browser support like fsac has?</li>
<li>razorls integration (server-side)</li>
<li>analyzer support</li>
<li>code generator support</li>
<li>vscode plugin</li>
</ul>
<h1>FAQ</h1>
<h2>decompile for your editor , with the example of neovim</h2>
<h3>api</h3>
<p>The api is "csharp/metadata", in neovim ,you can request it like</p>
<pre><code class="language-lua"> local result, err = client.request_sync("csharp/metadata", params, 10000)
</code></pre>
<h4>sender</h4>
<p>You need to send a uri, it is like</p>
<p><strong>csharp:/metadata/projects/trainning2/assemblies/System.Console/symbols/System.Console.cs</strong></p>
<p>In neovim, it will be result(s) from vim.lsp.handles["textDocument/definition"]</p>
<p>and the key of uri is the key,</p>
<p>The key to send is like</p>
<pre><code class="language-lua">local params = {
timeout = 5000,
textDocument = {
uri = uri,
}
}
</code></pre>
<p>The key of textDocument is needed. And timeout is just for neovim. It is the same if is expressed by json.</p>
<h3>receiver</h3>
<p>The object received is like</p>
<pre><code class="language-lua">{
projectName = "csharp-test",
assemblyName = "System.Runtime",
symbolName = "System.String",
source = "using System.Buffers;\n ...."
}
</code></pre>
<p>And In neovim, You receive the "result" above, you can get the decompile source from</p>
<pre><code class="language-lua">
local result, err = client.request_sync("csharp/metadata", params, 10000)
local source
if not err then
source = result.result.source
end
</code></pre>
<p>And there is a plugin of neovim for you to decompile it.</p>
<p><a href="https://github.com/chen244/csharpls-extended-lsp.nvim">csharpls-extended-lsp.nvim</a></p>
+
+
\ No newline at end of file
diff --git a/f*/daily/index.xml b/f*/daily/index.xml
index 59bc0a57c27..04fc5dd8825 100644
--- a/f*/daily/index.xml
+++ b/f*/daily/index.xml
@@ -1,7 +1,7 @@
GitHub F* Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:46Z
+ 2023-12-24T01:33:02Z
Daily Trending of F* in GitHub
\ No newline at end of file
diff --git a/f*/weekly/index.xml b/f*/weekly/index.xml
new file mode 100644
index 00000000000..2a7603cc343
--- /dev/null
+++ b/f*/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub F* Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:45Z
+ Weekly Trending of F* in GitHub
+
+
\ No newline at end of file
diff --git a/factor/daily/index.xml b/factor/daily/index.xml
index 55e6c15074e..a24a6a1c64e 100644
--- a/factor/daily/index.xml
+++ b/factor/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Factor Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:45Z
+ 2023-12-24T01:33:04Z
Daily Trending of Factor in GitHub
\ No newline at end of file
diff --git a/factor/weekly/index.xml b/factor/weekly/index.xml
new file mode 100644
index 00000000000..71f69daeb6c
--- /dev/null
+++ b/factor/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Factor Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:43Z
+ Weekly Trending of Factor in GitHub
+
+
\ No newline at end of file
diff --git a/fancy/daily/index.xml b/fancy/daily/index.xml
index 4d2fd541f56..4485e53a388 100644
--- a/fancy/daily/index.xml
+++ b/fancy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Fancy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:43Z
+ 2023-12-24T01:33:03Z
Daily Trending of Fancy in GitHub
\ No newline at end of file
diff --git a/fancy/weekly/index.xml b/fancy/weekly/index.xml
new file mode 100644
index 00000000000..86640838779
--- /dev/null
+++ b/fancy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Fancy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:44Z
+ Weekly Trending of Fancy in GitHub
+
+
\ No newline at end of file
diff --git a/fantom/daily/index.xml b/fantom/daily/index.xml
index 80b6112152a..9857a3ad90f 100644
--- a/fantom/daily/index.xml
+++ b/fantom/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Fantom Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:47Z
+ 2023-12-24T01:33:07Z
Daily Trending of Fantom in GitHub
\ No newline at end of file
diff --git a/fantom/weekly/index.xml b/fantom/weekly/index.xml
new file mode 100644
index 00000000000..c41da6cbbd2
--- /dev/null
+++ b/fantom/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Fantom Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:47Z
+ Weekly Trending of Fantom in GitHub
+
+
\ No newline at end of file
diff --git a/faust/daily/index.xml b/faust/daily/index.xml
index decd87aebae..798e164c5c0 100644
--- a/faust/daily/index.xml
+++ b/faust/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Faust Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:50Z
+ 2023-12-24T01:33:09Z
Daily Trending of Faust in GitHub
\ No newline at end of file
diff --git a/faust/weekly/index.xml b/faust/weekly/index.xml
new file mode 100644
index 00000000000..8188d649ae4
--- /dev/null
+++ b/faust/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Faust Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:48Z
+ Weekly Trending of Faust in GitHub
+
+
\ No newline at end of file
diff --git a/fennel/daily/index.xml b/fennel/daily/index.xml
index cbef1b16c13..f61d598fef7 100644
--- a/fennel/daily/index.xml
+++ b/fennel/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Fennel Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:49Z
+ 2023-12-24T01:33:10Z
Daily Trending of Fennel in GitHub
\ No newline at end of file
diff --git a/fennel/weekly/index.xml b/fennel/weekly/index.xml
new file mode 100644
index 00000000000..4a5869f8677
--- /dev/null
+++ b/fennel/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Fennel Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:50Z
+ Weekly Trending of Fennel in GitHub
+
+
\ No newline at end of file
diff --git a/figlet-font/daily/index.xml b/figlet-font/daily/index.xml
index b5c9b10b049..a440217dc91 100644
--- a/figlet-font/daily/index.xml
+++ b/figlet-font/daily/index.xml
@@ -1,7 +1,7 @@
GitHub FIGlet Font Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:48Z
+ 2023-12-24T01:33:08Z
Daily Trending of FIGlet Font in GitHub
\ No newline at end of file
diff --git a/figlet-font/weekly/index.xml b/figlet-font/weekly/index.xml
new file mode 100644
index 00000000000..9fb71bcd8a3
--- /dev/null
+++ b/figlet-font/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub FIGlet Font Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:49Z
+ Weekly Trending of FIGlet Font in GitHub
+
+
\ No newline at end of file
diff --git a/filebench-wml/daily/index.xml b/filebench-wml/daily/index.xml
index 42f93e8ff7c..8efd17937eb 100644
--- a/filebench-wml/daily/index.xml
+++ b/filebench-wml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Filebench WML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:52Z
+ 2023-12-24T01:33:11Z
Daily Trending of Filebench WML in GitHub
\ No newline at end of file
diff --git a/filebench-wml/weekly/index.xml b/filebench-wml/weekly/index.xml
new file mode 100644
index 00000000000..e4cf626c499
--- /dev/null
+++ b/filebench-wml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Filebench WML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:53Z
+ Weekly Trending of Filebench WML in GitHub
+
+
\ No newline at end of file
diff --git a/filterscript/daily/index.xml b/filterscript/daily/index.xml
index 5feafe29525..dfabd29004f 100644
--- a/filterscript/daily/index.xml
+++ b/filterscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Filterscript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:53Z
+ 2023-12-24T01:33:14Z
Daily Trending of Filterscript in GitHub
\ No newline at end of file
diff --git a/filterscript/weekly/index.xml b/filterscript/weekly/index.xml
new file mode 100644
index 00000000000..9e1353d5a3c
--- /dev/null
+++ b/filterscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Filterscript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:54Z
+ Weekly Trending of Filterscript in GitHub
+
+
\ No newline at end of file
diff --git a/fish/daily/index.xml b/fish/daily/index.xml
index eea1dbbc0ac..79d7f901434 100644
--- a/fish/daily/index.xml
+++ b/fish/daily/index.xml
@@ -1,7 +1,7 @@
GitHub fish Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:51Z
+ 2023-12-24T01:33:12Z
Daily Trending of fish in GitHub
\ No newline at end of file
diff --git a/fish/weekly/index.xml b/fish/weekly/index.xml
new file mode 100644
index 00000000000..40a0f778898
--- /dev/null
+++ b/fish/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub fish Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:51Z
+ Weekly Trending of fish in GitHub
+
+
\ No newline at end of file
diff --git a/fluent/daily/index.xml b/fluent/daily/index.xml
index 601c66fbf93..62cd651ba82 100644
--- a/fluent/daily/index.xml
+++ b/fluent/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Fluent Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:54Z
+ 2023-12-24T01:33:13Z
Daily Trending of Fluent in GitHub
\ No newline at end of file
diff --git a/fluent/weekly/index.xml b/fluent/weekly/index.xml
new file mode 100644
index 00000000000..44d1ede6bde
--- /dev/null
+++ b/fluent/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Fluent Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:52Z
+ Weekly Trending of Fluent in GitHub
+
+
\ No newline at end of file
diff --git a/flux/daily/index.xml b/flux/daily/index.xml
index 5b2b09136f1..93dc50105fa 100644
--- a/flux/daily/index.xml
+++ b/flux/daily/index.xml
@@ -1,7 +1,7 @@
GitHub FLUX Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:56Z
+ 2023-12-24T01:33:15Z
Daily Trending of FLUX in GitHub
\ No newline at end of file
diff --git a/flux/weekly/index.xml b/flux/weekly/index.xml
new file mode 100644
index 00000000000..a24077cc2cf
--- /dev/null
+++ b/flux/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub FLUX Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:55Z
+ Weekly Trending of FLUX in GitHub
+
+
\ No newline at end of file
diff --git a/formatted/daily/index.xml b/formatted/daily/index.xml
index d6e84f529c2..8250e2de13d 100644
--- a/formatted/daily/index.xml
+++ b/formatted/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Formatted Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:55Z
+ 2023-12-24T01:33:16Z
Daily Trending of Formatted in GitHub
\ No newline at end of file
diff --git a/formatted/weekly/index.xml b/formatted/weekly/index.xml
new file mode 100644
index 00000000000..a6c65a9b52a
--- /dev/null
+++ b/formatted/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Formatted Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:57Z
+ Weekly Trending of Formatted in GitHub
+
+
\ No newline at end of file
diff --git a/forth/daily/index.xml b/forth/daily/index.xml
index ef5be64b186..8ee88ffc9d4 100644
--- a/forth/daily/index.xml
+++ b/forth/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Forth Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:28:57Z
+ 2023-12-24T01:33:16Z
Daily Trending of Forth in GitHub
\ No newline at end of file
diff --git a/forth/weekly/index.xml b/forth/weekly/index.xml
new file mode 100644
index 00000000000..89b75efdd89
--- /dev/null
+++ b/forth/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Forth Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:56Z
+ Weekly Trending of Forth in GitHub
+
+
\ No newline at end of file
diff --git a/fortran-free-form/daily/index.xml b/fortran-free-form/daily/index.xml
index 27fb3418266..0335f287a6b 100644
--- a/fortran-free-form/daily/index.xml
+++ b/fortran-free-form/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Fortran Free Form Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:01Z
+ 2023-12-24T01:33:20Z
Daily Trending of Fortran Free Form in GitHub
\ No newline at end of file
diff --git a/fortran-free-form/weekly/index.xml b/fortran-free-form/weekly/index.xml
new file mode 100644
index 00000000000..43cd617c6e8
--- /dev/null
+++ b/fortran-free-form/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Fortran Free Form Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:00Z
+ Weekly Trending of Fortran Free Form in GitHub
+
+
\ No newline at end of file
diff --git a/fortran/daily/index.xml b/fortran/daily/index.xml
index fb3967fd855..a26c6b8a177 100644
--- a/fortran/daily/index.xml
+++ b/fortran/daily/index.xml
@@ -1,14 +1,14 @@
GitHub Fortran Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:00Z
+ 2023-12-24T01:33:19Z
Daily Trending of Fortran in GitHub
- ramoncardias/sd_mc_workshop
- 2023-12-23T01:29:00Z
- tag:github.com,2023-12-23:/ramoncardias/sd_mc_workshop
-
- <p>Workshop Atomistic Spin Dynamics: Fundamentals and Applications</p><hr>
+ NOAA-CEFI-Regional-Ocean-Modeling/ocean_BGC
+ 2023-12-24T01:33:19Z
+ tag:github.com,2023-12-24:/NOAA-CEFI-Regional-Ocean-Modeling/ocean_BGC
+
+ <p></p><hr>
\ No newline at end of file
diff --git a/fortran/weekly/index.xml b/fortran/weekly/index.xml
new file mode 100644
index 00000000000..3da587d0f45
--- /dev/null
+++ b/fortran/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Fortran Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:49:59Z
+ Weekly Trending of Fortran in GitHub
+
+
+ ESMCI/cprnc
+ 2023-12-24T01:49:59Z
+ tag:github.com,2023-12-24:/ESMCI/cprnc
+
+ <p>Fortran Utility to compare netcdf files.</p><hr>
+
+
+ Goddard-Fortran-Ecosystem/pFUnit
+ 2023-12-24T01:49:59Z
+ tag:github.com,2023-12-24:/Goddard-Fortran-Ecosystem/pFUnit
+
+ <p>Parallel Fortran Unit Testing Framework</p><hr>
+
+
\ No newline at end of file
diff --git a/freebasic/daily/index.xml b/freebasic/daily/index.xml
index cab2537b3fc..c5fa6a2ff27 100644
--- a/freebasic/daily/index.xml
+++ b/freebasic/daily/index.xml
@@ -1,7 +1,7 @@
GitHub FreeBasic Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:04Z
+ 2023-12-24T01:33:21Z
Daily Trending of FreeBasic in GitHub
\ No newline at end of file
diff --git a/freebasic/weekly/index.xml b/freebasic/weekly/index.xml
new file mode 100644
index 00000000000..88a1f19949d
--- /dev/null
+++ b/freebasic/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub FreeBasic Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:00Z
+ Weekly Trending of FreeBasic in GitHub
+
+
\ No newline at end of file
diff --git a/freemarker/daily/index.xml b/freemarker/daily/index.xml
index ce72bbe860c..5f8aa97e253 100644
--- a/freemarker/daily/index.xml
+++ b/freemarker/daily/index.xml
@@ -1,7 +1,7 @@
GitHub FreeMarker Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:03Z
+ 2023-12-24T01:33:23Z
Daily Trending of FreeMarker in GitHub
\ No newline at end of file
diff --git a/freemarker/weekly/index.xml b/freemarker/weekly/index.xml
new file mode 100644
index 00000000000..102a380d5e8
--- /dev/null
+++ b/freemarker/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub FreeMarker Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:02Z
+ Weekly Trending of FreeMarker in GitHub
+
+
+ folio-org/folio-keycloak
+ 2023-12-24T01:50:02Z
+ tag:github.com,2023-12-24:/folio-org/folio-keycloak
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/frege/daily/index.xml b/frege/daily/index.xml
index 09bc1aa135a..369a1a053e8 100644
--- a/frege/daily/index.xml
+++ b/frege/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Frege Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:02Z
+ 2023-12-24T01:33:22Z
Daily Trending of Frege in GitHub
\ No newline at end of file
diff --git a/frege/weekly/index.xml b/frege/weekly/index.xml
new file mode 100644
index 00000000000..ec288511208
--- /dev/null
+++ b/frege/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Frege Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:01Z
+ Weekly Trending of Frege in GitHub
+
+
\ No newline at end of file
diff --git a/futhark/daily/index.xml b/futhark/daily/index.xml
index ff48b04ac38..fb1c49d2eba 100644
--- a/futhark/daily/index.xml
+++ b/futhark/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Futhark Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:06Z
+ 2023-12-24T01:33:24Z
Daily Trending of Futhark in GitHub
\ No newline at end of file
diff --git a/futhark/weekly/index.xml b/futhark/weekly/index.xml
new file mode 100644
index 00000000000..1171b2d686f
--- /dev/null
+++ b/futhark/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Futhark Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:04Z
+ Weekly Trending of Futhark in GitHub
+
+
\ No newline at end of file
diff --git a/g-code/daily/index.xml b/g-code/daily/index.xml
index c93b74f74b4..2f3c401c6f0 100644
--- a/g-code/daily/index.xml
+++ b/g-code/daily/index.xml
@@ -1,7 +1,7 @@
GitHub G-code Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:08Z
+ 2023-12-24T01:33:26Z
Daily Trending of G-code in GitHub
\ No newline at end of file
diff --git a/g-code/weekly/index.xml b/g-code/weekly/index.xml
new file mode 100644
index 00000000000..bb2b8907811
--- /dev/null
+++ b/g-code/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub G-code Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:05Z
+ Weekly Trending of G-code in GitHub
+
+
\ No newline at end of file
diff --git a/game-maker-language/daily/index.xml b/game-maker-language/daily/index.xml
index 2458d6fafed..1a4cc7ba348 100644
--- a/game-maker-language/daily/index.xml
+++ b/game-maker-language/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Game Maker Language Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:05Z
+ 2023-12-24T01:33:27Z
Daily Trending of Game Maker Language in GitHub
\ No newline at end of file
diff --git a/game-maker-language/weekly/index.xml b/game-maker-language/weekly/index.xml
new file mode 100644
index 00000000000..3ad8801befd
--- /dev/null
+++ b/game-maker-language/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Game Maker Language Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:06Z
+ Weekly Trending of Game Maker Language in GitHub
+
+
\ No newline at end of file
diff --git a/gaml/daily/index.xml b/gaml/daily/index.xml
index 6629219d110..eb8aaf4a02d 100644
--- a/gaml/daily/index.xml
+++ b/gaml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GAML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:07Z
+ 2023-12-24T01:33:25Z
Daily Trending of GAML in GitHub
\ No newline at end of file
diff --git a/gaml/weekly/index.xml b/gaml/weekly/index.xml
new file mode 100644
index 00000000000..f4f0fcd34b1
--- /dev/null
+++ b/gaml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GAML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:03Z
+ Weekly Trending of GAML in GitHub
+
+
\ No newline at end of file
diff --git a/gams/daily/index.xml b/gams/daily/index.xml
index 00370184f46..8a9c4a23b71 100644
--- a/gams/daily/index.xml
+++ b/gams/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GAMS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:11Z
+ 2023-12-24T01:33:28Z
Daily Trending of GAMS in GitHub
\ No newline at end of file
diff --git a/gams/weekly/index.xml b/gams/weekly/index.xml
new file mode 100644
index 00000000000..2f66169a9ce
--- /dev/null
+++ b/gams/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GAMS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:07Z
+ Weekly Trending of GAMS in GitHub
+
+
\ No newline at end of file
diff --git a/gap/daily/index.xml b/gap/daily/index.xml
index 0b071afe3e9..c8f75d0efe4 100644
--- a/gap/daily/index.xml
+++ b/gap/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GAP Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:12Z
+ 2023-12-24T01:33:29Z
Daily Trending of GAP in GitHub
\ No newline at end of file
diff --git a/gap/weekly/index.xml b/gap/weekly/index.xml
new file mode 100644
index 00000000000..304ad020c9b
--- /dev/null
+++ b/gap/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GAP Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:09Z
+ Weekly Trending of GAP in GitHub
+
+
\ No newline at end of file
diff --git a/gcc-machine-description/daily/index.xml b/gcc-machine-description/daily/index.xml
index d2f71cc5139..2c24ea904ee 100644
--- a/gcc-machine-description/daily/index.xml
+++ b/gcc-machine-description/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GCC Machine Description Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:11Z
+ 2023-12-24T01:33:30Z
Daily Trending of GCC Machine Description in GitHub
\ No newline at end of file
diff --git a/gcc-machine-description/weekly/index.xml b/gcc-machine-description/weekly/index.xml
new file mode 100644
index 00000000000..7a828e38857
--- /dev/null
+++ b/gcc-machine-description/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GCC Machine Description Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:08Z
+ Weekly Trending of GCC Machine Description in GitHub
+
+
\ No newline at end of file
diff --git a/gdb/daily/index.xml b/gdb/daily/index.xml
index b8414381c00..34591801ada 100644
--- a/gdb/daily/index.xml
+++ b/gdb/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GDB Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:10Z
+ 2023-12-24T01:33:30Z
Daily Trending of GDB in GitHub
\ No newline at end of file
diff --git a/gdb/weekly/index.xml b/gdb/weekly/index.xml
new file mode 100644
index 00000000000..0956300aed0
--- /dev/null
+++ b/gdb/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GDB Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:10Z
+ Weekly Trending of GDB in GitHub
+
+
\ No newline at end of file
diff --git a/gdscript/daily/index.xml b/gdscript/daily/index.xml
index a03d5fd46d4..a1dcee727b1 100644
--- a/gdscript/daily/index.xml
+++ b/gdscript/daily/index.xml
@@ -1,14 +1,7 @@
GitHub GDScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:18Z
+ 2023-12-24T01:33:35Z
Daily Trending of GDScript in GitHub
-
- Saplings-Projects/1M_sub
- 2023-12-23T01:29:18Z
- tag:github.com,2023-12-23:/Saplings-Projects/1M_sub
-
- <p>Game project for Fauna's 1M sub : a dungeon crawler</p><hr>
-
\ No newline at end of file
diff --git a/gdscript/weekly/index.xml b/gdscript/weekly/index.xml
new file mode 100644
index 00000000000..c341618be03
--- /dev/null
+++ b/gdscript/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub GDScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:15Z
+ Weekly Trending of GDScript in GitHub
+
+
+ Saplings-Projects/1M_sub
+ 2023-12-24T01:50:15Z
+ tag:github.com,2023-12-24:/Saplings-Projects/1M_sub
+
+ <p>Game project for Fauna's 1M sub : a dungeon crawler</p><hr>
+
+
+ Nitwel/Immersive-Home
+ 2023-12-24T01:50:15Z
+ tag:github.com,2023-12-24:/Nitwel/Immersive-Home
+
+ <p>Mixed reality experience for interacting with your smart home in a new dimension.</p><hr>
+
+
\ No newline at end of file
diff --git a/gedcom/daily/index.xml b/gedcom/daily/index.xml
index 4f8fd3f2fa9..7fe214376c6 100644
--- a/gedcom/daily/index.xml
+++ b/gedcom/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GEDCOM Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:14Z
+ 2023-12-24T01:33:32Z
Daily Trending of GEDCOM in GitHub
\ No newline at end of file
diff --git a/gedcom/weekly/index.xml b/gedcom/weekly/index.xml
new file mode 100644
index 00000000000..3a08a306879
--- /dev/null
+++ b/gedcom/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GEDCOM Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:12Z
+ Weekly Trending of GEDCOM in GitHub
+
+
\ No newline at end of file
diff --git a/gemfile.lock/daily/index.xml b/gemfile.lock/daily/index.xml
index f5e3deabed3..5828bf0d951 100644
--- a/gemfile.lock/daily/index.xml
+++ b/gemfile.lock/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gemfile.lock Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:15Z
+ 2023-12-24T01:33:32Z
Daily Trending of Gemfile.lock in GitHub
\ No newline at end of file
diff --git a/gemfile.lock/weekly/index.xml b/gemfile.lock/weekly/index.xml
new file mode 100644
index 00000000000..a0564ffc8d6
--- /dev/null
+++ b/gemfile.lock/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gemfile.lock Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:13Z
+ Weekly Trending of Gemfile.lock in GitHub
+
+
\ No newline at end of file
diff --git a/genie/daily/index.xml b/genie/daily/index.xml
index 77aecab3b8f..8c765218f7f 100644
--- a/genie/daily/index.xml
+++ b/genie/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Genie Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:19Z
+ 2023-12-24T01:33:37Z
Daily Trending of Genie in GitHub
\ No newline at end of file
diff --git a/genie/weekly/index.xml b/genie/weekly/index.xml
new file mode 100644
index 00000000000..d7e98860187
--- /dev/null
+++ b/genie/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Genie Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:18Z
+ Weekly Trending of Genie in GitHub
+
+
\ No newline at end of file
diff --git a/genshi/daily/index.xml b/genshi/daily/index.xml
index 218d0d19957..3299d3651d3 100644
--- a/genshi/daily/index.xml
+++ b/genshi/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Genshi Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:21Z
+ 2023-12-24T01:33:38Z
Daily Trending of Genshi in GitHub
\ No newline at end of file
diff --git a/genshi/weekly/index.xml b/genshi/weekly/index.xml
new file mode 100644
index 00000000000..a726de8b226
--- /dev/null
+++ b/genshi/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Genshi Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:17Z
+ Weekly Trending of Genshi in GitHub
+
+
\ No newline at end of file
diff --git a/gentoo-ebuild/daily/index.xml b/gentoo-ebuild/daily/index.xml
index 7e6115d562a..4b93e7ff728 100644
--- a/gentoo-ebuild/daily/index.xml
+++ b/gentoo-ebuild/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gentoo Ebuild Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:24Z
+ 2023-12-24T01:33:42Z
Daily Trending of Gentoo Ebuild in GitHub
\ No newline at end of file
diff --git a/gentoo-ebuild/weekly/index.xml b/gentoo-ebuild/weekly/index.xml
new file mode 100644
index 00000000000..10543d670d1
--- /dev/null
+++ b/gentoo-ebuild/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gentoo Ebuild Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:20Z
+ Weekly Trending of Gentoo Ebuild in GitHub
+
+
\ No newline at end of file
diff --git a/gentoo-eclass/daily/index.xml b/gentoo-eclass/daily/index.xml
index 2226b2b6afe..a5e709591e8 100644
--- a/gentoo-eclass/daily/index.xml
+++ b/gentoo-eclass/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gentoo Eclass Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:26Z
+ 2023-12-24T01:33:43Z
Daily Trending of Gentoo Eclass in GitHub
\ No newline at end of file
diff --git a/gentoo-eclass/weekly/index.xml b/gentoo-eclass/weekly/index.xml
new file mode 100644
index 00000000000..fe3870e7551
--- /dev/null
+++ b/gentoo-eclass/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gentoo Eclass Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:21Z
+ Weekly Trending of Gentoo Eclass in GitHub
+
+
\ No newline at end of file
diff --git a/gerber-image/daily/index.xml b/gerber-image/daily/index.xml
index c5775d265ae..e9c35d8ae25 100644
--- a/gerber-image/daily/index.xml
+++ b/gerber-image/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gerber Image Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:23Z
+ 2023-12-24T01:33:41Z
Daily Trending of Gerber Image in GitHub
\ No newline at end of file
diff --git a/gerber-image/weekly/index.xml b/gerber-image/weekly/index.xml
new file mode 100644
index 00000000000..1454356115a
--- /dev/null
+++ b/gerber-image/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gerber Image Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:22Z
+ Weekly Trending of Gerber Image in GitHub
+
+
\ No newline at end of file
diff --git a/gettext-catalog/daily/index.xml b/gettext-catalog/daily/index.xml
index fc29d64451c..4ad4363e2e6 100644
--- a/gettext-catalog/daily/index.xml
+++ b/gettext-catalog/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gettext Catalog Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:25Z
+ 2023-12-24T01:33:40Z
Daily Trending of Gettext Catalog in GitHub
\ No newline at end of file
diff --git a/gettext-catalog/weekly/index.xml b/gettext-catalog/weekly/index.xml
new file mode 100644
index 00000000000..d269bf53ce5
--- /dev/null
+++ b/gettext-catalog/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gettext Catalog Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:21Z
+ Weekly Trending of Gettext Catalog in GitHub
+
+
\ No newline at end of file
diff --git a/gherkin/daily/index.xml b/gherkin/daily/index.xml
index 5437495d290..bf950256e79 100644
--- a/gherkin/daily/index.xml
+++ b/gherkin/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gherkin Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:30Z
+ 2023-12-24T01:33:44Z
Daily Trending of Gherkin in GitHub
\ No newline at end of file
diff --git a/gherkin/weekly/index.xml b/gherkin/weekly/index.xml
new file mode 100644
index 00000000000..ce25a20bd75
--- /dev/null
+++ b/gherkin/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gherkin Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:25Z
+ Weekly Trending of Gherkin in GitHub
+
+
\ No newline at end of file
diff --git a/git-attributes/daily/index.xml b/git-attributes/daily/index.xml
index b46890970e4..d88fe19a392 100644
--- a/git-attributes/daily/index.xml
+++ b/git-attributes/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Git Attributes Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:29Z
+ 2023-12-24T01:33:47Z
Daily Trending of Git Attributes in GitHub
\ No newline at end of file
diff --git a/git-attributes/weekly/index.xml b/git-attributes/weekly/index.xml
new file mode 100644
index 00000000000..50a9cdee251
--- /dev/null
+++ b/git-attributes/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Git Attributes Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:26Z
+ Weekly Trending of Git Attributes in GitHub
+
+
\ No newline at end of file
diff --git a/git-config/daily/index.xml b/git-config/daily/index.xml
index 9d005717dff..555a190acad 100644
--- a/git-config/daily/index.xml
+++ b/git-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Git Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:27Z
+ 2023-12-24T01:33:46Z
Daily Trending of Git Config in GitHub
\ No newline at end of file
diff --git a/git-config/weekly/index.xml b/git-config/weekly/index.xml
new file mode 100644
index 00000000000..8a250ad0919
--- /dev/null
+++ b/git-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Git Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:24Z
+ Weekly Trending of Git Config in GitHub
+
+
\ No newline at end of file
diff --git a/gleam/daily/index.xml b/gleam/daily/index.xml
index fe0f886ee27..b132e90fdc9 100644
--- a/gleam/daily/index.xml
+++ b/gleam/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Gleam Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:32Z
+ 2023-12-24T01:33:50Z
Daily Trending of Gleam in GitHub
+
+ lustre-labs/lustre
+ 2023-12-24T01:33:50Z
+ tag:github.com,2023-12-24:/lustre-labs/lustre
+
+ <p>A playground for building creative web apps – powered by Gleam.</p><hr>
+
\ No newline at end of file
diff --git a/gleam/weekly/index.xml b/gleam/weekly/index.xml
new file mode 100644
index 00000000000..cc61a2e6f13
--- /dev/null
+++ b/gleam/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gleam Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:27Z
+ Weekly Trending of Gleam in GitHub
+
+
\ No newline at end of file
diff --git a/glsl/daily/index.xml b/glsl/daily/index.xml
index 7b54a0840f0..8f42bf7e9b7 100644
--- a/glsl/daily/index.xml
+++ b/glsl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GLSL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:34Z
+ 2023-12-24T01:33:49Z
Daily Trending of GLSL in GitHub
\ No newline at end of file
diff --git a/glsl/weekly/index.xml b/glsl/weekly/index.xml
new file mode 100644
index 00000000000..8b4d9718e4b
--- /dev/null
+++ b/glsl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GLSL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:31Z
+ Weekly Trending of GLSL in GitHub
+
+
\ No newline at end of file
diff --git a/glyph-bitmap-distribution-format/daily/index.xml b/glyph-bitmap-distribution-format/daily/index.xml
index 2a4835fa715..56e5136f609 100644
--- a/glyph-bitmap-distribution-format/daily/index.xml
+++ b/glyph-bitmap-distribution-format/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Glyph Bitmap Distribution Format Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:37Z
+ 2023-12-24T01:33:54Z
Daily Trending of Glyph Bitmap Distribution Format in GitHub
\ No newline at end of file
diff --git a/glyph-bitmap-distribution-format/weekly/index.xml b/glyph-bitmap-distribution-format/weekly/index.xml
new file mode 100644
index 00000000000..306056004e2
--- /dev/null
+++ b/glyph-bitmap-distribution-format/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Glyph Bitmap Distribution Format Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:32Z
+ Weekly Trending of Glyph Bitmap Distribution Format in GitHub
+
+
\ No newline at end of file
diff --git a/glyph/daily/index.xml b/glyph/daily/index.xml
index f3fa03e0967..3c7390d5d0a 100644
--- a/glyph/daily/index.xml
+++ b/glyph/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Glyph Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:31Z
+ 2023-12-24T01:33:48Z
Daily Trending of Glyph in GitHub
\ No newline at end of file
diff --git a/glyph/weekly/index.xml b/glyph/weekly/index.xml
new file mode 100644
index 00000000000..cc4401e935f
--- /dev/null
+++ b/glyph/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Glyph Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:28Z
+ Weekly Trending of Glyph in GitHub
+
+
\ No newline at end of file
diff --git a/gn/daily/index.xml b/gn/daily/index.xml
index 9f17035347f..cc6dd334382 100644
--- a/gn/daily/index.xml
+++ b/gn/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GN Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:35Z
+ 2023-12-24T01:33:52Z
Daily Trending of GN in GitHub
\ No newline at end of file
diff --git a/gn/weekly/index.xml b/gn/weekly/index.xml
new file mode 100644
index 00000000000..848e0fe39d9
--- /dev/null
+++ b/gn/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GN Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:34Z
+ Weekly Trending of GN in GitHub
+
+
\ No newline at end of file
diff --git a/gnuplot/daily/index.xml b/gnuplot/daily/index.xml
index 8441882b327..a253e9e1e88 100644
--- a/gnuplot/daily/index.xml
+++ b/gnuplot/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gnuplot Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:36Z
+ 2023-12-24T01:33:53Z
Daily Trending of Gnuplot in GitHub
\ No newline at end of file
diff --git a/gnuplot/weekly/index.xml b/gnuplot/weekly/index.xml
new file mode 100644
index 00000000000..79fbda6eb7b
--- /dev/null
+++ b/gnuplot/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gnuplot Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:33Z
+ Weekly Trending of Gnuplot in GitHub
+
+
\ No newline at end of file
diff --git a/go-checksums/daily/index.xml b/go-checksums/daily/index.xml
index c940871cb3a..b3e103c116f 100644
--- a/go-checksums/daily/index.xml
+++ b/go-checksums/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Go Checksums Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:53Z
+ 2023-12-24T01:34:11Z
Daily Trending of Go Checksums in GitHub
\ No newline at end of file
diff --git a/go-checksums/weekly/index.xml b/go-checksums/weekly/index.xml
new file mode 100644
index 00000000000..8e9cbbe4a76
--- /dev/null
+++ b/go-checksums/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Go Checksums Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:50Z
+ Weekly Trending of Go Checksums in GitHub
+
+
\ No newline at end of file
diff --git a/go-module/daily/index.xml b/go-module/daily/index.xml
index 3a0ccc99eb1..636b1c528b8 100644
--- a/go-module/daily/index.xml
+++ b/go-module/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Go Module Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:54Z
+ 2023-12-24T01:34:12Z
Daily Trending of Go Module in GitHub
\ No newline at end of file
diff --git a/go-module/weekly/index.xml b/go-module/weekly/index.xml
new file mode 100644
index 00000000000..c0c21604806
--- /dev/null
+++ b/go-module/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Go Module Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:48Z
+ Weekly Trending of Go Module in GitHub
+
+
\ No newline at end of file
diff --git a/go/daily/index.xml b/go/daily/index.xml
index f2b5209449f..3276b53d086 100644
--- a/go/daily/index.xml
+++ b/go/daily/index.xml
@@ -1,7 +1,28 @@
GitHub Go Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:40Z
+ 2023-12-24T01:33:57Z
Daily Trending of Go in GitHub
+
+ beeper/imessage
+ 2023-12-24T01:33:57Z
+ tag:github.com,2023-12-24:/beeper/imessage
+
+ <p>A Matrix-iMessage puppeting bridge.</p><hr><h1>beeper-imessage</h1>
<p>A Matrix-iMessage puppeting bridge.</p>
<h2>Documentation</h2>
<p>The bridge works like any other mautrix-go bridge, so the instructions at <a href="https://docs.mau.fi/bridges/go/setup.html">https://docs.mau.fi/bridges/go/setup.html</a> can be applied directly. You can find precompiled binaries from the GitLab CI at <a href="https://mau.dev/mautrix/imessagego">https://mau.dev/mautrix/imessagego</a>.</p>
<p>Additionally, the bridge requires a registration provider running on a <a href="https://github.com/beeper/mac-registration-provider">Mac</a> or <a href="https://github.com/beeper/phone-registration-provider">jailbroken iPhone</a>, as well as a <a href="https://github.com/beeper/registration-relay">relay server</a> to help the bridge and registration provider connect to each other.</p>
<p>When connecting the bridge to your Beeper account with bbctl, you don't need to self-host the relay, you only need to run the provider.</p>
<h2>Discussion</h2>
<p>Matrix room: <a href="https://matrix.to/#/#imessage:maunium.net">#imessage:maunium.net</a></p>
+
+
+ algorand/go-algorand
+ 2023-12-24T01:33:57Z
+ tag:github.com,2023-12-24:/algorand/go-algorand
+
+ <p>Algorand's official implementation in Go.</p><hr><table>
<thead>
<tr>
<th>rel/stable <br> <a href="https://circleci.com/gh/algorand/go-algorand/tree/rel%2Fstable"><img src="https://circleci.com/gh/algorand/go-algorand/tree/rel%2Fstable.svg?style=svg" alt="CircleCI"></a></th>
<th>rel/beta <br> <a href="https://circleci.com/gh/algorand/go-algorand/tree/rel%2Fbeta"><img src="https://circleci.com/gh/algorand/go-algorand/tree/rel%2Fbeta.svg?style=svg" alt="CircleCI"></a></th>
<th>rel/nightly <br> <a href="https://circleci.com/gh/algorand/go-algorand/tree/rel%2Fnightly"><img src="https://circleci.com/gh/algorand/go-algorand/tree/rel%2Fnightly.svg?style=svg" alt="CircleCI"></a></th>
</tr>
</thead>
</table>
<h1>go-algorand</h1>
<p>Algorand's official implementation in Go.</p>
<p>Algorand is a permissionless, pure proof-of-stake blockchain that delivers decentralization, scalability, security, and transaction finality.</p>
<h2>Getting Started</h2>
<p>Our <a href="https://developer.algorand.org/">developer website</a> has the most up to date information about using and installing the Algorand platform.</p>
<h2>Building from source</h2>
<p>Development is done using the <a href="https://golang.org/">Go Programming Language</a>. The version of go is specified in the project's <a href="https://raw.githubusercontent.com/algorand/go-algorand/master/go.mod">go.mod</a> file. This document assumes that you have a functioning environment setup. If you need assistance setting up an environment please visit the <a href="https://golang.org/doc/">official Go documentation website</a>.</p>
<h3>Linux / OSX</h3>
<p>We currently strive to support Debian-based distributions with Ubuntu 20.04 being our official release target. Building on Arch Linux works as well. Our core engineering team uses Linux and OSX, so both environments are well supported for development.</p>
<p>OSX only: <a href="https://brew.sh">Homebrew (brew)</a> must be installed before continuing. <a href="https://docs.brew.sh/Installation">Here</a> are the installation requirements.</p>
<p>Initial environment setup:</p>
<pre><code class="language-bash">git clone https://github.com/algorand/go-algorand
cd go-algorand
./scripts/configure_dev.sh
./scripts/buildtools/install_buildtools.sh
</code></pre>
<p>At this point, you are ready to build go-algorand. We use <code>make</code> and have a number of targets to automate common tasks.</p>
<h4>build</h4>
<pre><code class="language-bash">make install
</code></pre>
<h4>test</h4>
<pre><code class="language-bash"># unit tests
make test
# integration tests
make integration
</code></pre>
<h4>style and checks</h4>
<pre><code class="language-bash">make fmt
make lint
make fix
make vet
</code></pre>
<p>or alternatively</p>
<pre><code class="language-bash">make sanity
</code></pre>
<h3>Running a node</h3>
<p>Once the software is built you'll find binaries in <code>${GOPATH}/bin</code>, and a data directory will be initialized at <code>~/.algorand</code>. Start your node with <code>${GOPATH}/bin/goal node start -d ~/.algorand</code>, use <code>${GOPATH}/bin/carpenter -d ~/.algorand</code> to see activity. Refer to the <a href="https://developer.algorand.org/">developer website</a> for how to use the different tools.</p>
<h4>Providing your own data directory</h4>
<p>You can run a node out of other directories than <code>~/.algorand</code> and join networks other than mainnet. Just make a new directory and copy into it the <code>genesis.json</code> file for the network. For example:</p>
<pre><code class="language-bash">mkdir ~/testnet_data
cp installer/genesis/testnet/genesis.json ~/testnet_data/genesis.json
${GOPATH}/bin/goal node start -d ~/testnet_data
</code></pre>
<p>Genesis files for mainnet, testnet, and betanet can be found in <code>installer/genesis/</code>.</p>
<h2>Contributing</h2>
<p>Please refer to our <a href="https://raw.githubusercontent.com/algorand/go-algorand/master/CONTRIBUTING.md">CONTRIBUTING</a> document.</p>
<h2>Project Layout</h2>
<p><code>go-algorand</code> is split into various subsystems containing various packages.</p>
<h3>Core</h3>
<p>Provides core functionality to the <code>algod</code> and <code>kmd</code> daemons, as well as other tools and commands:</p>
<ul>
<li><code>crypto</code> contains the cryptographic constructions we're using for hashing, signatures, and VRFs. There are also some Algorand-specific details here about spending keys, protocols keys, one-time-use signing keys, and how they relate to each other.</li>
<li><code>config</code> holds configuration parameters. These include parameters used locally by the node as well as parameters that must be agreed upon by the protocol.</li>
<li><code>data</code> defines various types used throughout the codebase.
<ul>
<li><code>basics</code> hold basic types such as MicroAlgos, account data, and addresses.</li>
<li><code>account</code> defines accounts, including "root" accounts (which can spend money) and "participation" accounts (which can participate in the agreement protocol).</li>
<li><code>transactions</code> define transactions that accounts can issue against the Algorand state. These include standard payments and also participation key registration transactions.</li>
<li><code>bookkeeping</code> defines blocks, which are batches of transactions atomically committed to Algorand.</li>
<li><code>pools</code> implement the transaction pool. The transaction pool holds transactions seen by a node in memory before they are proposed in a block.</li>
<li><code>committee</code> implements the credentials that authenticate a participating account's membership in the agreement protocol.</li>
</ul> </li>
<li><code>ledger</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/ledger/README.md">README</a>) contains the Algorand Ledger state machine, which holds the sequence of blocks. The Ledger executes the state transitions that result from applying these blocks. It answers queries on blocks (e.g., what transactions were in the last committed block?) and on accounts (e.g., what is my balance?).</li>
<li><code>protocol</code> declares constants used to identify protocol versions, tags for routing network messages, and prefixes for domain separation of cryptographic inputs. It also implements the canonical encoder.</li>
<li><code>network</code> contains the code for participating in a mesh network based on WebSockets. Maintains connection to some number of peers, (optionally) accepts connections from peers, sends point to point and broadcast messages, and receives messages routing them to various handler code (e.g. agreement/gossip/network.go registers three handlers).
<ul>
<li><code>rpcs</code> contains the HTTP RPCs used by <code>algod</code> processes to query one another.</li>
</ul> </li>
<li><code>agreement</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/agreement/README.md">README</a>) contains the agreement service, which implements Algorand's Byzantine Agreement protocol. This protocol allows participating accounts to quickly confirm blocks in a fork-safe manner, provided that sufficient account stake is correctly executing the protocol.</li>
<li><code>node</code> integrates the components above and handles initialization and shutdown. It provides queries into these components.</li>
</ul>
<h3>Daemon</h3>
<p>Contains the two daemons which provide Algorand clients with services:</p>
<ul>
<li><code>daemon/algod</code> holds the <code>algod</code> daemon, which implements a participating node. <code>algod</code> allows a node to participate in the agreement protocol, submit and confirm transactions, and view the state of the Algorand Ledger.
<ul>
<li><code>daemon/algod/api</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/daemon/algod/api/README.md">README</a>) is the REST interface used for interactions with algod.</li>
</ul> </li>
<li><code>daemon/kmd</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/daemon/kmd/README.md">README</a>) holds the <code>kmd</code> daemon. This daemon allows a node to sign transactions. Because <code>kmd</code> is separate from <code>algod</code>, <code>kmd</code> allows a user to sign transactions on an air-gapped computer.</li>
</ul>
<h3>Interfacing</h3>
<p>Allows developers to interface with the Algorand system:</p>
<ul>
<li><code>cmd</code> holds the primary commands defining entry points into the system.
<ul>
<li><code>cmd/catchupsrv</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/cmd/catchupsrv/README.md">README</a>) is a tool to assist with processing historic blocks on a new node.</li>
</ul> </li>
<li><code>libgoal</code> exports a Go interface useful for developers of Algorand clients.</li>
<li><code>tools</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/tools/README.md">README</a>) various tools and utilities without a better place to go.</li>
<li><code>tools/debug</code> holds secondary commands which assist developers during debugging.</li>
<li><code>tools/misc</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/tools/misc/README.md">README</a>) small tools that are sometimes handy in a pinch.</li>
</ul>
<h3>Deployment</h3>
<p>Help Algorand developers deploy networks of their own:</p>
<ul>
<li><code>nodecontrol</code></li>
<li><code>docker</code></li>
<li><code>commandandcontrol</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/test/commandandcontrol/README.md">README</a>) is a tool to automate a network of algod instances.</li>
<li><code>components</code></li>
<li><code>netdeploy</code></li>
</ul>
<h3>Utilities</h3>
<p>Provides utilities for the various components:</p>
<ul>
<li><code>logging</code> is a wrapper around <code>logrus</code>.</li>
<li><code>util</code> contains a variety of utilities, including a codec, a SQLite wrapper, a goroutine pool, a timer interface, node metrics, and more.</li>
</ul>
<h3>Test</h3>
<p><code>test</code> (<a href="https://raw.githubusercontent.com/algorand/go-algorand/master/test/README.md">README</a>) contains end-to-end tests and utilities for the above components.</p>
<h2>License</h2>
<p><a href="https://raw.githubusercontent.com/algorand/go-algorand/master/COPYING"><img src="https://img.shields.io/badge/License-AGPL%20v3-blue.svg?sanitize=true" alt="License: AGPL v3"></a></p>
<p>Please see the <a href="https://raw.githubusercontent.com/algorand/go-algorand/master/COPYING_FAQ">COPYING_FAQ</a> for details about how to apply our license.</p>
<p>Copyright (C) 2019-2023, Algorand Inc.</p>
+
+
+ beeper/mac-registration-provider
+ 2023-12-24T01:33:57Z
+ tag:github.com,2023-12-24:/beeper/mac-registration-provider
+
+ <p>A small service that generates iMessage registration data on a Mac</p><hr><h1>mac-registration-provider</h1>
<p>A small service that generates iMessage registration data on a Mac. If you do not have access to Beeper Cloud, you can use this to generate an iMessage registration code and use it in Beeper Mini.</p>
<h2>Supported MacOS versions</h2>
<p>The tool is currently quite hacky, so it only works on specific versions of macOS.</p>
<ul>
<li>Intel: 11.5 - 11.7, 13.3.1, 13.5 - 13.6, 14.0 - 14.3</li>
<li>Apple Silicon: 13.3.1, 13.5 - 13.6, 14.0 - 14.3</li>
</ul>
<p>On unsupported versions, it will tell you that it's unsupported and exit. A future version may work in less hacky ways to support more OS versions.</p>
<h2>Usage</h2>
<ol>
<li>On your Mac, download the latest <code>mac-registration-provider</code> file from the latest <a href="https://github.com/beeper/mac-registration-provider/releases">release</a> <img src="https://github.com/beeper/mac-registration-provider/assets/1048265/4a419ae1-8996-4af4-876e-5723db088816" alt="screenshot"></li>
<li>Open Terminal app (<kbd>⌘</kbd> + <kbd>space</kbd> -> Terminal), type <code>cd Downloads</code>, hit enter</li>
<li>Type <code>chmod +x mac-registration-provider</code>, hit enter</li>
<li>Type <code>./mac-registration-provider</code>, hit enter</li>
</ol>
<h2>Future improvements</h2>
<p>If anyone wants to package this into an app that lives in your dock and runs at startup, we'd appreciate it!</p>
<h2>Modes of operation</h2>
<p>The service has three different modes of operation, and various flags associated with each mode. Only one mode can be used at a time. The only mode that works with Beeper is Relay, which is the default.</p>
<ul>
<li>Relay (default) - connect to a websocket and return registration data when the server requests it.
<ul>
<li><code>-relay-server</code> Use a different relay server (defaults to <code>https://registration-relay.beeper.com</code>).</li>
</ul> </li>
<li>Submit - periodically generate registration data and push it to a server.
<ul>
<li>The list of addresses to submit to must be provided as arguments after the flags.</li>
<li><code>-submit-interval</code> - The interval to submit data at (required).</li>
<li><code>-submit-token</code> - A bearer token to include when submitting data (defaults to no auth).</li>
</ul> </li>
<li><code>-once</code> - generate a single registration data, print it to stdout and exit</li>
</ul>
+
\ No newline at end of file
diff --git a/go/weekly/index.xml b/go/weekly/index.xml
new file mode 100644
index 00000000000..7eb2d414f29
--- /dev/null
+++ b/go/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Go Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:38Z
+ Weekly Trending of Go in GitHub
+
+
+ labstack/echo
+ 2023-12-24T01:50:38Z
+ tag:github.com,2023-12-24:/labstack/echo
+
+ <p>High performance, minimalist Go web framework</p><hr><p><a href="https://echo.labstack.com"><img height="80" src="https://cdn.labstack.com/images/echo-logo.svg?sanitize=true"></a></p>
<p><a href="https://sourcegraph.com/github.com/labstack/echo?badge"><img src="https://sourcegraph.com/github.com/labstack/echo/-/badge.svg?style=flat-square" alt="Sourcegraph"></a> <a href="https://pkg.go.dev/github.com/labstack/echo/v4"><img src="http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square" alt="GoDoc"></a> <a href="https://goreportcard.com/report/github.com/labstack/echo"><img src="https://goreportcard.com/badge/github.com/labstack/echo?style=flat-square" alt="Go Report Card"></a> <a href="https://github.com/labstack/echo/actions"><img src="https://img.shields.io/github/actions/workflow/status/labstack/echo/echo.yml?style=flat-square" alt="GitHub Workflow Status (with event)"></a> <a href="https://codecov.io/gh/labstack/echo"><img src="https://img.shields.io/codecov/c/github/labstack/echo.svg?style=flat-square" alt="Codecov"></a> <a href="https://github.com/labstack/echo/discussions"><img src="https://img.shields.io/badge/community-forum-00afd1.svg?style=flat-square" alt="Forum"></a> <a href="https://twitter.com/labstack"><img src="https://img.shields.io/badge/twitter-@labstack-55acee.svg?style=flat-square" alt="Twitter"></a> <a href="https://raw.githubusercontent.com/labstack/echo/master/LICENSE"><img src="http://img.shields.io/badge/license-mit-blue.svg?style=flat-square" alt="License"></a></p>
<h2>Supported Go versions</h2>
<p>Latest version of Echo supports last four Go major <a href="https://go.dev/doc/devel/release">releases</a> and might work with older versions.</p>
<p>As of version 4.0.0, Echo is available as a <a href="https://github.com/golang/go/wiki/Modules">Go module</a>. Therefore a Go version capable of understanding /vN suffixed imports is required:</p>
<p>Any of these versions will allow you to import Echo as <code>github.com/labstack/echo/v4</code> which is the recommended way of using Echo going forward.</p>
<p>For older versions, please use the latest v3 tag.</p>
<h2>Feature Overview</h2>
<ul>
<li>Optimized HTTP router which smartly prioritize routes</li>
<li>Build robust and scalable RESTful APIs</li>
<li>Group APIs</li>
<li>Extensible middleware framework</li>
<li>Define middleware at root, group or route level</li>
<li>Data binding for JSON, XML and form payload</li>
<li>Handy functions to send variety of HTTP responses</li>
<li>Centralized HTTP error handling</li>
<li>Template rendering with any template engine</li>
<li>Define your format for the logger</li>
<li>Highly customizable</li>
<li>Automatic TLS via Let’s Encrypt</li>
<li>HTTP/2 support</li>
</ul>
<h2>Benchmarks</h2>
<p>Date: 2020/11/11<br> Source: <a href="https://github.com/vishr/web-framework-benchmark">https://github.com/vishr/web-framework-benchmark</a><br> Lower is better!</p>
<img src="https://i.imgur.com/qwPNQbl.png">
<img src="https://i.imgur.com/s8yKQjx.png">
<p>The benchmarks above were run on an Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz</p>
<h2><a href="https://echo.labstack.com/guide">Guide</a></h2>
<h3>Installation</h3>
<pre><code class="language-sh">// go get github.com/labstack/echo/{version}
go get github.com/labstack/echo/v4
</code></pre>
<h3>Example</h3>
<pre><code class="language-go">package main
import (
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"net/http"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Routes
e.GET("/", hello)
// Start server
e.Logger.Fatal(e.Start(":1323"))
}
// Handler
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
</code></pre>
<h1>Official middleware repositories</h1>
<p>Following list of middleware is maintained by Echo team.</p>
<table>
<thead>
<tr>
<th>Repository</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/labstack/echo-jwt">github.com/labstack/echo-jwt</a></td>
<td><a href="https://github.com/golang-jwt/jwt">JWT</a> middleware</td>
</tr>
<tr>
<td><a href="https://github.com/labstack/echo-contrib">github.com/labstack/echo-contrib</a></td>
<td><a href="https://github.com/casbin/casbin">casbin</a>, <a href="https://github.com/gorilla/sessions">gorilla/sessions</a>, <a href="https://github.com/uber/jaeger-client-go">jaegertracing</a>, <a href="https://github.com/prometheus/client_golang/">prometheus</a>, <a href="https://pkg.go.dev/net/http/pprof">pprof</a>, <a href="https://github.com/openzipkin/zipkin-go">zipkin</a> middlewares</td>
</tr>
</tbody>
</table>
<h1>Third-party middleware repositories</h1>
<p>Be careful when adding 3rd party middleware. Echo teams does not have time or manpower to guarantee safety and quality of middlewares in this list.</p>
<table>
<thead>
<tr>
<th>Repository</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/deepmap/oapi-codegen">deepmap/oapi-codegen</a></td>
<td>Automatically generate RESTful API documentation with <a href="https://swagger.io/specification/">OpenAPI</a> Client and Server Code Generator</td>
</tr>
<tr>
<td><a href="https://github.com/swaggo/echo-swagger">github.com/swaggo/echo-swagger</a></td>
<td>Automatically generate RESTful API documentation with <a href="https://swagger.io/">Swagger</a> 2.0.</td>
</tr>
<tr>
<td><a href="https://github.com/ziflex/lecho">github.com/ziflex/lecho</a></td>
<td><a href="https://github.com/rs/zerolog">Zerolog</a> logging library wrapper for Echo logger interface.</td>
</tr>
<tr>
<td><a href="https://github.com/brpaz/echozap">github.com/brpaz/echozap</a></td>
<td>Uber´s <a href="https://github.com/uber-go/zap">Zap</a> logging library wrapper for Echo logger interface.</td>
</tr>
<tr>
<td><a href="https://github.com/samber/slog-echo">github.com/samber/slog-echo</a></td>
<td>Go <a href="https://pkg.go.dev/golang.org/x/exp/slog">slog</a> logging library wrapper for Echo logger interface.</td>
</tr>
<tr>
<td><a href="https://github.com/darkweak/souin/tree/master/plugins/echo">github.com/darkweak/souin/plugins/echo</a></td>
<td>HTTP cache system based on <a href="https://github.com/darkweak/souin">Souin</a> to automatically get your endpoints cached. It supports some distributed and non-distributed storage systems depending your needs.</td>
</tr>
<tr>
<td><a href="https://github.com/mikestefanello/pagoda">github.com/mikestefanello/pagoda</a></td>
<td>Rapid, easy full-stack web development starter kit built with Echo.</td>
</tr>
<tr>
<td><a href="https://github.com/go-woo/protoc-gen-echo">github.com/go-woo/protoc-gen-echo</a></td>
<td>ProtoBuf generate Echo server side code</td>
</tr>
</tbody>
</table>
<p>Please send a PR to add your own library here.</p>
<h2>Help</h2>
<ul>
<li><a href="https://github.com/labstack/echo/discussions">Forum</a></li>
</ul>
<h2>Contribute</h2>
<p><strong>Use issues for everything</strong></p>
<ul>
<li>For a small change, just send a PR.</li>
<li>For bigger changes open an issue for discussion before sending a PR.</li>
<li>PR should have:
<ul>
<li>Test case</li>
<li>Documentation</li>
<li>Example (If it makes sense)</li>
</ul> </li>
<li>You can also contribute by:
<ul>
<li>Reporting issues</li>
<li>Suggesting new features or enhancements</li>
<li>Improve/fix documentation</li>
</ul> </li>
</ul>
<h2>Credits</h2>
<ul>
<li><a href="https://github.com/vishr">Vishal Rana</a> (Author)</li>
<li><a href="https://github.com/nr17">Nitin Rana</a> (Consultant)</li>
<li><a href="https://github.com/lammel">Roland Lammel</a> (Maintainer)</li>
<li><a href="https://github.com/aldas">Martti T.</a> (Maintainer)</li>
<li><a href="https://github.com/pafuent">Pablo Andres Fuente</a> (Maintainer)</li>
<li><a href="https://github.com/labstack/echo/graphs/contributors">Contributors</a></li>
</ul>
<h2>License</h2>
<p><a href="https://github.com/labstack/echo/raw/master/LICENSE">MIT</a></p>
+
+
+ hashicorp/packer
+ 2023-12-24T01:50:38Z
+ tag:github.com,2023-12-24:/hashicorp/packer
+
+ <p>Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.</p><hr><h1>Packer</h1>
<h1><a href="https://raw.githubusercontent.com/hashicorp/packer/main/LICENSE"><img src="https://img.shields.io/badge/License-BUSL--1.1-yellow.svg?sanitize=true" alt="License: BUSL-1.1"></a> <a href="https://github.com/hashicorp/packer/actions/workflows/build.yml"><img src="https://github.com/hashicorp/packer/actions/workflows/build.yml/badge.svg?sanitize=true" alt="Build Status"></a> <a href="https://discuss.hashicorp.com/c/packer"><img src="https://img.shields.io/badge/discuss-packer-3d89ff?style=flat" alt="Discuss"></a></h1>
<p align="center" style="text-align:center;"> <a href="https://www.packer.io"> <img alt="HashiCorp Packer logo" src="https://raw.githubusercontent.com/hashicorp/packer/main/website/public/img/logo-packer-padded.svg?sanitize=true" width="500"> </a> </p>
<p>Packer is a tool for building identical machine images for multiple platforms from a single source configuration.</p>
<p>Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer supports various platforms through external plugin integrations, the full list of which can be found at <a href="https://developer.hashicorp.com/packer/integrations">https://developer.hashicorp.com/packer/integrations</a>.</p>
<p>The images that Packer creates can easily be turned into <a href="http://www.vagrantup.com">Vagrant</a> boxes.</p>
<h2>Quick Start</h2>
<h3>Packer</h3>
<p>There is a great <a href="https://learn.hashicorp.com/tutorials/packer/get-started-install-cli">introduction and getting started guide</a> for building a Docker image on your local machine without using any paid cloud resources.</p>
<p>Alternatively, you can refer to <a href="https://developer.hashicorp.com/packer/tutorials/aws-get-started">getting started with AWS</a> to learn how to build a machine image for an external cloud provider.</p>
<h3>HCP Packer</h3>
<p>HCP Packer registry stores Packer image metadata, enabling you to track your image lifecycle.</p>
<p>To get started with building an AWS machine image to HCP Packer for referencing in Terraform refer to the collection of <a href="https://developer.hashicorp.com/packer/tutorials/hcp-get-started">HCP Packer Tutorials</a>.</p>
<h2>Documentation</h2>
<p>Comprehensive documentation is viewable on the Packer website at <a href="https://developer.hashicorp.com/packer/docs">https://developer.hashicorp.com/packer/docs</a>.</p>
<h2>Contributing to Packer</h2>
<p>See <a href="https://github.com/hashicorp/packer/raw/master/.github/CONTRIBUTING.md">CONTRIBUTING.md</a> for best practices and instructions on setting up your development environment to work on Packer.</p>
<h2>Unmaintained Plugins</h2>
<p>As contributors' circumstances change, development on a community maintained plugin can slow. When this happens, HashiCorp may use GitHub's option to archive the plugin’s repository, to clearly signal the plugin's status to users.</p>
<p>What does <strong>unmaintained</strong> mean?</p>
<ol>
<li>The code repository and all commit history will still be available.</li>
<li>Documentation will remain on the Packer website.</li>
<li>Issues and pull requests are monitored as a best effort.</li>
<li>No active development will be performed by HashiCorp.</li>
</ol>
<p>If you are interested in maintaining an unmaintained or archived plugin, please reach out to us at <a href="mailto:packer@hashicorp.com">packer@hashicorp.com</a>.</p>
+
+
+ gogf/gf
+ 2023-12-24T01:50:38Z
+ tag:github.com,2023-12-24:/gogf/gf
+
+ <p>GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.</p><hr><h1>GoFrame</h1>
<div align="center">
<img src="https://goframe.org/statics/image/logo2.png?v=1" width="300">
<p><a href="https://pkg.go.dev/github.com/gogf/gf/v2"><img src="https://pkg.go.dev/badge/github.com/gogf/gf/v2.svg?sanitize=true" alt="Go Reference"></a> <a href="https://github.com/gogf/gf/actions/workflows/ci-main.yml"><img src="https://github.com/gogf/gf/actions/workflows/ci-main.yml/badge.svg?sanitize=true" alt="GoFrame CI"></a> <a href="https://goreportcard.com/report/github.com/gogf/gf/v2"><img src="https://goreportcard.com/badge/github.com/gogf/gf/v2" alt="Go Report Card"></a> <a href="https://codecov.io/gh/gogf/gf"><img src="https://codecov.io/gh/gogf/gf/branch/master/graph/badge.svg?sanitize=true" alt="Code Coverage"></a> <a href="https://github.com/gogf/gf"><img src="https://img.shields.io/badge/production-ready-blue.svg?sanitize=true" alt="Production Ready"></a> <a href="https://github.com/gogf/gf"><img src="https://img.shields.io/github/license/gogf/gf.svg?style=flat" alt="License"></a></p>
<p><a href="https://github.com/gogf/gf/releases"><img src="https://img.shields.io/github/v/release/gogf/gf" alt="Release"></a> <a href="https://github.com/gogf/gf/pulls"><img src="https://img.shields.io/github/issues-pr/gogf/gf" alt="GitHub pull requests"></a> <a href="https://github.com/gogf/gf/pulls?q=is%3Apr+is%3Aclosed"><img src="https://img.shields.io/github/issues-pr-closed/gogf/gf" alt="GitHub closed pull requests"></a> <a href="https://github.com/gogf/gf/issues"><img src="https://img.shields.io/github/issues/gogf/gf" alt="GitHub issues"></a> <a href="https://github.com/gogf/gf/issues?q=is%3Aissue+is%3Aclosed"><img src="https://img.shields.io/github/issues-closed/gogf/gf" alt="GitHub closed issues"></a> <img src="https://img.shields.io/github/stars/gogf/gf" alt="Stars"> <img src="https://img.shields.io/github/forks/gogf/gf" alt="Forks"></p>
</div>
<p><code>GoFrame</code> is a modular, powerful, high-performance and enterprise-class application development framework of Golang.</p>
<h1>Features</h1>
<ul>
<li>modular, loosely coupled design</li>
<li>rich components, out-of-the-box</li>
<li>automatic codes generating for efficiency</li>
<li>simple and easy to use, detailed documentation</li>
<li>interface designed components, with high scalability</li>
<li>fully supported tracing and error stack feature</li>
<li>specially developed and powerful ORM component</li>
<li>robust engineering design specifications</li>
<li>convenient development CLI tool provide</li>
<li>OpenTelemetry observability features support</li>
<li>OpenAPIV3 documentation generating, automatically</li>
<li>much, much more...ready to explore?</li>
</ul>
<h1>Installation</h1>
<p>Enter your repo. directory and execute following command:</p>
<h2>primary module</h2>
<pre><code class="language-bash">go get -u -v github.com/gogf/gf/v2
</code></pre>
<h2>cli tool</h2>
<pre><code class="language-bash">go install github.com/gogf/gf/cmd/gf/v2@latest
</code></pre>
<h1>Limitation</h1>
<pre><code>golang version >= 1.18
</code></pre>
<h1>Documentation</h1>
<ul>
<li>Chinese Official Site(中文官网): <a href="https://goframe.org/display/gf">https://goframe.org</a></li>
<li>GoDoc API: <a href="https://pkg.go.dev/github.com/gogf/gf/v2">https://pkg.go.dev/github.com/gogf/gf/v2</a></li>
</ul>
<h1>License</h1>
<p><code>GoFrame</code> is licensed under the <a href="https://raw.githubusercontent.com/gogf/gf/master/LICENSE">MIT License</a>, 100% free and open-source, forever.</p>
<h1>Part Of Users</h1>
<ul>
<li><a href="https://www.tencent.com/">Tencent</a></li>
<li><a href="https://www.zte.com.cn/china/">ZTE</a></li>
<li><a href="https://www.antfin.com/">Ant Financial Services</a></li>
<li><a href="https://www.vivo.com/">VIVO</a></li>
<li><a href="https://www.medlinker.com/">MedLinker</a></li>
<li><a href="https://www.kucoin.io/">KuCoin</a></li>
<li><a href="https://www.leyoujia.com/">LeYouJia</a></li>
<li><a href="https://igg.com">IGG</a></li>
<li><a href="https://www.37.com">37</a></li>
<li><a href="https://www.ximalaya.com">XiMaLaYa</a></li>
<li><a href="https://www.zybang.com/">ZYBang</a></li>
</ul>
<blockquote>
<p>We list part of the users here, if your company or products are using <code>GoFrame</code>, please let us know <a href="https://goframe.org/pages/viewpage.action?pageId=1114415">here</a>.</p>
</blockquote>
<h1>Contributors</h1>
<p>This project exists thanks to all the people who contribute. [<a href="https://github.com/gogf/gf/graphs/contributors">Contributors</a>]. <a href="https://github.com/gogf/gf/graphs/contributors"><img src="https://contributors-img.web.app/image?repo=gogf/gf"></a></p>
<h1>Donators</h1>
<p>If you love <code>GoFrame</code>, why not <a href="https://goframe.org/pages/viewpage.action?pageId=1115633">buy developer a cup of coffee</a>?</p>
<h1>Sponsors</h1>
<p>We appreciate any kind of sponsorship for <code>GoFrame</code> development. If you've got some interesting, please contact WeChat <code>389961817</code> / Email <code>john@goframe.org</code>.</p>
<h1>Thanks</h1>
<p><a href="https://www.jetbrains.com/?from=GoFrame"><img src="https://goframe.org/download/thumbnails/1114119/jetbrains.png" height="120" alt="JetBrains"></a> <a href="https://www.atlassian.com/?from=GoFrame"><img src="https://goframe.org/download/attachments/1114119/atlassian.jpg" height="120" alt="Atlassian"></a></p>
+
+
\ No newline at end of file
diff --git a/golo/daily/index.xml b/golo/daily/index.xml
index 79e01a5aef8..7f585464d95 100644
--- a/golo/daily/index.xml
+++ b/golo/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Golo Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:56Z
+ 2023-12-24T01:34:14Z
Daily Trending of Golo in GitHub
\ No newline at end of file
diff --git a/golo/weekly/index.xml b/golo/weekly/index.xml
new file mode 100644
index 00000000000..6fc8bf56992
--- /dev/null
+++ b/golo/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Golo Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:52Z
+ Weekly Trending of Golo in GitHub
+
+
\ No newline at end of file
diff --git a/gosu/daily/index.xml b/gosu/daily/index.xml
index 711b8c798bd..6b2ffcaf417 100644
--- a/gosu/daily/index.xml
+++ b/gosu/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gosu Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:55Z
+ 2023-12-24T01:34:16Z
Daily Trending of Gosu in GitHub
\ No newline at end of file
diff --git a/gosu/weekly/index.xml b/gosu/weekly/index.xml
new file mode 100644
index 00000000000..07b4908835e
--- /dev/null
+++ b/gosu/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gosu Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:51Z
+ Weekly Trending of Gosu in GitHub
+
+
\ No newline at end of file
diff --git a/grace/daily/index.xml b/grace/daily/index.xml
index 3c2c856de51..011d4f9eb75 100644
--- a/grace/daily/index.xml
+++ b/grace/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Grace Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:57Z
+ 2023-12-24T01:34:15Z
Daily Trending of Grace in GitHub
\ No newline at end of file
diff --git a/grace/weekly/index.xml b/grace/weekly/index.xml
new file mode 100644
index 00000000000..1210f7c52e5
--- /dev/null
+++ b/grace/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Grace Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:52Z
+ Weekly Trending of Grace in GitHub
+
+
\ No newline at end of file
diff --git a/gradle/daily/index.xml b/gradle/daily/index.xml
index 34412ffabc5..cdeedfc6efd 100644
--- a/gradle/daily/index.xml
+++ b/gradle/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Gradle Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:29:57Z
+ 2023-12-24T01:34:17Z
Daily Trending of Gradle in GitHub
\ No newline at end of file
diff --git a/gradle/weekly/index.xml b/gradle/weekly/index.xml
new file mode 100644
index 00000000000..9d583ec5d2a
--- /dev/null
+++ b/gradle/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Gradle Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:53Z
+ Weekly Trending of Gradle in GitHub
+
+
\ No newline at end of file
diff --git a/grammatical-framework/daily/index.xml b/grammatical-framework/daily/index.xml
index 1cb925fd93e..23c4bc94c32 100644
--- a/grammatical-framework/daily/index.xml
+++ b/grammatical-framework/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Grammatical Framework Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:02Z
+ 2023-12-24T01:34:18Z
Daily Trending of Grammatical Framework in GitHub
\ No newline at end of file
diff --git a/grammatical-framework/weekly/index.xml b/grammatical-framework/weekly/index.xml
new file mode 100644
index 00000000000..a5d67c71715
--- /dev/null
+++ b/grammatical-framework/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Grammatical Framework Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:56Z
+ Weekly Trending of Grammatical Framework in GitHub
+
+
\ No newline at end of file
diff --git a/graph-modeling-language/daily/index.xml b/graph-modeling-language/daily/index.xml
index 9cfa95e693c..ffb266fc477 100644
--- a/graph-modeling-language/daily/index.xml
+++ b/graph-modeling-language/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Graph Modeling Language Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:00Z
+ 2023-12-24T01:34:21Z
Daily Trending of Graph Modeling Language in GitHub
\ No newline at end of file
diff --git a/graph-modeling-language/weekly/index.xml b/graph-modeling-language/weekly/index.xml
new file mode 100644
index 00000000000..aaa75125aca
--- /dev/null
+++ b/graph-modeling-language/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Graph Modeling Language Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:56Z
+ Weekly Trending of Graph Modeling Language in GitHub
+
+
\ No newline at end of file
diff --git a/graphql/daily/index.xml b/graphql/daily/index.xml
index 4353e269417..f4915adcf87 100644
--- a/graphql/daily/index.xml
+++ b/graphql/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GraphQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:01Z
+ 2023-12-24T01:34:19Z
Daily Trending of GraphQL in GitHub
\ No newline at end of file
diff --git a/graphql/weekly/index.xml b/graphql/weekly/index.xml
new file mode 100644
index 00000000000..db215131b6d
--- /dev/null
+++ b/graphql/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GraphQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:55Z
+ Weekly Trending of GraphQL in GitHub
+
+
\ No newline at end of file
diff --git a/graphviz-(dot)/daily/index.xml b/graphviz-(dot)/daily/index.xml
index bfcc85e9e7f..6bec1ece2fa 100644
--- a/graphviz-(dot)/daily/index.xml
+++ b/graphviz-(dot)/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Graphviz (DOT) Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:03Z
+ 2023-12-24T01:34:22Z
Daily Trending of Graphviz (DOT) in GitHub
\ No newline at end of file
diff --git a/graphviz-(dot)/weekly/index.xml b/graphviz-(dot)/weekly/index.xml
new file mode 100644
index 00000000000..252f77e4468
--- /dev/null
+++ b/graphviz-(dot)/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Graphviz (DOT) Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:58Z
+ Weekly Trending of Graphviz (DOT) in GitHub
+
+
\ No newline at end of file
diff --git a/groovy-server-pages/daily/index.xml b/groovy-server-pages/daily/index.xml
index 88ea40e1a37..41639851bb0 100644
--- a/groovy-server-pages/daily/index.xml
+++ b/groovy-server-pages/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Groovy Server Pages Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:04Z
+ 2023-12-24T01:34:24Z
Daily Trending of Groovy Server Pages in GitHub
\ No newline at end of file
diff --git a/groovy-server-pages/weekly/index.xml b/groovy-server-pages/weekly/index.xml
new file mode 100644
index 00000000000..ec61005880f
--- /dev/null
+++ b/groovy-server-pages/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Groovy Server Pages Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:58Z
+ Weekly Trending of Groovy Server Pages in GitHub
+
+
\ No newline at end of file
diff --git a/groovy/daily/index.xml b/groovy/daily/index.xml
index 2ac48e01679..1c2975b9622 100644
--- a/groovy/daily/index.xml
+++ b/groovy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Groovy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:07Z
+ 2023-12-24T01:34:23Z
Daily Trending of Groovy in GitHub
\ No newline at end of file
diff --git a/groovy/weekly/index.xml b/groovy/weekly/index.xml
new file mode 100644
index 00000000000..a363a970d89
--- /dev/null
+++ b/groovy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Groovy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:01Z
+ Weekly Trending of Groovy in GitHub
+
+
\ No newline at end of file
diff --git a/gsc/daily/index.xml b/gsc/daily/index.xml
index bfb7c756ed7..15f3bea4432 100644
--- a/gsc/daily/index.xml
+++ b/gsc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub GSC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:05Z
+ 2023-12-24T01:34:25Z
Daily Trending of GSC in GitHub
\ No newline at end of file
diff --git a/gsc/weekly/index.xml b/gsc/weekly/index.xml
new file mode 100644
index 00000000000..1ae7bfc993f
--- /dev/null
+++ b/gsc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub GSC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:50:59Z
+ Weekly Trending of GSC in GitHub
+
+
\ No newline at end of file
diff --git a/hack/daily/index.xml b/hack/daily/index.xml
index 54d0b49abc4..69690602c18 100644
--- a/hack/daily/index.xml
+++ b/hack/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Hack Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:08Z
+ 2023-12-24T01:34:28Z
Daily Trending of Hack in GitHub
\ No newline at end of file
diff --git a/hack/weekly/index.xml b/hack/weekly/index.xml
new file mode 100644
index 00000000000..1551dbeba8a
--- /dev/null
+++ b/hack/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Hack Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:02Z
+ Weekly Trending of Hack in GitHub
+
+
\ No newline at end of file
diff --git a/haml/daily/index.xml b/haml/daily/index.xml
index de072eaae96..eb21ac7b7ae 100644
--- a/haml/daily/index.xml
+++ b/haml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Haml Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:09Z
+ 2023-12-24T01:34:26Z
Daily Trending of Haml in GitHub
\ No newline at end of file
diff --git a/haml/weekly/index.xml b/haml/weekly/index.xml
new file mode 100644
index 00000000000..49407cf7a98
--- /dev/null
+++ b/haml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Haml Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:03Z
+ Weekly Trending of Haml in GitHub
+
+
\ No newline at end of file
diff --git a/handlebars/daily/index.xml b/handlebars/daily/index.xml
index 35e5f2d22fd..45ec366f946 100644
--- a/handlebars/daily/index.xml
+++ b/handlebars/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Handlebars Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:12Z
+ 2023-12-24T01:34:29Z
Daily Trending of Handlebars in GitHub
\ No newline at end of file
diff --git a/handlebars/weekly/index.xml b/handlebars/weekly/index.xml
new file mode 100644
index 00000000000..4b7d38d2d5f
--- /dev/null
+++ b/handlebars/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Handlebars Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:06Z
+ Weekly Trending of Handlebars in GitHub
+
+
\ No newline at end of file
diff --git a/haproxy/daily/index.xml b/haproxy/daily/index.xml
index da650ff9fb7..3340594b400 100644
--- a/haproxy/daily/index.xml
+++ b/haproxy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HAProxy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:10Z
+ 2023-12-24T01:34:27Z
Daily Trending of HAProxy in GitHub
\ No newline at end of file
diff --git a/haproxy/weekly/index.xml b/haproxy/weekly/index.xml
new file mode 100644
index 00000000000..22067fd160f
--- /dev/null
+++ b/haproxy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HAProxy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:04Z
+ Weekly Trending of HAProxy in GitHub
+
+
\ No newline at end of file
diff --git a/harbour/daily/index.xml b/harbour/daily/index.xml
index 9454fe8dc88..f6db46c7a12 100644
--- a/harbour/daily/index.xml
+++ b/harbour/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Harbour Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:13Z
+ 2023-12-24T01:34:30Z
Daily Trending of Harbour in GitHub
\ No newline at end of file
diff --git a/harbour/weekly/index.xml b/harbour/weekly/index.xml
new file mode 100644
index 00000000000..e20ef194ede
--- /dev/null
+++ b/harbour/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Harbour Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:07Z
+ Weekly Trending of Harbour in GitHub
+
+
\ No newline at end of file
diff --git a/haskell/daily/index.xml b/haskell/daily/index.xml
index 58632eccbb3..62905809e9c 100644
--- a/haskell/daily/index.xml
+++ b/haskell/daily/index.xml
@@ -1,21 +1,7 @@
GitHub Haskell Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:20Z
+ 2023-12-24T01:34:37Z
Daily Trending of Haskell in GitHub
-
- qnikst/strictput
- 2023-12-23T01:30:20Z
- tag:github.com,2023-12-23:/qnikst/strictput
-
- <p>strict put serialization</p><hr><p>This project is a StrictPut realiazation that may be usefull for serializing data structures to strict bytestring with known upper bound. This package uses highly unsafe methods that use no length check and operate raw pointers, but it can lead to performance growth.</p>
-
-
- chrisdone/hell
- 2023-12-23T01:30:20Z
- tag:github.com,2023-12-23:/chrisdone/hell
-
- <p>Haskell-based shell scripting language</p><hr><h1>hell</h1>
<p>Welcome to Hell <span>😈</span></p>
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->
<p><strong>Table of Contents</strong></p>
<ul>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#hell">hell</a>
<ul>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#description">Description</a>
<ul>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#informal-description">Informal description</a></li>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#design-philosophy">Design philosophy</a></li>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#more-formal-description">More formal description</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#instructions">Instructions</a>
<ul>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#running">Running</a></li>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#building">Building</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/chrisdone/hell/main/#performance">Performance</a></li>
</ul> </li>
</ul>
<!-- markdown-toc end -->
<h2>Description</h2>
<p>Hell is an interpreted, statically-typed, shell scripting language based on Haskell.</p>
<p>It's a WIP.</p>
<h3>Informal description</h3>
<p>See <code>examples/</code> for a list of example scripts.</p>
<p>Example program:</p>
<pre><code class="language-haskell">main = do
Text.putStrLn "Please enter your name and hit ENTER:"
name :: Text <- Text.getLine
Text.putStrLn "Thanks, your name is: "
Text.putStrLn name
</code></pre>
<p>Supports:</p>
<ul>
<li>UTF-8 and binary file I/O</li>
<li>UTF-8 text operations (via <code>text</code>)</li>
<li>Stdout/stderr/stdin I/O</li>
<li>Directory, arguments, environment variables</li>
<li>Concurrency (via <code>async</code>)</li>
<li>Recursion (via <code>fix</code>)</li>
<li>Running processes (via <code>typed-process</code>)</li>
</ul>
<h3>Design philosophy</h3>
<p>Turtle, Shelly, shell-conduit and Shh are "do shell scripting in Haskell", but lack something. GHC is a large dependency to require for running scripts, and the Haskell ecosystem is not capable of the stability required. Scripts written in them are brittle and clunky.</p>
<p>My definition of a shell scripting language:</p>
<ul>
<li>A small interpreted language capable of launching processes</li>
<li>No abstraction or re-use capabilities from other files/modules/packages</li>
<li>Small, portable binary</li>
<li>Stable, does not change in backwards-incompatible ways</li>
</ul>
<p>Hell can satisfy these criteria.</p>
<p>The other point of view that I've arrived at is that quotation like that of Bash and so on was never a good idea. I explored a Haskell that is quoted by default, such as <code>ls $(echo x)</code>, and realised that this way leads to madness. What you write in a REPL and what you write in a script file <em>can</em> be different.</p>
<p>The other design decisions are:</p>
<ul>
<li>Use existing Haskell naming convention, don't rename things for the sake of it. Even if the names Haskell chose aren't great, or are long.</li>
<li>Lean on and re-use concepts in the host system, even if they're flawed. Haskell's standard libraries get a lot of things right, and some things wrong. But stick to the intuitions that already are there where possible.</li>
<li>Don't break common shell understanding. Current directory and environment variables are process-wide, even if one would prefer otherwise. If you want "local" directories, carry a path around.</li>
<li>Use established API patterns that already work. (In particular this applies to the process launching API, which "script in Haskell" always tend to re-invent. I'm just re-using the API of typed-process.)</li>
</ul>
<p>Names mirror their equivalent Haskell names (typically the package). <code>Data.Text</code> is <code>Text.*</code>, <code>Control.Concurrent.Async</code> is <code>async</code>, etc.</p>
<p>One exception to this rule is avoiding <code>type String</code>. Sorry, it's hard to justify when <code>Text</code> is established.</p>
<p>Also, avoiding operators, because operators are a bit harder to deal with combined with type applications.</p>
<p>There is only one monad, <code>IO</code>. So all monadic actions are specialised upon it.</p>
<p><code>mapM</code>/<code>forM</code> are specialised on lists (like Haskell 98), and live under the <code>IO.</code> namespace. In future, there could be <code>Maybe.mapM</code>, etc. It's also possible to have <code>traverse @IO @[]</code> type of thing, but that seems unnecessarily verbose. List is mostly fine, especially for scripting purposes.</p>
<h3>More formal description</h3>
<ul>
<li>The language is a simply-typed lambda calculus, with Haskell syntax.</li>
<li>Some primitives that can be polymorphic (but require immediately applied type applications).</li>
<li>Polymorphic primitives such as <code>id</code> require passing the type of the argument as <code>id @Int 123</code>. You cannot define polymorphic lambdas of your own. It's not full System-F.</li>
<li>Recursion is not supported. Use <code>Function.fix</code>.</li>
<li>Supports type-classes (<code>Eq</code>, <code>Ord</code> and <code>Show</code> only), but the type must still be explicitly supplied. You can't define classes, or data types, of your own.</li>
<li>The types and functions available lean directly on the host language (Haskell) and are either directly lifted, or a simplified layer over the original things.</li>
<li>There is presently no type inference (but I will add it). All parameters of lambdas, or do-notation let bindings, must have their type declared via a pattern signature: <code>\(x :: Int) -> x</code></li>
<li>Globals of any kind must be fully qualified (<code>Main.foo</code> and <code>Text.putstrLn</code>), including the current module.</li>
</ul>
<h2>Instructions</h2>
<h3>Running</h3>
<p>Presently the <code>hell</code> binary type-checks and interprets immediately a program in <code>IO</code>.</p>
<pre><code>$ hell examples/01-hello-world.hell
Hello, World!
</code></pre>
<p>See <a href="https://github.com/chrisdone/hell/releases">https://github.com/chrisdone/hell/releases</a> for a statically-linked amd64 Linux binary.</p>
<h3>Building</h3>
<p>Build statically for Linux in a musl distribution:</p>
<pre><code>stack build --ghc-options="-static -optl-static"
</code></pre>
<h2>Performance</h2>
<p>I did a quick <code>fib</code> test and it does fine compared with <code>runhaskell</code>. There might be some undue strictness or something; I haven't looked deeply into it. What's important is that it's not dog slow, and it isn't.</p>
<pre><code class="language-haskell">import Data.Function
import Data.Bool
main = print $ fib (30::Int)
fib :: Int -> Int
fib = fix (\fib i ->
bool
(bool
( (fib (subtract 1 i))
+ (fib (subtract 2 i)))
1
(i == 1))
0
(i == 0)
)
</code></pre>
<pre><code class="language-haskell">main = do
Text.putStrLn (Int.show (Main.fib 30))
fib =
Function.fix @(Int -> Int)
(\(fib :: Int -> Int) -> \(i :: Int) ->
Bool.bool @Int
(Bool.bool @Int
(Int.plus (fib (Int.subtract 1 i))
(fib (Int.subtract 2 i)))
1
(Int.eq i 1))
0
(Int.eq i 0)
)
</code></pre>
<pre><code>$ GHCRTS='-s' runhaskell test.hs
832040
962,232,208 bytes allocated in the heap
30,899,272 bytes copied during GC
9,916,872 bytes maximum residency (4 sample(s))
187,960 bytes maximum slop
24 MiB total memory in use (0 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 109 colls, 0 par 0.022s 0.022s 0.0002s 0.0037s
Gen 1 4 colls, 0 par 0.067s 0.067s 0.0168s 0.0216s
TASKS: 5 (1 bound, 4 peak workers (4 total), using -N1)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.001s ( 0.001s elapsed)
MUT time 3.758s ( 3.804s elapsed)
GC time 0.089s ( 0.089s elapsed)
EXIT time 0.001s ( 0.007s elapsed)
Total time 3.849s ( 3.900s elapsed)
Alloc rate 256,067,353 bytes per MUT second
Productivity 97.6% of total user, 97.5% of total elapsed
$ stack run -- examples/12-fib.hell +RTS -s
832040
1,892,556,080 bytes allocated in the heap
1,588,368 bytes copied during GC
150,208 bytes maximum residency (2 sample(s))
87,360 bytes maximum slop
41 MiB total memory in use (0 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 451 colls, 451 par 0.299s 0.158s 0.0004s 0.0006s
Gen 1 2 colls, 1 par 0.001s 0.001s 0.0004s 0.0006s
Parallel GC work balance: 4.14% (serial 0%, perfect 100%)
TASKS: 18 (1 bound, 17 peak workers (17 total), using -N8)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.004s ( 0.002s elapsed)
MUT time 1.971s ( 1.588s elapsed)
GC time 0.300s ( 0.159s elapsed)
EXIT time 0.002s ( 0.001s elapsed)
Total time 2.278s ( 1.750s elapsed)
Alloc rate 960,062,184 bytes per MUT second
Productivity 86.5% of total user, 90.8% of total elapsed
</code></pre>
-
\ No newline at end of file
diff --git a/haskell/weekly/index.xml b/haskell/weekly/index.xml
new file mode 100644
index 00000000000..48b5be39198
--- /dev/null
+++ b/haskell/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Haskell Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:14Z
+ Weekly Trending of Haskell in GitHub
+
+
+ IntersectMBO/cardano-cli
+ 2023-12-24T01:51:14Z
+ tag:github.com,2023-12-24:/IntersectMBO/cardano-cli
+
+ <p>This repository contains sources for the command-line interface (CLI) tool for interacting with the Cardano blockchain.</p><hr><h2>Overview of the <code>cardano-cli</code> repository</h2>
<p><code>cardano-cli</code> refers to the command-line interface (CLI) tool for interacting with the Cardano blockchain. Cardano is a blockchain platform that aims to provide a secure and scalable infrastructure for the development of decentralized applications (dApps) and the execution of smart contracts.</p>
<p>The <code>cardano-cli</code> tool allows users to perform various operations and actions on the Cardano blockchain, such as:</p>
<ul>
<li>creating and managing payment keys</li>
<li>sending and receiving ADA</li>
<li>delegating stake</li>
<li>querying blockchain data</li>
<li>interacting with smart contracts.</li>
</ul>
<h2>Executables</h2>
<p>You can download the hydra binaries of <code>cardano-node</code> and <code>cardano-cli</code> from the <a href="https://github.com/input-output-hk/cardano-node/releases">release notes</a></p>
<h2>Contributing</h2>
<p>See the <a href="https://raw.githubusercontent.com/IntersectMBO/cardano-cli/main/CONTRIBUTING.md">Contributing guide</a> for how to contribute to this project.</p>
<h2>Core maintainers</h2>
<ul>
<li><a href="https://github.com/Jimbo4350">Jordan Millar</a></li>
<li><a href="https://github.com/newhoggy">John Ky</a></li>
<li><a href="https://github.com/carbolymer">Mateusz Gałażyn</a></li>
</ul>
<h2>Documentation</h2>
<p>Development documentation can be found in <a href="https://github.com/input-output-hk/cardano-node-wiki/wiki">Cardano Node Wiki</a>.</p>
<p>Haddock documentation is available at: <a href="https://cardano-cli.cardano.intersectmbo.org/">https://cardano-cli.cardano.intersectmbo.org/</a></p>
+
+
+ IntersectMBO/plutus
+ 2023-12-24T01:51:14Z
+ tag:github.com,2023-12-24:/IntersectMBO/plutus
+
+ <p>The Plutus language implementation and tools</p><hr><h1><a href="https://github.com/input-output-hk/plutus">Plutus Core</a></h1>
<div id="toc" class="toc">
<div id="toctitle">
Table of Contents
</div>
<ul class="sectlevel1">
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_introduction">Introduction</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_development">Development</a>
<ul class="sectlevel2">
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#how-to-develop">How to develop and contribute to the project</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_how_to_submit_an_issue">How to submit an issue</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_how_to_depend_on_the_project_from_another_haskell_project">How to depend on the project from another Haskell project</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_documentation">Documentation</a>
<ul class="sectlevel2">
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_user_documentation">User documentation</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_talks">Talks</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_specifications_and_design">Specifications and design</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_academic_papers">Academic papers</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#_licensing">Licensing</a></li>
</ul>
</div>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p><span class="image"><a class="image" href="https://input-output-hk.github.io/cardano-engineering-handbook"><img src="https://img.shields.io/badge/policy-Cardano%20Engineering%20Handbook-informational" alt="policy Cardano%20Engineering%20Handbook informational"></a></span></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_introduction">Introduction</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Plutus Core is the scripting language embedded in the Cardano ledger and forms the basis of the Plutus Platform, an application development platform for developing distributed applications using the Cardano blockchain.</p>
</div>
<div class="paragraph">
<p>For more information about the projects, see the <a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#user-documentation">[user-documentation]</a>.</p>
</div>
<div class="paragraph">
<p>This repository contains:</p>
</div>
<div class="ulist">
<ul>
<li> <p>The implementation, specification, and mechanized metatheory of Plutus Core</p> </li>
<li> <p>Plutus Tx, the compiler from Haskell to Plutus Core.</p> </li>
</ul>
</div>
<div class="paragraph">
<p>For people who want to <strong>use</strong> the project, please consult the <a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/#user-documentation">[user-documentation]</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_development">Development</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="how-to-develop">How to develop and contribute to the project</h3>
<div class="paragraph">
<p>Run <code>nix develop</code> to enter the development shell and you will be presented with a list of available commands.</p>
</div>
<div class="paragraph">
<p><strong>*Please see <a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/CONTRIBUTING.html">CONTRIBUTING</a> for comprehensive documentation on how to contribute to the project, including development and submitting changes</strong></p>
</div>
</div>
<div class="sect2">
<h3 id="_how_to_submit_an_issue">How to submit an issue</h3>
<div class="paragraph">
<p>Issues can be filed in the <a href="https://github.com/input-output-hk/plutus/issues">GitHub Issue tracker</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_to_depend_on_the_project_from_another_haskell_project">How to depend on the project from another Haskell project</h3>
<div class="paragraph">
<p>The <code>plutus</code> libraries are published via <a href="https://input-output-hk.github.io/cardano-haskell-packages/">CHaP</a>. See the information there for how to use CHaP. After setting it up you should just be able to depend on the <code>plutus</code> packages as normal and cabal will find them.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_documentation">Documentation</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_user_documentation">User documentation</h3>
<div class="paragraph">
<p>The main documentation is located <a href="https://plutus.readthedocs.io/en/latest/">here</a>.</p>
</div>
<div class="paragraph">
<p>The latest documentation for the metatheory can be found <a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.plutus-metatheory-site/latest/download/1">here</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="_talks">Talks</h3>
<div class="ulist">
<ul>
<li> <p><a href="https://www.youtube.com/watch?v=MpWeg6Fg0t8">Functional Smart Contracts on Cardano (2020)</a>: an overview of the ideas behind the Plutus Platform.</p> </li>
<li> <p><a href="https://www.youtube.com/watch?v=usMPt8KpBeI">The Plutus Platform (2020)</a>: an overview of the Platform as a whole (including the Application Framework) at the time.</p> </li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_specifications_and_design">Specifications and design</h3>
<div class="ulist">
<ul>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.plutus-report/latest/download/1">Plutus Technical Report (draft)</a>: a technical report and design document for the project.</p> </li>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.plutus-core-spec/latest/download/1">Plutus Core Specification</a>: the formal specification of the core language.</p> </li>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.extended-utxo-spec/latest/download/1">Extended UTXO Model</a>: a design document for the core changes to the Cardano ledger.</p> </li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_academic_papers">Academic papers</h3>
<div class="ulist">
<ul>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.unraveling-recursion-paper/latest/download/1">Unraveling Recursion</a>: a description of some of the compilation strategies used in Plutus IR (<a href="https://doi.org/10.1007/978-3-030-33636-3_15">published version</a>).</p> </li>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.system-f-in-agda-paper/latest/download/1">System F in Agda</a>: a formal model of System F in Agda (<a href="https://doi.org/10.1007/978-3-030-33636-3_10">published version</a>).</p> </li>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.eutxo-paper/latest/download/1">The Extended UTXO Model</a>: a full presentation of the EUTXO ledger extension (<a href="https://doi.org/10.1007/978-3-030-54455-3_37">published version</a>).</p> </li>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.utxoma-paper/latest/download/1">UTXOma: UTXO with Multi-Asset Support</a>: a full presentation of the multi-asset ledger extension (<a href="https://doi.org/10.1007/978-3-030-61467-6_8">published version</a>).</p> </li>
<li> <p><a href="https://ci.iog.io/job/input-output-hk-plutus/master/x86_64-linux.packages.eutxoma-paper/latest/download/1">Native Custom Tokens in the Extended UTXO Model</a>: a discussion of the interaction of the multi-asset support with EUTXO (<a href="https://doi.org/10.1007/978-3-030-61467-6_7">published version</a>).</p> </li>
<li> <p><a href="https://arxiv.org/abs/2201.04919">Translation Certification for Smart Contracts</a>: a certifier of Plutus IR compiler passes written in Coq.</p> </li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_licensing">Licensing</h2>
<div class="sectionbody">
<div class="paragraph">
<p>You are free to copy, modify, and distribute this software under the terms of the Apache 2.0 license.</p>
</div>
<div class="paragraph">
<p>See the <a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/LICENSE">LICENSE</a> and <a href="https://raw.githubusercontent.com/IntersectMBO/plutus/master/NOTICE">NOTICE</a> files for details.</p>
</div>
</div>
</div>
+
+
+ IntersectMBO/cardano-ledger
+ 2023-12-24T01:51:14Z
+ tag:github.com,2023-12-24:/IntersectMBO/cardano-ledger
+
+ <p>The ledger implementation and specifications of the Cardano blockchain.</p><hr><h1 align="center">Cardano Ledger</h1>
<p align="center"> <a href="https://input-output-hk.github.io/cardano-engineering-handbook"> <img alt="CEH" src="https://img.shields.io/badge/policy-Cardano%20Engineering%20Handbook-informational?style=for-the-badge"> </a> <a href="https://github.com/intersectmbo/cardano-ledger/actions/workflows/haskell.yml"> <img alt="GitHub Workflow Status (master)" src="https://img.shields.io/github/actions/workflow/status/intersectmbo/cardano-ledger/haskell.yml?branch=master&style=for-the-badge"> </a> <a href="https://cardano-ledger.cardano.intersectmbo.org/"> <img alt="Haddock (master)" src="https://img.shields.io/badge/documentation-Haddock-yellow?style=for-the-badge"> </a> </p>
<p>This repository contains the formal specifications, executable models, and implementations of the Cardano Ledger.</p>
<p>The documents are built in our CI and can be readily accessed using the following links:</p>
<table>
<thead>
<tr>
<th>Era</th>
<th>Design Documents</th>
<th>Formal Specification</th>
<th>CDDL</th>
</tr>
</thead>
<tbody>
<tr>
<td>Byron</td>
<td></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/byron-blockchain.pdf" title="Specification of the Blockchain Layer">Chain Spec</a>, <a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/byron-ledger.pdf" title="A Formal Specification of the Cardano Ledger">Ledger Spec</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/tree/master/eras/byron/cddl-spec/byron.cddl">CDDL</a>, <a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/byron-binary.pdf">PDF</a></td>
</tr>
<tr>
<td>Shelley</td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/shelley-delegation.pdf" title="Design Specification for Delegation and Incentives in Cardano">Design</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/shelley-ledger.pdf" title="A Formal Specification of the Cardano Ledger">Spec</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/impl/cddl-files">CDDL</a></td>
</tr>
<tr>
<td>Allegra</td>
<td>Same as Mary era below</td>
<td>Same as Mary era below</td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/tree/master/eras/allegra/impl/cddl-files">CDDL</a></td>
</tr>
<tr>
<td>Mary</td>
<td><a href="https://eprint.iacr.org/2020/895" title="Multi-Currency Ledgers">Multi-Currency</a>, <a href="https://iohk.io/en/research/library/papers/utxoma-utxo-with-multi-asset-support/" title="UTXOma:UTXO with Multi-Asset Support">UTXOma</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/mary-ledger.pdf" title="A Formal Specification of the Cardano Ledger with a Native Multi-Asset Implementation">Spec</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/tree/master/eras/mary/impl/cddl-files">CDDL</a></td>
</tr>
<tr>
<td>Alonzo</td>
<td><a href="https://iohk.io/en/research/library/papers/the-extended-utxo-model/" title="The Extended UTXO Model">eUTXO</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/alonzo-ledger.pdf" title="A Formal Specification of the Cardano Ledger integrating Plutus Core">Spec</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/tree/master/eras/alonzo/impl/cddl-files">CDDL</a></td>
</tr>
<tr>
<td>Babbage</td>
<td><a href="https://iohk.io/en/research/library/papers/on-uc-secure-range-extension-and-batch-verification-for-ecvrf/" title="On UC-Secure Range Extension and Batch Verification for ECVRF">batch-verification</a>, <a href="https://github.com/cardano-foundation/CIPs/pull/159" title="Reference inputs">CIP-31</a>, <a href="https://github.com/cardano-foundation/CIPs/pull/160" title="Inline datums">CIP-32</a>, <a href="https://github.com/cardano-foundation/CIPs/pull/161" title="Reference scripts">CIP-33</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/babbage-ledger.pdf" title="Formal Specification of the Cardano Ledger for the Babbage era">Spec</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/tree/master/eras/babbage/impl/cddl-files">CDDL</a></td>
</tr>
<tr>
<td>Conway</td>
<td><a href="https://github.com/cardano-foundation/CIPs/tree/master/CIP-1694">CIP-1694</a></td>
<td><a href="https://github.com/intersectmbo/formal-ledger-specifications">Spec (WIP)</a></td>
<td><a href="https://github.com/intersectmbo/cardano-ledger/tree/master/eras/conway/impl/cddl-files">CDDL</a></td>
</tr>
</tbody>
</table>
<p>Other Documents:</p>
<ul>
<li><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/non-integer-calculations.pdf">Non-integer calculations specification</a>: details on the parts of the Shelley specification that use real numbers.</li>
<li><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/pool-ranking.pdf">Stake pool ranking specification</a>: details for a robust stake pool ranking mechanism.</li>
<li><a href="https://github.com/intersectmbo/cardano-ledger/releases/latest/download/small-step-semantics.pdf">Explanation of the small-step-semantics framework</a>: a guide to the notation and style used by our ledger rules.</li>
</ul>
<p>In addition, there is a formalization of the Ledger Specification in Isabelle/HOL which can be found <a href="https://github.com/input-output-hk/fm-ledger-formalization">here</a>.</p>
<p>Some user documentation is published on <a href="https://cardano-ledger.readthedocs.io/en/latest">Read the Docs</a></p>
<p>Haddock code documentation of the latest master branch is available <a href="https://input-output-hk.github.io/cardano-ledger">here</a>.</p>
<h1>Repository structure</h1>
<p>The directory structure of this repository is as follows:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron">Byron</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/ledger">ledger</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/ledger/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/ledger/executable-spec">executable-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/ledger/impl">implementation</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/chain">chain</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/chain/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/chain/executable-spec">executable-spec</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/byron/cddl-spec">cddl</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley">Shelley</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley/design-spec">design-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley/impl">implementation</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley/test-suite">tests</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley/impl/cddl-files">cddl</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/allegra">Allegra - Timelocks</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley-ma/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/allegra/impl">implementation</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley-ma/test-suite">tests</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/allegra">Mary - Multi-Assets</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley-ma/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/allegra/impl">implementation</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/shelley-ma/test-suite">tests</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/alonzo">Alonzo - Smart Contracts</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/alonzo/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/alonzo/impl">implementation</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/alonzo/impl/cddl-files">cddl</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/alonzo/test-suite">tests</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/babbage">Babbage</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/babbage/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/babbage/impl">implementation</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/babbage/impl/cddl-files">cddl</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/babbage/test-suite">tests</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/conway">Conway - Governance</a>
<ul>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/conway/formal-spec">formal-spec</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/conway/impl">implementation</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/conway/impl/cddl-files">cddl</a></li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/eras/conway/impl/test">tests</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/IntersectMBO/cardano-ledger/master/libs">Libraries</a></li>
</ul>
<h1>Building</h1>
<p>It is recommended to use <a href="https://nixos.org/nix/download.html"><code>nix</code></a> for building everything in this repository. Haskell files can be built with <a href="https://www.haskell.org/cabal/"><code>cabal</code></a> inside of a nix shell.</p>
<h2>Nix Cache</h2>
<p>When using <code>nix</code> it is recommended that you setup the cache, so that it can reuse built artifacts, reducing the compilation times dramatically:</p>
<p>If you are using <a href="https://nixos.org/">NixOS</a> add the snippet below to your <code>/etc/nixos/configuration.nix</code>:</p>
<pre><code>nix.settings = {
experimental-features = [ "nix-command" "flakes" ];
substituters = [
"https://cache.nixos.org"
"https://cache.iog.io"
];
trusted-public-keys = [
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
];
};
</code></pre>
<p>If you are using the <code>nix</code> package manager next to another operating system put the following in <code>/etc/nix/nix.conf</code>:</p>
<pre><code>experimental-features = nix-command flakes
substituters = https://cache.iog.io https://cache.nixos.org/
trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
</code></pre>
<h2>Building the LaTeX documents and executable specifications</h2>
<p>When using <code>nix</code> the documents and Haskell code can be readily built by running:</p>
<pre><code class="language-shell">nix build .#specs
</code></pre>
<p>The LaTeX documents will be placed inside a directory named <code>result</code>, e.g.:</p>
<pre><code class="language-shell">result/byron-ledger.pdf
result/shelley-delegation.pdf
result/non-integer-calculations.pdf
result/small-step-semantics.pdf
result/shelley-ledger.pdf
result/byron-blockchain.pdf
</code></pre>
<h2>Building individual LaTeX documents</h2>
<p>Change to the latex directory where the latex document is (e.g. <code>eras/shelley/formal-spec</code> for the ledger specification corresponding to the Shelley release, or <code>eras/byron/ledger/formal-spec</code> for the ledger specification corresponding to the Byron release). Then, build the latex document by running:</p>
<pre><code class="language-shell">cd <myLaTexDir>
nix develop --command make
</code></pre>
<p>For a continuous compilation of the <code>LaTeX</code> file run:</p>
<pre><code class="language-shell">cd <myLaTexDir>
nix develop --command make watch
</code></pre>
<h1>Testing</h1>
<p>Before running tests with <code>cabal test</code>, the <code>CARDANO_MAINNET_MIRROR</code> environment variable should be set to the path to <a href="https://github.com/input-output-hk/cardano-mainnet-mirror/tree/master/epochs">mainnet epochs</a> on your local storage. Note that this is only needed for the Byron tests.</p>
<h1>Submitting an issue</h1>
<p>Issues can be filed in the <a href="https://github.com/intersectmbo/cardano-ledger/issues">GitHub Issue tracker</a>.</p>
<p>However, note that this is pre-release software, so we will not usually be providing support.</p>
<h1>Contributing</h1>
<p>See <a href="https://github.com/intersectmbo/cardano-ledger/raw/master/CONTRIBUTING.md">CONTRIBUTING</a>.</p>
+
+
\ No newline at end of file
diff --git a/haxe/daily/index.xml b/haxe/daily/index.xml
index ce61e60c078..78fd938cdf7 100644
--- a/haxe/daily/index.xml
+++ b/haxe/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Haxe Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:19Z
+ 2023-12-24T01:34:36Z
Daily Trending of Haxe in GitHub
+
+ TheTerBobornator/funkinPhysicsSource
+ 2023-12-24T01:34:36Z
+ tag:github.com,2023-12-24:/TheTerBobornator/funkinPhysicsSource
+
+ <p>Funny FNF Mod Source</p><hr><h1>Friday Night Funkin' - Psych Engine</h1>
<p>Engine originally used on <a href="https://gamebanana.com/mods/301107">Mind Games Mod</a>, intended to be a fix for the vanilla version's many issues while keeping the casual play aspect of it. Also aiming to be an easier alternative to newbie coders.</p>
<h2>Installation:</h2>
<p>You must have <a href="https://haxe.org/download/">the most up-to-date version of Haxe</a>, seriously, stop using 4.1.5, it misses some stuff.</p>
<p>Follow a Friday Night Funkin' source code compilation tutorial, after this you will need to install LuaJIT.</p>
<p>To install LuaJIT do this: <code>haxelib git linc_luajit https://github.com/nebulazorua/linc_luajit</code> on a Command prompt/PowerShell</p>
<p>...Or if you don't want your mod to be able to run .lua scripts, delete the "LUA_ALLOWED" line on Project.xml</p>
<p>If you get an error about StatePointer when using Lua, run <code>haxelib remove linc_luajit</code> into Command Prompt/PowerShell, then re-install linc_luajit.</p>
<p>If you want video support on your mod, simply do <code>haxelib install hxCodec</code> on a Command prompt/PowerShell</p>
<p>otherwise, you can delete the "VIDEOS_ALLOWED" Line on Project.xml</p>
<h2>Credits:</h2>
<ul>
<li>Shadow Mario - Programmer</li>
<li>RiverOaken - Artist</li>
<li>Yoshubs - Assistant Programmer</li>
</ul>
<h3>Special Thanks</h3>
<ul>
<li>bbpanzu - Ex-Programmer</li>
<li>shubs - New Input System</li>
<li>SqirraRNG - Crash Handler and Base code for Chart Editor's Waveform</li>
<li>KadeDev - Fixed some cool stuff on Chart Editor and other PRs</li>
<li>iFlicky - Composer of Psync and Tea Time, also made the Dialogue Sounds</li>
<li>PolybiusProxy - .MP4 Video Loader Library (hxCodec)</li>
<li>Keoiki - Note Splash Animations</li>
<li>Smokey - Sprite Atlas Support</li>
<li>Nebula the Zorua - LUA JIT Fork and some Lua reworks</li>
</ul>
<hr>
<h1>Features</h1>
<h2>Attractive animated dialogue boxes:</h2>
<p><img src="https://user-images.githubusercontent.com/44785097/127706669-71cd5cdb-5c2a-4ecc-871b-98a276ae8070.gif" alt=""></p>
<h2>Mod Support</h2>
<ul>
<li>Probably one of the main points of this engine, you can code in .lua files outside of the source code, making your own weeks without even messing with the source!</li>
<li>Comes with a Mod Organizing/Disabling Menu.</li>
</ul>
<h2>Atleast one change to every week:</h2>
<h3>Week 1:</h3>
<ul>
<li>New Dad Left sing sprite</li>
<li>Unused stage lights are now used</li>
</ul>
<h3>Week 2:</h3>
<ul>
<li>Both BF and Skid & Pump does "Hey!" animations</li>
<li>Thunders does a quick light flash and zooms the camera in slightly</li>
<li>Added a quick transition/cutscene to Monster</li>
</ul>
<h3>Week 3:</h3>
<ul>
<li>BF does "Hey!" during Philly Nice</li>
<li>Blammed has a cool new colors flash during that sick part of the song</li>
</ul>
<h3>Week 4:</h3>
<ul>
<li>Better hair physics for Mom/Boyfriend (Maybe even slightly better than Week 7's <span>👀</span>)</li>
<li>Henchmen die during all songs. Yeah :(</li>
</ul>
<h3>Week 5:</h3>
<ul>
<li>Bottom Boppers and GF does "Hey!" animations during Cocoa and Eggnog</li>
<li>On Winter Horrorland, GF bops her head slower in some parts of the song.</li>
</ul>
<h3>Week 6:</h3>
<ul>
<li>On Thorns, the HUD is hidden during the cutscene</li>
<li>Also there's the Background girls being spooky during the "Hey!" parts of the Instrumental</li>
</ul>
<h2>Cool new Chart Editor changes and countless bug fixes</h2>
<p><img src="https://github.com/ShadowMario/FNF-PsychEngine/raw/main/docs/img/chart.png?raw=true" alt=""></p>
<ul>
<li>You can now chart "Event" notes, which are bookmarks that trigger specific actions that usually were hardcoded on the vanilla version of the game.</li>
<li>Your song's BPM can now have decimal values</li>
<li>You can manually adjust a Note's strum time if you're really going for milisecond precision</li>
<li>You can change a note's type on the Editor, it comes with two example types:
<ul>
<li>Alt Animation: Forces an alt animation to play, useful for songs like Ugh/Stress</li>
<li>Hey: Forces a "Hey" animation instead of the base Sing animation, if Boyfriend hits this note, Girlfriend will do a "Hey!" too.</li>
</ul> </li>
</ul>
<h2>Multiple editors to assist you in making your own Mod</h2>
<p><img src="https://user-images.githubusercontent.com/44785097/144629914-1fe55999-2f18-4cc1-bc70-afe616d74ae5.png" alt="Screenshot_3"></p>
<ul>
<li>Working both for Source code modding and Downloaded builds!</li>
</ul>
<h2>Story mode menu rework:</h2>
<p><img src="https://i.imgur.com/UB2EKpV.png" alt=""></p>
<ul>
<li>Added a different BG to every song (less Tutorial)</li>
<li>All menu characters are now in individual spritesheets, makes modding it easier.</li>
</ul>
<h2>Credits menu</h2>
<p><img src="https://user-images.githubusercontent.com/44785097/144632635-f263fb22-b879-4d6b-96d6-865e9562b907.png" alt="Screenshot_1"></p>
<ul>
<li>You can add a head icon, name, description and a Redirect link for when the player presses Enter while the item is currently selected.</li>
</ul>
<h2>Awards/Achievements</h2>
<ul>
<li>The engine comes with 16 example achievements that you can mess with and learn how it works (Check Achievements.hx and search for "checkForAchievement" on PlayState.hx)</li>
</ul>
<h2>Options menu:</h2>
<ul>
<li>You can change Note colors, Delay and Combo Offset, Controls and Preferences there.</li>
<li>On Preferences you can toggle Downscroll, Middlescroll, Anti-Aliasing, Framerate, Low Quality, Note Splashes, Flashing Lights, etc.</li>
</ul>
<h2>Other gameplay features:</h2>
<ul>
<li>When the enemy hits a note, their strum note also glows.</li>
<li>Lag doesn't impact the camera movement and player icon scaling anymore.</li>
<li>Some stuff based on Week 7's changes has been put in (Background colors on Freeplay, Note splashes)</li>
<li>You can reset your Score on Freeplay/Story Mode by pressing Reset button.</li>
<li>You can listen to a song or adjust Scroll Speed/Damage taken/etc. on Freeplay by pressing Space.</li>
</ul>
+
\ No newline at end of file
diff --git a/haxe/weekly/index.xml b/haxe/weekly/index.xml
new file mode 100644
index 00000000000..c64b61ae9a0
--- /dev/null
+++ b/haxe/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Haxe Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:13Z
+ Weekly Trending of Haxe in GitHub
+
+
\ No newline at end of file
diff --git a/hcl/daily/index.xml b/hcl/daily/index.xml
index 2c753701d73..6881f9e48f4 100644
--- a/hcl/daily/index.xml
+++ b/hcl/daily/index.xml
@@ -1,7 +1,14 @@
GitHub HCL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:19Z
+ 2023-12-24T01:34:36Z
Daily Trending of HCL in GitHub
+
+ rahulwagh/devops-project-1
+ 2023-12-24T01:34:36Z
+ tag:github.com,2023-12-24:/rahulwagh/devops-project-1
+
+ <p></p><hr>
+
\ No newline at end of file
diff --git a/hcl/weekly/index.xml b/hcl/weekly/index.xml
new file mode 100644
index 00000000000..0d18bf7544e
--- /dev/null
+++ b/hcl/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub HCL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:13Z
+ Weekly Trending of HCL in GitHub
+
+
+ devopstia/terraform-course-del
+ 2023-12-24T01:51:13Z
+ tag:github.com,2023-12-24:/devopstia/terraform-course-del
+
+ <p>DevOps Easy Learning AWS and Azure Terraform</p><hr>
+
+
+ aws-ia/terraform-aws-eks-blueprints-addon
+ 2023-12-24T01:51:13Z
+ tag:github.com,2023-12-24:/aws-ia/terraform-aws-eks-blueprints-addon
+
+ <p>Terraform AWS module which creates an EKS addon (helm release + IRSA)</p><hr>
+
+
+ LondheShubham153/terraform-practice
+ 2023-12-24T01:51:13Z
+ tag:github.com,2023-12-24:/LondheShubham153/terraform-practice
+
+ <p>some practice terraform scripts</p><hr>
+
+
\ No newline at end of file
diff --git a/hiveql/daily/index.xml b/hiveql/daily/index.xml
index 6e502583df1..16aec96d2e3 100644
--- a/hiveql/daily/index.xml
+++ b/hiveql/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HiveQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:27Z
+ 2023-12-24T01:34:42Z
Daily Trending of HiveQL in GitHub
\ No newline at end of file
diff --git a/hiveql/weekly/index.xml b/hiveql/weekly/index.xml
new file mode 100644
index 00000000000..64f1cbbceb0
--- /dev/null
+++ b/hiveql/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HiveQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:21Z
+ Weekly Trending of HiveQL in GitHub
+
+
\ No newline at end of file
diff --git a/hlsl/daily/index.xml b/hlsl/daily/index.xml
index f70f6b67805..54240157085 100644
--- a/hlsl/daily/index.xml
+++ b/hlsl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HLSL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:28Z
+ 2023-12-24T01:34:44Z
Daily Trending of HLSL in GitHub
\ No newline at end of file
diff --git a/hlsl/weekly/index.xml b/hlsl/weekly/index.xml
new file mode 100644
index 00000000000..0cda4eb240a
--- /dev/null
+++ b/hlsl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HLSL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:25Z
+ Weekly Trending of HLSL in GitHub
+
+
\ No newline at end of file
diff --git a/holyc/daily/index.xml b/holyc/daily/index.xml
index 5b2c1e3526c..46b6093e774 100644
--- a/holyc/daily/index.xml
+++ b/holyc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HolyC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:29Z
+ 2023-12-24T01:34:43Z
Daily Trending of HolyC in GitHub
\ No newline at end of file
diff --git a/holyc/weekly/index.xml b/holyc/weekly/index.xml
new file mode 100644
index 00000000000..2d8b7698adf
--- /dev/null
+++ b/holyc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HolyC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:23Z
+ Weekly Trending of HolyC in GitHub
+
+
\ No newline at end of file
diff --git a/hoon/daily/index.xml b/hoon/daily/index.xml
index aff794e7eca..b54de894e42 100644
--- a/hoon/daily/index.xml
+++ b/hoon/daily/index.xml
@@ -1,7 +1,7 @@
GitHub hoon Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:30Z
+ 2023-12-24T01:34:46Z
Daily Trending of hoon in GitHub
\ No newline at end of file
diff --git a/hoon/weekly/index.xml b/hoon/weekly/index.xml
new file mode 100644
index 00000000000..070a86b9669
--- /dev/null
+++ b/hoon/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub hoon Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:27Z
+ Weekly Trending of hoon in GitHub
+
+
+ urbit/numerics
+ 2023-12-24T01:51:27Z
+ tag:github.com,2023-12-24:/urbit/numerics
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/html+ecr/daily/index.xml b/html+ecr/daily/index.xml
index 6391f1cd8bb..251cfffa83f 100644
--- a/html+ecr/daily/index.xml
+++ b/html+ecr/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HTML+ECR Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:45Z
+ 2023-12-24T01:35:01Z
Daily Trending of HTML+ECR in GitHub
\ No newline at end of file
diff --git a/html+ecr/weekly/index.xml b/html+ecr/weekly/index.xml
new file mode 100644
index 00000000000..1c9f3f86065
--- /dev/null
+++ b/html+ecr/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HTML+ECR Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:42Z
+ Weekly Trending of HTML+ECR in GitHub
+
+
\ No newline at end of file
diff --git a/html+eex/daily/index.xml b/html+eex/daily/index.xml
index 6918f0a0f89..a1d11b34f14 100644
--- a/html+eex/daily/index.xml
+++ b/html+eex/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HTML+EEX Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:46Z
+ 2023-12-24T01:35:02Z
Daily Trending of HTML+EEX in GitHub
\ No newline at end of file
diff --git a/html+eex/weekly/index.xml b/html+eex/weekly/index.xml
new file mode 100644
index 00000000000..212af53b0cd
--- /dev/null
+++ b/html+eex/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HTML+EEX Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:44Z
+ Weekly Trending of HTML+EEX in GitHub
+
+
\ No newline at end of file
diff --git a/html+erb/daily/index.xml b/html+erb/daily/index.xml
index 0dbe5226daf..3101067af54 100644
--- a/html+erb/daily/index.xml
+++ b/html+erb/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HTML+ERB Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:48Z
+ 2023-12-24T01:35:00Z
Daily Trending of HTML+ERB in GitHub
\ No newline at end of file
diff --git a/html+erb/weekly/index.xml b/html+erb/weekly/index.xml
new file mode 100644
index 00000000000..17f7b17c50e
--- /dev/null
+++ b/html+erb/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HTML+ERB Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:44Z
+ Weekly Trending of HTML+ERB in GitHub
+
+
\ No newline at end of file
diff --git a/html+php/daily/index.xml b/html+php/daily/index.xml
index 98427e2f7ab..c07d7fdbeaa 100644
--- a/html+php/daily/index.xml
+++ b/html+php/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HTML+PHP Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:47Z
+ 2023-12-24T01:35:02Z
Daily Trending of HTML+PHP in GitHub
\ No newline at end of file
diff --git a/html+php/weekly/index.xml b/html+php/weekly/index.xml
new file mode 100644
index 00000000000..e103499fc95
--- /dev/null
+++ b/html+php/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HTML+PHP Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:43Z
+ Weekly Trending of HTML+PHP in GitHub
+
+
\ No newline at end of file
diff --git a/html+razor/daily/index.xml b/html+razor/daily/index.xml
index f35a6e0f5f6..24c75b8c729 100644
--- a/html+razor/daily/index.xml
+++ b/html+razor/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HTML+Razor Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:49Z
+ 2023-12-24T01:35:04Z
Daily Trending of HTML+Razor in GitHub
\ No newline at end of file
diff --git a/html+razor/weekly/index.xml b/html+razor/weekly/index.xml
new file mode 100644
index 00000000000..95080e72038
--- /dev/null
+++ b/html+razor/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HTML+Razor Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:46Z
+ Weekly Trending of HTML+Razor in GitHub
+
+
\ No newline at end of file
diff --git a/html/daily/index.xml b/html/daily/index.xml
index 2640fc95490..ce013005812 100644
--- a/html/daily/index.xml
+++ b/html/daily/index.xml
@@ -1,21 +1,21 @@
GitHub HTML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:36Z
+ 2023-12-24T01:34:51Z
Daily Trending of HTML in GitHub
- coreui/coreui-free-angular-admin-template
- 2023-12-23T01:30:36Z
- tag:github.com,2023-12-23:/coreui/coreui-free-angular-admin-template
-
- <p>CoreUI Angular is free Angular 17 admin template based on Bootstrap 5</p><hr><p><a href="https://github.com/coreui/angular"><img src="https://img.shields.io/badge/@coreui%20-angular-lightgrey.svg?style=flat-square" alt="@coreui angular"></a> <a href="https://www.npmjs.com/package/@coreui/angular"><img src="https://img.shields.io/npm/v/@coreui/angular.png?style=flat-square" alt="npm-coreui-angular"></a> <a href="https://www.npmjs.com/package/@coreui/angular"><img src="https://img.shields.io/npm/dm/@coreui/angular.svg?style=flat-square" alt="NPM downloads"></a><br> <a href="https://github.com/coreui/coreui"><img src="https://img.shields.io/badge/@coreui%20-coreui-lightgrey.svg?style=flat-square" alt="@coreui coreui"></a> <a href="https://www.npmjs.com/package/@coreui/coreui"><img src="https://img.shields.io/npm/v/@coreui/coreui.png?style=flat-square" alt="npm package"></a> <a href="https://www.npmjs.com/package/@coreui/coreui"><img src="https://img.shields.io/npm/dm/@coreui/coreui.svg?style=flat-square" alt="NPM downloads"></a><br> <img src="https://img.shields.io/badge/angular-%5E17.0.0-lightgrey.svg?style=flat-square&logo=angular" alt="angular"></p>
<h1>CoreUI Free Admin Dashboard Template for Angular 17</h1>
<p>CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means mobile devices also, where the navigation is just as easy and intuitive as on a desktop or laptop. The CoreUI Layout API lets you customize your project for almost any device – be it Mobile, Web or WebApp – CoreUI covers them all!</p>
<ul>
<li><a href="https://coreui.io/angular">CoreUI Angular Admin Dashboard Template & UI Components Library</a></li>
<li><a href="https://coreui.io/angular/demo/4.3/free/">CoreUI Angular Demo</a></li>
<li><a href="https://coreui.io/angular/docs/">CoreUI Angular Docs</a></li>
</ul>
<h2>Table of Contents</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#versions">Versions</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#coreui-pro">CoreUI Pro</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#quick-start">Quick Start</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#installation">Installation</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#basic-usage">Basic usage</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#whats-included">What's included</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#documentation">Documentation</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#versioning">Versioning</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#creators">Creators</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#community">Community</a></li>
<li><a href="https://raw.githubusercontent.com/coreui/coreui-free-angular-admin-template/main/#copyright-and-license">Copyright and License</a></li>
</ul>
<h2>Versions</h2>
<ul>
<li><a href="https://github.com/coreui/coreui-free-bootstrap-admin-template">CoreUI Free Bootstrap Admin Template</a></li>
<li><a href="https://github.com/coreui/coreui-free-angular-admin-template">CoreUI Free Angular Admin Template</a></li>
<li><a href="https://github.com/coreui/coreui-free-react-admin-template">CoreUI Free React.js Admin Template</a></li>
<li><a href="https://github.com/coreui/coreui-free-vue-admin-template">CoreUI Free Vue.js Admin Template</a></li>
</ul>
<h2>CoreUI Pro</h2>
<p><strong>Only customers with <a href="https://coreui.io/pro/#buy">Enterpise Membership Plan</a> have access to private GitHub CoreUI Pro repository.</strong></p>
<ul>
<li>💪 <a href="https://coreui.io/product/angular-dashboard-template/">CoreUI Pro Angular Admin Template</a></li>
<li>💪 <a href="https://coreui.io/product/bootstrap-dashboard-template/">CoreUI Pro Bootstrap Admin Template</a></li>
<li>💪 <a href="https://coreui.io/product/react-dashboard-template/">CoreUI Pro React Admin Template</a></li>
<li>💪 <a href="https://coreui.io/product/next-js-dashboard-template/">CoreUI Pro Next.js Admin Template</a></li>
<li>💪 <a href="https://coreui.io/product/vue-dashboard-template/">CoreUI Pro Vue Admin Template</a></li>
</ul>
<h2>Quick Start</h2>
<ul>
<li><a href="https://github.com/coreui/coreui-free-angular-admin-template/">Download the latest release</a></li>
<li>Clone the repo: <code>git clone https://github.com/coreui/coreui-free-angular-admin-template.git</code></li>
</ul>
<h4><i>Prerequisites</i></h4>
<p>Before you begin, make sure your development environment includes <code>Node.js®</code> and an <code>npm</code> package manager.</p>
<h6>Node.js</h6>
<p><a href="https://angular.io/guide/what-is-angular"><strong>Angular 17</strong></a> requires <code>Node.js</code> LTS version <code>^18.13</code> or <code>^20.09</code>.</p>
<ul>
<li>To check your version, run <code>node -v</code> in a terminal/console window.</li>
<li>To get <code>Node.js</code>, go to <a href="https://nodejs.org/">nodejs.org</a>.</li>
</ul>
<h6>Angular CLI</h6>
<p>Install the Angular CLI globally using a terminal/console window.</p>
<pre><code class="language-bash">npm install -g @angular/cli
</code></pre>
<h3>Installation</h3>
<pre><code class="language-bash">$ npm install
$ npm update
</code></pre>
<h3>Basic usage</h3>
<pre><code class="language-bash"># dev server with hot reload at http://localhost:4200
$ npm start
</code></pre>
<p>Navigate to <a href="http://localhost:4200">http://localhost:4200</a>. The app will automatically reload if you change any of the source files.</p>
<h4>Build</h4>
<p>Run <code>build</code> to build the project. The build artifacts will be stored in the <code>dist/</code> directory.</p>
<pre><code class="language-bash"># build for production with minification
$ npm run build
</code></pre>
<h2>What's included</h2>
<p>Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:</p>
<pre><code>coreui-free-angular-admin-template
├── src/ # project root
│ ├── app/ # main app directory
| │ ├── containers/ # layout containers
| | │ └── default-layout/ # layout containers
| | | └── _nav.js # sidebar navigation config
| │ ├── icons/ # icons set for the app
| │ └── views/ # application views
│ ├── assets/ # images, icons, etc.
│ ├── components/ # components for demo only
│ ├── scss/ # scss styles
│ └── index.html # html template
│
├── angular.json
├── README.md
└── package.json
</code></pre>
<h2>Documentation</h2>
<p>The documentation for the CoreUI Admin Template is hosted at our website <a href="https://coreui.io/angular/">CoreUI for Angular</a></p>
<hr>
<p>This project was generated with <a href="https://github.com/angular/angular-cli">Angular CLI</a> version 17.0.0.</p>
<h2>Versioning</h2>
<p>For transparency into our release cycle and in striving to maintain backward compatibility, CoreUI Free Admin Template is maintained under <a href="http://semver.org/">the Semantic Versioning guidelines</a>.</p>
<p>See <a href="https://github.com/coreui/coreui-free-angular-admin-template/releases">the Releases section of our project</a> for changelogs for each release version.</p>
<h2>Development server</h2>
<p>Run <code>ng serve</code> for a dev server. Navigate to <code>http://localhost:4200/</code>. The app will automatically reload if you change any of the source files.</p>
<h2>Code scaffolding</h2>
<p>Run <code>ng generate component component-name</code> to generate a new component. You can also use <code>ng generate directive|pipe|service|class|guard|interface|enum|module</code>.</p>
<h2>Build</h2>
<p>Run <code>ng build</code> to build the project. The build artifacts will be stored in the <code>dist/</code> directory.</p>
<h2>Running unit tests</h2>
<p>Run <code>ng test</code> to execute the unit tests via <a href="https://karma-runner.github.io">Karma</a>.</p>
<h2>Running end-to-end tests</h2>
<p>Run <code>ng e2e</code> to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.</p>
<h2>Further help</h2>
<p>To get more help on the Angular CLI use <code>ng help</code> or go check out the <a href="https://angular.io/cli">Angular CLI Overview and Command Reference</a> page.</p>
<h2>Creators</h2>
<p><strong>Łukasz Holeczek</strong></p>
<ul>
<li><a href="https://twitter.com/lukaszholeczek">https://twitter.com/lukaszholeczek</a></li>
<li><a href="https://github.com/mrholek">https://github.com/mrholek</a></li>
<li><a href="https://github.com/coreui">https://github.com/coreui</a></li>
</ul>
<p><strong>CoreUI team</strong></p>
<ul>
<li><a href="https://github.com/orgs/coreui/people">https://github.com/orgs/coreui/people</a></li>
</ul>
<h2>Community</h2>
<p>Get updates on CoreUI's development and chat with the project maintainers and community members.</p>
<ul>
<li>Follow <a href="https://twitter.com/core_ui">@core_ui on Twitter</a>.</li>
<li>Read and subscribe to <a href="https://coreui.io/blog/">CoreUI Blog</a>.</li>
</ul>
<h2>Support CoreUI Development</h2>
<p>CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the <a href="https://coreui.io/pricing/">CoreUI PRO</a> or by becoming a sponsor via <a href="https://opencollective.com/coreui/">Open Collective</a>.</p>
<!-- StartOpenCollectiveBackers -->
<h3>Platinum Sponsors</h3>
<p>Support this project by <a href="https://opencollective.com/coreui/contribute/platinum-sponsor-40959/">becoming a Platinum Sponsor</a>. A large company logo will be added here with a link to your website.</p>
<p><a href="https://opencollective.com/coreui/contribute/platinum-sponsor-40959/checkout"><img src="https://opencollective.com/coreui/tiers/platinum-sponsor/0/avatar.svg?avatarHeight=100"></a></p>
<h3>Gold Sponsors</h3>
<p>Support this project by <a href="https://opencollective.com/coreui/contribute/gold-sponsor-40960/">becoming a Gold Sponsor</a>. A big company logo will be added here with a link to your website.</p>
<p><a href="https://opencollective.com/coreui/contribute/gold-sponsor-40960/checkout"><img src="https://opencollective.com/coreui/tiers/gold-sponsor/0/avatar.svg?avatarHeight=100"></a></p>
<h3>Silver Sponsors</h3>
<p>Support this project by <a href="https://opencollective.com/coreui/contribute/silver-sponsor-40967/">becoming a Silver Sponsor</a>. A medium company logo will be added here with a link to your website.</p>
<p><a href="https://opencollective.com/coreui/contribute/silver-sponsor-40967/checkout"><img src="https://opencollective.com/coreui/tiers/gold-sponsor/0/avatar.svg?avatarHeight=100"></a></p>
<h3>Bronze Sponsors</h3>
<p>Support this project by <a href="https://opencollective.com/coreui/contribute/bronze-sponsor-40966/">becoming a Bronze Sponsor</a>. The company avatar will show up here with a link to your OpenCollective Profile.</p>
<p><a href="https://opencollective.com/coreui/contribute/bronze-sponsor-40966/checkout"><img src="https://opencollective.com/coreui/tiers/bronze-sponsor/0/avatar.svg?avatarHeight=100"></a></p>
<h3>Backers</h3>
<p>Thanks to all the backers and sponsors! Support this project by <a href="https://opencollective.com/coreui/contribute/backer-40965/">becoming a backer</a>.</p>
<p><a href="https://opencollective.com/coreui/contribute/backer-40965/checkout" target="_blank" rel="noopener"><img src="https://opencollective.com/coreui/backers.svg?width=890"></a></p>
<!-- EndOpenCollectiveBackers -->
<h2>Copyright and License</h2>
<p>copyright 2017-2023 creativeLabs Łukasz Holeczek.</p>
<p>Code released under <a href="https://github.com/coreui/coreui-free-react-admin-template/raw/master/LICENSE">the MIT license</a>. There is only one limitation you can't re-distribute the CoreUI as stock. You can’t do this if you modify the CoreUI. In the past, we faced some problems with persons who tried to sell CoreUI based templates.</p>
+ MetaMask/metamask-sdk
+ 2023-12-24T01:34:51Z
+ tag:github.com,2023-12-24:/MetaMask/metamask-sdk
+
+ <p>The simplest yet most secure way to connect your blockchain-based applications to millions of MetaMask Wallet users.</p><hr><h1>MetaMask SDK</h1>
<p><a href="https://codecov.io/gh/MetaMask/metamask-sdk"><img src="https://codecov.io/gh/MetaMask/metamask-sdk/graph/badge.svg?token=6B3Z3724OO" alt="codecov"></a></p>
<p>MetaMask SDK enables developers to easily connect their dapps with the MetaMask browser extension and MetaMask Mobile.</p>
<p>It supports the following dapp platforms:</p>
<ul>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/">Javascript-based apps</a>
<ul>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/react/">React</a></li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/pure-js/">Pure JavaScript</a></li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/other-web-frameworks/">Other web frameworks</a></li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/react-native/">React Native</a></li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/nodejs/">Node.js</a></li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/electron/">Electron</a></li>
</ul> </li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/gaming/">Gaming apps</a>
<ul>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/gaming/unity/">Unity</a></li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/gaming/unreal-engine/">Unreal Engine</a> (coming soon)</li>
</ul> </li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/mobile/">Mobile Native apps</a>
<ul>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/mobile/ios/">iOS</a></li>
<li><a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/mobile/android/">Android</a></li>
</ul> </li>
</ul>
<p>Read more about <a href="https://docs.metamask.io/sdk">setting up MetaMask SDK</a> and <a href="https://docs.metamask.io/wallet/concepts/sdk/">MetaMask SDK concepts</a>.</p>
<p>This repository contains the JavaScript SDK and examples. You can also see the <a href="https://github.com/MetaMask/metamask-android-sdk/tree/main">Android SDK repository</a> and the <a href="https://github.com/MetaMask/metamask-ios-sdk/tree/main">iOS SDK repository</a>.</p>
<h2>Features</h2>
<ul>
<li>Session persistence</li>
<li>Multi MetaMask provider (let user choose between browser extension and mobile wallet)</li>
<li>Batch RPC calls (send multiple requests to your wallet at once)</li>
<li>Read-only RPC calls and Infura integration</li>
<li>Wagmi hook integration (alpha)</li>
<li>i18n</li>
<li>Full modal UI customization</li>
<li>Smart contract library (coming soon)</li>
</ul>
<h2>Get started</h2>
<p>Install the SDK:</p>
<pre><code class="language-bash">yarn add @metamask/sdk
</code></pre>
<p>or</p>
<pre><code class="language-bash">npm i @metamask/sdk
</code></pre>
<h3>Web dapps</h3>
<p><img src="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/docs/demo_web.gif" alt=""></p>
<p>See the following examples:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/packages/examples/nextjs-demo/README.md">Next.js</a></li>
<li><a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/packages/examples/create-react-app/README.md">React</a></li>
<li><a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/packages/examples/vuejs/README.md">Vue.js</a></li>
<li><a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/packages/examples/pure-javascript/README.md">Pure JavaScript</a></li>
</ul>
<p>Read the documentation for <a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/">using the SDK with JavaScript</a> for more information.</p>
<h3>React Native</h3>
<p><img src="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/docs/demo_rn_ios.gif" alt=""></p>
<p>We recommend using React Native v0.71.4 or higher to avoid performance issues on Android.</p>
<p>See the <a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/packages/examples/reactNativeDemo/README.md">React Native example</a> and read the documentation for <a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/react-native/">using the SDK with React Native</a> for more information.</p>
<h3>Node.js</h3>
<p><img src="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/docs/demo_nodejs.gif" alt=""></p>
<p>See the <a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/packages/examples/nodejs/README.md">Node.js example</a> and read the documentation for <a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/nodejs/">using the SDK with Node.js</a> for more information.</p>
<h3>Electron</h3>
<p><img src="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/docs/demo_electron.gif" alt=""></p>
<p>See the <a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/packages/examples/electronjs/README.md">Electron example</a> and read the documentation for <a href="https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/electron/">using the SDK with Electron</a> for more information.</p>
<h2>SDK options</h2>
<p>See the full list of <a href="https://docs.metamask.io/wallet/reference/sdk-js-options/">JavaScript SDK options</a>.</p>
<h2>Contributing</h2>
<p>To contribute to MetaMask SDK, see the <a href="https://raw.githubusercontent.com/MetaMask/metamask-sdk/main/docs/contributing.md">contribution guidelines</a>.</p>
<h2>Contacts</h2>
<p>Fill out <a href="https://fq1an8d8ib2.typeform.com/to/sC7eK5F1">this form</a> for a complimentary design optimization workshop.</p>
- Balackburn/Apollo
- 2023-12-23T01:30:36Z
- tag:github.com,2023-12-23:/Balackburn/Apollo
-
- <p>Altstore source and website for Apollo for Reddit (with ImprovedCustomApi)</p><hr><p align="center"> <img src="https://gcdnb.pbrd.co/images/kg9RipitmGD1.png" alt="Apollo for Reddit Banner"> </p>
<p><a href="https://developer.apple.com/iphone/index.action"><img src="http://img.shields.io/badge/platform-iOS/iPadOS/macOS-blue.svg?sanitize=true" alt="Platform"></a> <img src="https://img.shields.io/github/downloads/Balackburn/Apollo/total" alt="Release"> <img src="https://img.shields.io/github/issues-raw/Balackburn/Apollo" alt="GitHub issues"></p>
<p><a href="https://tinyurl.com/ApolloAltstore"><img src="https://balackburn.github.io/Apollo/images/UI/image_1.webp" width="200"></a> <a href="https://altsource.by.lao.sb/browse/?source=https%3A%2F%2Fraw.githubusercontent.com%2FBalackburn%2FApollo%2Fmain%2Fapps.json"><img src="https://gcdnb.pbrd.co/images/Nfl3CG8rT8Va.png" width="200"></a> <a href="https://balackburn.github.io/Apollo/apps.json"><img src="https://gcdnb.pbrd.co/images/pxhwQTTDPu2j.png" width="200"></a></p>
<h1>Original Tweak</h1>
<p><a href="https://github.com/JeffreyCA/Apollo-ImprovedCustomApi"><img src="https://gcdnb.pbrd.co/images/2iBhWuIGPH1y.png" width="200"></a></p>
<h1>Website</h1>
<p><a href="https://balackburn.github.io/Apollo"><img src="https://github.com/Balackburn/YTLitePlus/assets/93828569/55b3dd67-b677-4f0d-a5e5-8701c421149e" width="200"></a> </p>
<h1>From</h1>
<p><a href="https://github.com/JeffreyCA/Apollo-ImprovedCustomApi">https://github.com/JeffreyCA/Apollo-ImprovedCustomApi</a></p>
<p><a href="https://apolloapp.io/">https://apolloapp.io/</a></p>
+ opensearch-project/documentation-website
+ 2023-12-24T01:34:51Z
+ tag:github.com,2023-12-24:/opensearch-project/documentation-website
+
+ <p>The documentation for OpenSearch, OpenSearch Dashboards, and their associated plugins.</p><hr><img src="https://opensearch.org/assets/img/opensearch-logo-themed.svg?sanitize=true" height="64px">
<h1>About the OpenSearch documentation repo</h1>
<p>The <code>documentation-website</code> repository contains the user documentation for OpenSearch. You can find the rendered documentation at <a href="https://opensearch.org/docs">opensearch.org/docs</a>.</p>
<h2>Contributing</h2>
<p>Community contributions remain essential to keeping the documentation comprehensive, useful, well organized, and up to date. If you are interested in submitting an issue or contributing content, see <a href="https://raw.githubusercontent.com/opensearch-project/documentation-website/main/CONTRIBUTING.md">CONTRIBUTING</a>.</p>
<p>The following resources provide important guidance regarding contributions to the documentation:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/opensearch-project/documentation-website/main/STYLE_GUIDE.md">OpenSearch Project Style Guidelines</a> -- The style guide covers the style standards to be observed when creating OpenSearch Project content.</li>
<li><a href="https://raw.githubusercontent.com/opensearch-project/documentation-website/main/TERMS.md">OpenSearch terms</a> -- The terms list contains key OpenSearch terms and tips on how and when to use them.</li>
<li><a href="https://raw.githubusercontent.com/opensearch-project/documentation-website/main/API_STYLE_GUIDE.md">API Style Guide</a> -- The API Style Guide provides the basic structure for creating OpenSearch API documentation.</li>
<li><a href="https://raw.githubusercontent.com/opensearch-project/documentation-website/main/FORMATTING_GUIDE.md">Formatting Guide</a> -- The OpenSearch documentation uses a modified version of the <a href="https://github.com/pmarsceill/just-the-docs">just-the-docs</a> Jekyll theme. The Formatting Guide provides an overview of the commonly used formatting elements and how to add a page to the website.</li>
</ul>
<h2>Points of contact</h2>
<p>If you encounter problems or have questions when contributing to the documentation, these people can help:</p>
<ul>
<li><a href="https://github.com/hdhalter">hdhalter</a></li>
<li><a href="https://github.com/kolchfa-aws">kolchfa-aws</a></li>
<li><a href="https://github.com/Naarcha-AWS">Naarcha-AWS</a></li>
<li><a href="https://github.com/vagimeli">vagimeli</a></li>
</ul>
<h2>Code of conduct</h2>
<p>This project has adopted an <a href="https://opensearch.org/codeofconduct.html">Open Source Code of Conduct</a>.</p>
<h2>Security</h2>
<p>If you discover a potential security issue in this project, we ask that you notify AWS/Amazon Security using our <a href="http://aws.amazon.com/security/vulnerability-reporting/">vulnerability reporting page</a>. Do <strong>not</strong> create a public GitHub issue.</p>
<h2>License</h2>
<p>This project is licensed under the <a href="https://raw.githubusercontent.com/opensearch-project/documentation-website/main/LICENSE">Apache 2.0 License</a>.</p>
<h2>Copyright</h2>
<p>Copyright OpenSearch contributors.</p>
\ No newline at end of file
diff --git a/html/weekly/index.xml b/html/weekly/index.xml
new file mode 100644
index 00000000000..d93da2994a4
--- /dev/null
+++ b/html/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub HTML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:31Z
+ Weekly Trending of HTML in GitHub
+
+
+ mouredev/python-web
+ 2023-12-24T01:51:31Z
+ tag:github.com,2023-12-24:/mouredev/python-web
+
+ <p>Curso para aprender desarrollo frontend Web con Python puro desde cero. Elaborado durante las emisiones en directo desde Twitch de MoureDev.</p><hr><h1>Python Web</h1>
<p><a href="https://python.org"><img src="https://img.shields.io/badge/Python-3.11+-yellow?style=for-the-badge&logo=python&logoColor=white&labelColor=101010" alt="Python"></a> <a href="https://reflex.dev"><img src="https://img.shields.io/badge/Reflex-0.3.6+-5646ED?style=for-the-badge&logo=reflex&logoColor=white&labelColor=101010" alt="Reflex"></a></p>
<h2>Curso de 6 horas en vídeo para aprender desarrollo web frontend con Python puro y Reflex desde cero.</h2>
<p><img src="https://raw.githubusercontent.com/mouredev/python-web/main/Images/header.jpg" alt=""></p>
<h3>Proyecto realizado durante emisiones en directo desde <a href="https://twitch.tv/mouredev">Twitch</a></h3>
<blockquote>
<h5>Si consideras útil el curso, apóyalo haciendo "★ Star" en el repositorio. ¡Gracias!</h5>
</blockquote>
<h2>Tutorial en vídeo</h2>
<p><a href="https://youtu.be/n2YrGsXJC6Y"><img src="http://i3.ytimg.com/vi/n2YrGsXJC6Y/maxresdefault.jpg" style="height: 50%; width:50%;"></a></p>
<ul>
<li><a href="https://youtu.be/n2YrGsXJC6Y">Curso de Python Web</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=272">Lección 1 - Introducción</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=1147">Lección 2 - Características</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=1551">Lección 3 - Instalación</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=3043">Lección 4 - Primeros pasos</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=3442">Lección 5 - Fundamentos</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=4259">Lección 6 - Hola mundo</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=4593">Lección 7 - Componentes</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=6805">Lección 8 - Maquetación</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=9190">Lección 9 - Estilos</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=13807">Lección 10 - Colores e iconos</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=15124">Lección 11 - Fuentes</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=16249">Lección 12 - Imágenes</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=17505">Lección 13 - Fuentes remotas</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=18225">Lección 14 - Diseño responsive</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=19058">Lección 15 - Accesibilidad</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=19283">Lección 16 - Despliegue</a></li>
<li><a href="https://youtu.be/n2YrGsXJC6Y&t=20892">Próximos pasos</a></li>
</ul>
<blockquote>
<p>Tienes un canal llamado <strong>"python"</strong> en el servidor de <strong><a href="https://mouredev.com/discord">Discord</a></strong> de la comunidad para preguntar, compartir y ayudar.</p>
</blockquote>
<h2>Proyecto</h2>
<p><a href="https://moure.dev"><img src="https://raw.githubusercontent.com/mouredev/python-web/main/Images/web.png" style="height: 50%; width:50%;"></a> <a href="https://raw.githubusercontent.com/mouredev/python-web/main/link_bio"><img src="https://raw.githubusercontent.com/mouredev/python-web/main/Images/web.gif" style="height: 50%; width:50%;"></a></p>
<p>Durante el curso aprenderemos desarrollo web con Python puro utilizando el framework <a href="https://github.com/reflex-dev/reflex">Reflex</a>. Realizaremos un proyecto práctico que consistirá en desarrollar y publicar mi nueva web de links <a href="https://moure.dev/">moure.dev</a> (añadiéndole nuevas funcionalidades). Todo el código está disponible para que cualquiera pueda usarlo.</p>
<h3>💻 <a href="https://raw.githubusercontent.com/mouredev/python-web/main/link_bio">Accede al código del proyecto</a></h3>
<h2>Tutorial extra en vídeo (+3 horas)</h2>
<p><a href="https://youtu.be/h8Tn0ITRoQs"><img src="http://i3.ytimg.com/vi/h8Tn0ITRoQs/maxresdefault.jpg" style="height: 50%; width:50%;"></a></p>
<p>Proyecto práctico extra de código libre que consistirá en desarrollar y publicar la web del <a href="https://adviento.dev/">Calendario de aDEViento</a> de la comunidad. Una activdad donde repartimos cursos y libros sobre programación en Navidad.</p>
<h3>💻 <a href="https://github.com/mouredev/adeviento-web">Accede al código del proyecto extra</a></h3>
<h2>Información importante y preguntas frecuentes</h2>
<p>Todo el contenido se crea en directo desde <a href="https://www.twitch.tv/mouredev">Twitch</a>, y en este repositorio podrás encontrar las clases en vídeo, el código programado, enlaces de interés y la información relevante.</p>
<ul>
<li>Es un curso desde cero y no necesitas conocimientos previos sobre desarrollo web.</li>
<li>Recuerda que he creado en el <a href="https://discord.gg/mouredev">Discord</a> un canal "🐍python" para que puedas comentar lo que quieras.</li>
</ul>
<h2>Curso finalizado... ¿Ya está?</h2>
<p>Este curso continuará en una segunda parte donde aprenderemos sobre backend, routers, APIs, bases de datos y mucho más...</p>
<p><em>Estén atento al repositorio y mis <a href="https://moure.dev">redes sociales</a> para no perderte la continuación.</em></p>
<h2>Enlaces de interés</h2>
<ul>
<li><a href="https://www.python.org/">Web oficial de Python</a></li>
<li><a href="https://reflex.dev/">Web oficial de Reflex</a></li>
<li><a href="https://reflex.dev/docs/">Documentación oficial de Reflex</a></li>
<li><a href="https://github.com/reflex-dev/reflex">Repositorio en GitHub de Reflex</a></li>
<li><a href="https://vscode.dev/">Visual Studio Code</a></li>
<li><a href="https://www.w3schools.com/css/">Documentación CSS</a></li>
<li><a href="https://web.dev/learn/css/">Curso de CSS</a></li>
<li><a href="https://chakra-ui.com/">Chakra UI</a></li>
<li><a href="https://fonts.google.com/">Google Fonts</a></li>
<li><a href="https://fontawesome.com/">Font Awesome</a></li>
<li><a href="https://vercel.com/">Vercel</a></li>
</ul>
<h2>Curso de Python desde cero</h2>
<h3>Aprende Python desde sus fundamentos</h3>
<p><a href="https://github.com/mouredev/hello-python"><img src="https://raw.githubusercontent.com/mouredev/Hello-Python/main/Images/header.jpg"></a></p>
<p>Si quieres aprender desde cero, tienes gratis todos los tutoriales que he creado. Más de 25 horas desde fundamentos, backend o integración con IA.</p>
<p><a href="https://github.com/mouredev/hello-python"><img src="https://img.shields.io/github/stars/mouredev/hello-python?label=Curso%20Python%20desde%20cero&style=social" alt="Curso Python"></a></p>
<h4>Puedes apoyar mi trabajo haciendo "☆ Star" en el repo o nominarme a "GitHub Star". ¡Gracias!</h4>
<p><a href="https://stars.github.com/nominate/"><img src="https://img.shields.io/badge/GitHub-Nominar_a_star-yellow?style=for-the-badge&logo=github&logoColor=white&labelColor=101010" alt="GitHub Star"></a></p>
<p>Si quieres unirte a nuestra comunidad de desarrollo, aprender programación de Apps, mejorar tus habilidades y ayudar a la continuidad del proyecto, puedes encontrarnos en:</p>
<p><a href="https://twitch.tv/mouredev"><img src="https://img.shields.io/badge/Twitch-Programaci%C3%B3n_en_directo-9146FF?style=for-the-badge&logo=twitch&logoColor=white&labelColor=101010" alt="Twitch"></a> <a href="https://mouredev.com/discord"><img src="https://img.shields.io/badge/Discord-Servidor_de_la_comunidad-5865F2?style=for-the-badge&logo=discord&logoColor=white&labelColor=101010" alt="Discord"></a> <a href="https://moure.dev"><img src="https://img.shields.io/badge/Links_de_inter%C3%A9s-moure.dev-39E09B?style=for-the-badge&logo=Linktree&logoColor=white&labelColor=101010" alt="Link"></a></p>
<h2><img src="https://raw.githubusercontent.com/mouredev/mouredev/master/mouredev_emote.png" alt="https://mouredev.com"> Hola, mi nombre es Brais Moure.</h2>
<h3>Freelance full-stack iOS & Android engineer</h3>
<p><a href="https://youtube.com/mouredevapps?sub_confirmation=1"><img src="https://img.shields.io/youtube/channel/subscribers/UCxPD7bsocoAMq8Dj18kmGyQ?style=social" alt="YouTube Channel Subscribers"></a> <a href="https://twitch.com/mouredev"><img src="https://img.shields.io/twitch/status/mouredev?style=social" alt="Twitch Status"></a> <a href="https://mouredev.com/discord"><img src="https://img.shields.io/discord/729672926432985098?style=social&label=Discord&logo=discord" alt="Discord"></a> <a href="https://twitter.com/mouredev"><img src="https://img.shields.io/twitter/follow/mouredev?style=social" alt="Twitter Follow"></a> <img src="https://img.shields.io/github/followers/mouredev?style=social" alt="GitHub Followers"> <img src="https://img.shields.io/github/stars/mouredev?style=social" alt="GitHub Followers"></p>
<p>Soy ingeniero de software desde hace más de 13 años. Desde hace 5 años combino mi trabajo desarrollando Apps con creación de contenido formativo sobre programación y tecnología en diferentes redes sociales como <strong><a href="https://moure.dev">@mouredev</a></strong>.</p>
<h3>En mi perfil de GitHub tienes más información</h3>
<p><a href="https://github.com/mouredev"><img src="https://img.shields.io/badge/GitHub-MoureDev-14a1f0?style=for-the-badge&logo=github&logoColor=white&labelColor=101010" alt="Web"></a></p>
+
+
+ solidjs/solid-start
+ 2023-12-24T01:51:31Z
+ tag:github.com,2023-12-24:/solidjs/solid-start
+
+ <p>SolidStart, the Solid app framework</p><hr><p> <img width="100%" src="https://assets.solidjs.com/banner?project=Start&type=core" alt="Solid Docs"> </p>
<h1>SolidStart</h1>
<h3>Start has just entered a new Beta Phase</h3>
<p>v0.4.x marks a significant change in the project. Please check the updated docs and example projects to see how things have changed. A summary of the chances can be found in the <a href="https://github.com/solidjs/solid-start/discussions/1052">RFC</a>.</p>
<hr>
<p>This is the home of the Solid app framework. This is still a <strong>work in progress</strong>. Many features are missing or incomplete. Experimental status does not even mean beta status. Patch releases will break everything.</p>
<h2>Features</h2>
<ul>
<li>File-system based routing</li>
<li>Supports all rendering modes:
<ul>
<li>Server-side rendering (SSR)</li>
<li>Streaming SSR</li>
<li>Client-side rendering (CSR)</li>
<li>Static Site Generation (SSG)</li>
</ul> </li>
<li>Streaming</li>
<li>Build optimizations with Code splitting, tree shaking and dead code elimination</li>
<li>API Routes</li>
<li>Built on Web standards like Fetch, Streams, and WebCrypto</li>
<li>Adapters for deployment to all popular platforms</li>
<li>CSS Modules, SASS/SCSS Support</li>
<li>TypeScript-first</li>
</ul>
<h3>Getting started</h3>
<p>Create a SolidStart application and run a development server using your preferred package manager:</p>
<pre><code class="language-bash">mkdir my-app
cd my-app
# with npm
npm init solid@latest
npm install
npm run dev
# or with pnpm
pnpm create solid@latest
pnpm install
pnpm dev
# or with Bun
bunx create-solid@latest
bun install
bun run dev
</code></pre>
<h3>Development</h3>
<p>You should use a node version manager <a href="https://stackoverflow.com/a/62978089/565877">compatible with <code>.node-version</code></a> (<a href="https://asdf-vm.com/">asdf-vm</a> is a great option mac/linux users)</p>
<p>The monorepo uses <code>pnpm</code> as the package manager. To install <code>pnpm</code>, run the following command in your terminal.</p>
<pre><code class="language-bash">npm install -g pnpm
</code></pre>
<p>Run <code>pnpm install</code> to install all the dependencies for the packages and examples in your monorepo.</p>
<details>
<summary><h4>Monorepo & <code>project.json</code> <code>"workspace"</code> support</h4></summary>
<p>If you are using Solid Start within a monorepo that takes advantage of the <code>package.json</code> <code>"workspaces"</code> property (e.g. <a href="https://classic.yarnpkg.com/en/docs/workspaces/">yarn workspaces</a>) with hoisted dependencies (the default for yarn), you must include <code>solid-start</code> within the optional <code>"nohoist"</code> (for yarn v2 or higher, see further down for instructions) workspaces property.</p>
<ul>
<li><em>In the following, "workspace root" refers to the root of your repository while "project root" refers to the root of a child package within your repository</em></li>
</ul>
<p>For example, if specifying <code>"nohoist"</code> options from the workspace root (i.e. for all packages):</p>
<pre><code class="language-jsonc">// in workspace root
{
"workspaces": {
"packages": [
/* ... */
],
"nohoist": ["**/solid-start"]
}
}
</code></pre>
<p>If specifying <code>"nohoist"</code> options for a specific package using <code>solid-start</code>:</p>
<pre><code class="language-jsonc">// in project root of a workspace child
{
"workspaces": {
"nohoist": ["solid-start"]
}
}
</code></pre>
<p>Regardless of where you specify the <code>nohoist</code> option, you also need to include <code>solid-start</code> as a <code>devDependency</code> in the child <code>package.json</code>.</p>
<p>The reason why this is necessary is because <code>solid-start</code> creates an <code>index.html</code> file within your project which expects to load a script located in <code>/node_modules/solid-start/runtime/entry.jsx</code> (where <code>/</code> is the path of your project root). By default, if you hoist the <code>solid-start</code> dependency into the workspace root then that script will not be available within the package's <code>node_modules</code> folder.</p>
<p><strong>Yarn v2 or higher</strong></p>
<p>The <code>nohoist</code> option is no longer available in Yarn v2+. In this case, we can use the <code>installConfig</code> property in the <code>package.json</code> (either workspace package or a specific project package) to make sure our deps are not hoisted.</p>
<pre><code class="language-jsonc">// in project root of a workspace child
{
"installConfig": {
"hoistingLimits": "dependencies"
}
}
</code></pre>
</details>
<h3>Credits</h3>
<p>All credit for the work on Forms and Sessions goes to the @remix-run team, MIT License, Copyright 2021 Remix Software Inc.</p>
+
+
+ tc39/proposal-pipeline-operator
+ 2023-12-24T01:51:31Z
+ tag:github.com,2023-12-24:/tc39/proposal-pipeline-operator
+
+ <p>A proposal for adding a useful pipe operator to JavaScript.</p><hr><h1>Pipe Operator (<code>|></code>) for JavaScript</h1>
<ul>
<li><strong>Stage</strong>: 2</li>
<li><strong>Champions</strong>: J. S. Choi, James DiGioia, Ron Buckton, Tab Atkins-Bittner, [list incomplete]
<!-- Alpha order by first name, plz --></li>
<li><strong>Former champions</strong>: Daniel Ehrenberg</li>
<li><strong><a href="http://tc39.github.io/proposal-pipeline-operator/">Specification</a></strong></li>
<li><strong><a href="https://github.com/tc39/proposal-pipeline-operator/raw/main/CONTRIBUTING.md">Contributing guidelines</a></strong></li>
<li><strong><a href="https://github.com/tc39/proposal-pipeline-operator/raw/main/HISTORY.md">Proposal history</a></strong></li>
<li><strong>Babel plugin</strong>: <a href="https://babeljs.io/blog/2021/07/26/7.15.0#hack-style-pipeline-operator-support-13191httpsgithubcombabelbabelpull13191-13416httpsgithubcombabelbabelpull13416">Implemented in v7.15</a>. See <a href="https://babeljs.io/docs/en/babel-plugin-proposal-pipeline-operator">Babel documentation</a>.</li>
</ul>
<p>(This document uses <code>%</code> as the placeholder token for the topic reference. This will <em><strong>almost certainly not be the final choice</strong></em>; see <a href="https://github.com/tc39/proposal-pipeline-operator/issues/91">the token bikeshedding discussion</a> for details.)</p>
<h2>Why a pipe operator</h2>
<p>In the State of JS 2020 survey, the <strong>fourth top answer</strong> to <a href="https://2020.stateofjs.com/en-US/opinions/#missing_from_js">“What do you feel is currently missing from JavaScript?”</a> was a <strong>pipe operator</strong>. Why?</p>
<p>When we perform <strong>consecutive operations</strong> (e.g., function calls) on a <strong>value</strong> in JavaScript, there are currently two fundamental styles:</p>
<ul>
<li>passing the value as an argument to the operation (<strong>nesting</strong> the operations if there are multiple operations),</li>
<li>or calling the function as a method on the value (<strong>chaining</strong> more method calls if there are multiple methods).</li>
</ul>
<p>That is, <code>three(two(one(value)))</code> versus <code>value.one().two().three()</code>. However, these styles differ much in readability, fluency, and applicability.</p>
<h3>Deep nesting is hard to read</h3>
<p>The first style, <strong>nesting</strong>, is generally applicable – it works for any sequence of operations: function calls, arithmetic, array/object literals, <code>await</code> and <code>yield</code>, etc.</p>
<p>However, nesting is <strong>difficult to read</strong> when it becomes deep: the flow of execution moves <strong>right to left</strong>, rather than the left-to-right reading of normal code. If there are <strong>multiple arguments</strong> at some levels, reading even bounces <strong>back and forth</strong>: our eyes must <strong>jump left</strong> to find a function name, and then they must <strong>jump right</strong> to find additional arguments. Additionally, <strong>editing</strong> the code afterwards can be fraught: we must find the correct <strong>place to insert</strong> new arguments among <strong>many nested parentheses</strong>.</p>
<details>
<summary><strong>Real-world example</strong></summary>
<p>Consider this <a href="https://github.com/facebook/react/raw/17.0.2/scripts/jest/jest-cli.js#L295">real-world code from React</a>.</p>
<pre><code class="language-js">console.log(
chalk.dim(
`$ ${Object.keys(envars)
.map(envar =>
`${envar}=${envars[envar]}`)
.join(' ')
}`,
'node',
args.join(' ')));
</code></pre>
<p>This real-world code is made of <strong>deeply nested expressions</strong>. In order to read its flow of data, a human’s eyes must first:</p>
<ol>
<li> <p>Find the <strong>initial data</strong> (the innermost expression, <code>envars</code>).</p> </li>
<li> <p>And then scan <strong>back and forth</strong> repeatedly from <strong>inside out</strong> for each data transformation, each one either an easily missed prefix operator on the left or a suffix operators on the right:</p>
<ol>
<li><code>Object.keys()</code> (left side),</li>
<li><code>.map()</code> (right side),</li>
<li><code>.join()</code> (right side),</li>
<li>A template literal (both sides),</li>
<li><code>chalk.dim()</code> (left side), then</li>
<li><code>console.log()</code> (left side).</li>
</ol> </li>
</ol>
<p>As a result of deeply nesting many expressions (some of which use <strong>prefix</strong> operators, some of which use <strong>postfix</strong> operators, and some of which use <strong>circumfix</strong> operators), we must check <strong>both left and right sides</strong> to find the <strong>head</strong> of <strong>each expression</strong>.</p>
</details>
<h3>Method chaining is limited</h3>
<p>The second style, <strong>method chaining</strong>, is <strong>only</strong> usable if the value has the functions designated as <strong>methods</strong> for its class. This <strong>limits</strong> its applicability. But <strong>when</strong> it applies, thanks to its postfix structure, it is generally more usable and <strong>easier</strong> to read and write. Code execution flows <strong>left to right</strong>. Deeply nested expressions are <strong>untangled</strong>. All arguments for a function call are <strong>grouped</strong> with the function’s name. And editing the code later to <strong>insert or delete</strong> more method calls is trivial, since we would just have to put our cursor in one spot, then start typing or deleting one <strong>contiguous</strong> run of characters.</p>
<p>Indeed, the benefits of method chaining are <strong>so attractive</strong> that some <strong>popular libraries contort</strong> their code structure specifically to allow <strong>more method chaining</strong>. The most prominent example is <strong><a href="https://jquery.com/">jQuery</a></strong>, which still remains the <strong>most popular JS library</strong> in the world. jQuery’s core design is a single über-object with dozens of methods on it, all of which return the same object type so that we can <strong>continue chaining</strong>. There is even a name for this style of programming: <strong><a href="https://en.wikipedia.org/wiki/Fluent_interface">fluent interfaces</a></strong>.</p>
<p>Unfortunately, for all of its fluency, <strong>method chaining</strong> alone cannot accommodate JavaScript’s <strong>other syntaxes</strong>: function calls, arithmetic, array/object literals, <code>await</code> and <code>yield</code>, etc. In this way, method chaining remains <strong>limited</strong> in its <strong>applicability</strong>.</p>
<h3>Pipe operators combine both worlds</h3>
<p>The pipe operator attempts to marry the <strong>convenience</strong> and ease of <strong>method chaining</strong> with the wide <strong>applicability</strong> of <strong>expression nesting</strong>.</p>
<p>The general structure of all the pipe operators is <code>value |></code> <var>e1</var> <code>|></code> <var>e2</var> <code>|></code> <var>e3</var>, where <var>e1</var>, <var>e2</var>, <var>e3</var> are all expressions that take consecutive values as their parameters. The <code>|></code> operator then does some degree of magic to “pipe” <code>value</code> from the lefthand side into the righthand side.</p>
<details>
<summary><strong>Real-world example</strong>, continued</summary>
<p>Continuing this deeply nested <a href="https://github.com/facebook/react/raw/17.0.2/scripts/jest/jest-cli.js">real-world code from React</a>:</p>
<pre><code class="language-js">console.log(
chalk.dim(
`$ ${Object.keys(envars)
.map(envar =>
`${envar}=${envars[envar]}`)
.join(' ')
}`,
'node',
args.join(' ')));
</code></pre>
<p>…we can <strong>untangle</strong> it as such using a pipe operator and a placeholder token (<code>%</code>) standing in for the previous operation’s value:</p>
<pre><code class="language-js">Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
|> `$ ${%}`
|> chalk.dim(%, 'node', args.join(' '))
|> console.log(%);
</code></pre>
<p>Now, the human reader can <strong>rapidly find</strong> the <strong>initial data</strong> (what had been the most innermost expression, <code>envars</code>), then <strong>linearly</strong> read, from <strong>left to right</strong>, each transformation on the data.</p>
</details>
<h3>Temporary variables are often tedious</h3>
<p>One could argue that using <strong>temporary variables</strong> should be the only way to untangle deeply nested code. Explicitly naming every step’s variable causes something similar to method chaining to happen, with similar benefits to reading and writing code.</p>
<details>
<summary><strong>Real-world example</strong>, continued</summary>
<p>For example, using our previous modified <a href="https://github.com/facebook/react/raw/17.0.2/scripts/jest/jest-cli.js">real-world example from React</a>:</p>
<pre><code class="language-js">Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
|> `$ ${%}`
|> chalk.dim(%, 'node', args.join(' '))
|> console.log(%);
</code></pre>
<p>…a version using temporary variables would look like this:</p>
<pre><code class="language-js">const envarString = Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ');
const consoleText = `$ ${envarString}`;
const coloredConsoleText = chalk.dim(consoleText, 'node', args.join(' '));
console.log(coloredConsoleText);
</code></pre>
</details>
<p>But there are reasons why we encounter deeply nested expressions in each other’s code <strong>all the time in the real world</strong>, <strong>rather than</strong> lines of temporary variables. And there are reasons why the <strong>method-chain-based <a href="https://en.wikipedia.org/wiki/Fluent_interface">fluent interfaces</a></strong> of jQuery, Mocha, and so on are still <strong>popular</strong>.</p>
<p>It is often simply too <strong>tedious and wordy</strong> to <strong>write</strong> code with a long sequence of temporary, single-use variables. It is arguably even tedious and visually noisy for a human to <strong>read</strong>, too.</p>
<p>If <a href="https://martinfowler.com/bliki/TwoHardThings.html"><strong>naming</strong> is one of the <strong>most difficult tasks</strong> in programming</a>, then programmers will <strong>inevitably avoid naming</strong> variables when they perceive their benefit to be relatively small.</p>
<h3>Reusing temporary variables is prone to unexpected mutation</h3>
<p>One could argue that using a single <strong>mutable variable</strong> with a short name would reduce the wordiness of temporary variables, achieving similar results as with the pipe operator.</p>
<details>
<summary><strong>Real-world example</strong>, continued</summary>
<p>For example, our previous modified <a href="https://github.com/facebook/react/raw/17.0.2/scripts/jest/jest-cli.js">real-world example from React</a> could be re-written like this:</p>
<pre><code class="language-js">let _;
_ = Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ');
_ = `$ ${_}`;
_ = chalk.dim(_, 'node', args.join(' '));
_ = console.log(_);
</code></pre>
</details>
<p>But code like this is <strong>not common</strong> in real-world code. One reason for this is that mutable variables can <strong>change unexpectedly</strong>, causing silent bugs that are hard to find. For example, the variable might be accidentally referenced in a closure. Or it might be mistakenly reassigned within an expression.</p>
<details>
<summary>Example code</summary>
<pre><code class="language-js">// setup
function one () { return 1; }
function double (x) { return x * 2; }
let _;
_ = one(); // _ is now 1.
_ = double(_); // _ is now 2.
_ = Promise.resolve().then(() =>
// This does *not* print 2!
// It prints 1, because `_` is reassigned downstream.
console.log(_));
// _ becomes 1 before the promise callback.
_ = one(_);
</code></pre>
<p>This issue would not happen with the pipe operator. The topic token cannot be reassigned, and code outside of each step cannot change its binding.</p>
<pre><code class="language-js">let _;
_ = one()
|> double(%)
|> Promise.resolve().then(() =>
// This prints 2, as intended.
console.log(%));
_ = one();
</code></pre>
</details>
<p>For this reason, code with mutable variables is also harder to read. To determine what the variable represents at any given point, you must to <strong>search the entire preceding scope</strong> for places where it is <strong>reassigned</strong>.</p>
<p>The topic reference of a pipeline, on the other hand, has a limited lexical scope, and its binding is immutable within its scope. It cannot be accidentally reassigned, and it can be safely used in closures.</p>
<p>Although the topic value also changes with each pipeline step, we only scan the previous step of the pipeline to make sense of it, leading to code that is easier to read.</p>
<h3>Temporary variables must be declared in statements</h3>
<p>Another benefit of the pipe operator over sequences of assignment statements (whether with mutable or with immutable temporary variables) is that they are <strong>expressions</strong>.</p>
<p>Pipe expressions are expressions that can be directly returned, assigned to a variable, or used in contexts such as JSX expressions.</p>
<p>Using temporary variables, on the other hand, requires sequences of statements.</p>
<details>
<summary>Examples</summary>
<table>
<thead>
<tr>
<th>Pipelines</th>
<th>Temporary Variables</th>
</tr>
</thead>
<tbody>
<tr>
<td> <pre><code class="language-js">const envVarFormat = vars =>
Object.keys(vars)
.map(var => `${var}=${vars[var]}`)
.join(' ')
|> chalk.dim(%, 'node', args.join(' '));
</code></pre> </td>
<td> <pre><code class="language-js">const envVarFormat = (vars) => {
let _ = Object.keys(vars);
_ = _.map(var => `${var}=${vars[var]}`);
_ = _.join(' ');
return chalk.dim(_, 'node', args.join(' '));
}
</code></pre> </td>
</tr>
<tr>
<td> <pre><code class="language-jsx">// This example uses JSX.
return (
<ul>
{
values
|> Object.keys(%)
|> [...Array.from(new Set(%))]
|> %.map(envar => (
<li onClick={
() => doStuff(values)
}>{envar}</li>
))
}
</ul>
);
</code></pre> </td>
<td> <pre><code class="language-js">// This example uses JSX.
let _ = values;
_= Object.keys(_);
_= [...Array.from(new Set(_))];
_= _.map(envar => (
<li onClick={
() => doStuff(values)
}>{envar}</li>
));
return (
<ul>{_}</ul>
);
</code></pre> </td>
</tr>
</tbody>
</table>
</details>
<h2>Why the Hack pipe operator</h2>
<p>There were <strong>two competing proposals</strong> for the pipe operator: Hack pipes and F# pipes. (Before that, there <strong>was</strong> a <a href="https://github.com/js-choi/proposal-smart-pipelines/">third proposal for a “smart mix” of the first two proposals</a>, but it has been withdrawn, since its syntax is strictly a superset of one of the proposals’.)</p>
<p>The two pipe proposals just differ <strong>slightly</strong> on what the “magic” is, when we spell our code when using <code>|></code>.</p>
<p><strong>Both</strong> proposals <strong>reuse</strong> existing language concepts: Hack pipes are based on the concept of the <strong>expression</strong>, while F# pipes are based on the concept of the <strong>unary function</strong>.</p>
<p>Piping <strong>expressions</strong> and piping <strong>unary functions</strong> correspondingly have <strong>small</strong> and nearly <strong>symmetrical trade-offs</strong>.</p>
<h3>This proposal: Hack pipes</h3>
<p>In the <strong>Hack language</strong>’s pipe syntax, the righthand side of the pipe is an <strong>expression</strong> containing a special <strong>placeholder</strong>, which is evaluated with the placeholder bound to the result of evaluating the lefthand side's expression. That is, we write <code>value |> one(%) |> two(%) |> three(%)</code> to pipe <code>value</code> through the three functions.</p>
<p><strong>Pro:</strong> The righthand side can be <strong>any expression</strong>, and the placeholder can go anywhere any normal variable identifier could go, so we can pipe to any code we want <strong>without any special rules</strong>:</p>
<ul>
<li><code>value |> foo(%)</code> for unary function calls,</li>
<li><code>value |> foo(1, %)</code> for n-ary function calls,</li>
<li><code>value |> %.foo()</code> for method calls,</li>
<li><code>value |> % + 1</code> for arithmetic,</li>
<li><code>value |> [%, 0]</code> for array literals,</li>
<li><code>value |> {foo: %}</code> for object literals,</li>
<li><code>value |> `${%}`</code> for template literals,</li>
<li><code>value |> new Foo(%)</code> for constructing objects,</li>
<li><code>value |> await %</code> for awaiting promises,</li>
<li><code>value |> (yield %)</code> for yielding generator values,</li>
<li><code>value |> import(%)</code> for calling function-like keywords,</li>
<li>etc.</li>
</ul>
<p><strong>Con:</strong> Piping through <strong>unary functions</strong> is <strong>slightly more verbose</strong> with Hack pipes than with F# pipes. This includes unary functions that were created by <strong><a href="https://en.wikipedia.org/wiki/Currying">function-currying</a> libraries</strong> like <a href="https://ramdajs.com/">Ramda</a>, as well as <a href="https://github.com/js-choi/proposal-hack-pipes/issues/4#issuecomment-817208635">unary arrow functions that perform <strong>complex destructuring</strong> on their arguments</a>: Hack pipes would be slightly more verbose with an <strong>explicit</strong> function call suffix <code>(%)</code>.</p>
<p>(Complex destructuring of the topic value will be easier when <a href="https://github.com/tc39/proposal-do-expressions/">do expressions</a> progress, as you will then be able to do variable assignment/destructuring inside of a pipe body.)</p>
<h3>Alternative proposal: F# pipes</h3>
<p>In the <a href="https://github.com/valtech-nyc/proposal-fsharp-pipelines"><strong>F# language</strong>’s pipe syntax</a>, the righthand side of the pipe is an expression that must <strong>evaluate into a unary function</strong>, which is then <strong>tacitly called</strong> with the lefthand side’s value as its <strong>sole argument</strong>. That is, we write <code>value |> one |> two |> three</code> to pipe <code>value</code> through the three functions. <code>left |> right</code> becomes <code>right(left)</code>. This is called <a href="https://en.wikipedia.org/wiki/Tacit_programming">tacit programming or point-free style</a>.</p>
<details>
<summary><strong>Real-world example</strong>, continued</summary>
<p>For example, using our previous modified <a href="https://github.com/facebook/react/raw/17.0.2/scripts/jest/jest-cli.js">real-world example from React</a>:</p>
<pre><code class="language-js">Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
|> `$ ${%}`
|> chalk.dim(%, 'node', args.join(' '))
|> console.log(%);
</code></pre>
<p>…a version using F# pipes instead of Hack pipes would look like this:</p>
<pre><code class="language-js">Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
|> x=> `$ ${x}`
|> x=> chalk.dim(x, 'node', args.join(' '))
|> console.log;
</code></pre>
</details>
<p><strong>Pro:</strong> The restriction that the righthand side <strong>must</strong> resolve to a unary function lets us write very terse pipes <strong>when</strong> the operation we want to perform is a <strong>unary function call</strong>:</p>
<ul>
<li><code>value |> foo</code> for unary function calls.</li>
</ul>
<p>This includes unary functions that were created by <strong><a href="https://en.wikipedia.org/wiki/Currying">function-currying</a> libraries</strong> like <a href="https://ramdajs.com/">Ramda</a>, as well as <a href="https://github.com/js-choi/proposal-hack-pipes/issues/4#issuecomment-817208635">unary arrow functions that perform <strong>complex destructuring</strong> on their arguments</a>: F# pipes would be <strong>slightly less verbose</strong> with an <strong>implicit</strong> function call (no <code>(%)</code>).</p>
<p><strong>Con:</strong> The restriction means that <strong>any operations</strong> that are performed by <strong>other syntax</strong> must be made <strong>slightly more verbose</strong> by <strong>wrapping</strong> the operation in a unary <strong>arrow function</strong>:</p>
<ul>
<li><code>value |> x=> x.foo()</code> for method calls,</li>
<li><code>value |> x=> x + 1</code> for arithmetic,</li>
<li><code>value |> x=> [x, 0]</code> for array literals,</li>
<li><code>value |> x=> ({foo: x})</code> for object literals,</li>
<li><code>value |> x=> `${x}`</code> for template literals,</li>
<li><code>value |> x=> new Foo(x)</code> for constructing objects,</li>
<li><code>value |> x=> import(x)</code> for calling function-like keywords,</li>
<li>etc.</li>
</ul>
<p>Even calling <strong>named functions</strong> requires <strong>wrapping</strong> when we need to pass <strong>more than one argument</strong>:</p>
<ul>
<li><code>value |> x=> foo(1, x)</code> for n-ary function calls.</li>
</ul>
<p><strong>Con:</strong> The <strong><code>await</code> and <code>yield</code></strong> operations are <strong>scoped</strong> to their <strong>containing function</strong>, and thus <strong>cannot be handled by unary functions</strong> alone. If we want to integrate them into a pipe expression, <a href="https://github.com/valtech-nyc/proposal-fsharp-pipelines/"><code>await</code> and <code>yield</code> must be handled as <strong>special syntax cases</strong></a>:</p>
<ul>
<li><code>value |> await</code> for awaiting promises, and</li>
<li><code>value |> yield</code> for yielding generator values.</li>
</ul>
<h3>Hack pipes favor more common expressions</h3>
<p><strong>Both</strong> Hack pipes and F# pipes respectively impose a small <strong>syntax tax</strong> on different expressions:<br> <strong>Hack pipes</strong> slightly tax only <strong>unary function calls</strong>, and<br> <strong>F# pipes</strong> slightly tax <strong>all expressions except</strong> unary function calls.</p>
<p>In <strong>both</strong> proposals, the syntax tax per taxed expression is <strong>small</strong> (<strong>both</strong> <code>(%)</code> and <code>x=></code> are <strong>only three characters</strong>). However, the tax is <strong>multiplied</strong> by the <strong>prevalence</strong> of its respectively taxed expressions. It therefore might make sense to impose a tax on whichever expressions are <strong>less common</strong> and to <strong>optimize</strong> in favor of whichever expressions are <strong>more common</strong>.</p>
<p>Unary function calls are in general <strong>less common</strong> than <strong>all</strong> expressions <strong>except</strong> unary functions. In particular, <strong>method</strong> calling and <strong>n-ary function</strong> calling will <strong>always</strong> be <strong>popular</strong>; in general frequency, <strong>unary</strong> function calling is equal to or exceeded by those two cases <strong>alone</strong> – let alone by other ubiquitous syntaxes such as <strong>array literals</strong>, <strong>object literals</strong>, and <strong>arithmetic operations</strong>. This explainer contains several <a href="https://raw.githubusercontent.com/tc39/proposal-pipeline-operator/main/#real-world-examples">real-world examples</a> of this difference in prevalence.</p>
<p>Furthermore, several other proposed <strong>new syntaxes</strong>, such as <strong><a href="https://github.com/tc39/proposal-extensions/">extension calling</a></strong>, <strong><a href="https://github.com/tc39/proposal-do-expressions/">do expressions</a></strong>, and <strong><a href="https://github.com/tc39/proposal-record-tuple/">record/tuple literals</a></strong>, will also likely become <strong>pervasive</strong> in the <strong>future</strong>. Likewise, <strong>arithmetic</strong> operations would also become <strong>even more common</strong> if TC39 standardizes <strong><a href="https://github.com/tc39/proposal-operator-overloading/">operator overloading</a></strong>. Untangling these future syntaxes’ expressions would be more fluent with Hack pipes compared to F# pipes.</p>
<h3>Hack pipes might be simpler to use</h3>
<p>The syntax tax of Hack pipes on unary function calls (i.e., the <code>(%)</code> to invoke the righthand side’s unary function) is <strong>not a special case</strong>: it simply is <strong>explicitly writing ordinary code</strong>, in <strong>the way we normally would</strong> without a pipe.</p>
<p>On the other hand, <strong>F# pipes require</strong> us to <strong>distinguish</strong> between “code that resolves to an unary function” versus <strong>“any other expression”</strong> – and to remember to add the arrow-function wrapper around the latter case.</p>
<p>For example, with Hack pipes, <code>value |> someFunction + 1</code> is <strong>invalid syntax</strong> and will <strong>fail early</strong>. There is no need to recognize that <code>someFunction + 1</code> will not evaluate into a unary function. But with F# pipes, <code>value |> someFunction + 1</code> is <strong>still valid syntax</strong> – it’ll just <strong>fail late</strong> at <strong>runtime</strong>, because <code>someFunction + 1</code> isn’t callable.</p>
<h3>TC39 has rejected F# pipes multiple times</h3>
<p>The pipe champion group has presented F# pipes for Stage 2 to TC39 <strong>twice</strong>. It was <strong>unsuccessful</strong> in advancing to Stage 2 both times. Both F# pipes (and <a href="https://github.com/tc39/proposal-partial-application">partial function application (PFA)</a>) have run into strong pushback from multiple other TC39 representatives due to various concerns. These have included:</p>
<ul>
<li>Memory performance concerns (e.g., <a href="https://github.com/tc39/proposal-pipeline-operator/raw/main/HISTORY.md#2021-07">especially from browser-engine implementors</a>),</li>
<li>Syntax concerns about <code>await</code>.</li>
<li>Concerns about encouraging ecosystem bifurcation/forking, etc.</li>
</ul>
<p>This pushback has occurred from <strong>outside</strong> the pipe champion group. See <a href="https://github.com/tc39/proposal-pipeline-operator/raw/main/HISTORY.md">HISTORY.md</a> for more information.</p>
<p>It is the pipe champion group’s belief that any pipe operator is better than none, in order to <a href="https://raw.githubusercontent.com/tc39/proposal-pipeline-operator/main/#why-a-pipe-operator">easily linearize deeply nested expressions</a> without resorting to named variables. Many members of the champion group believe that Hack pipes are slightly better than F# pipes, and some members of the champion group believe that F# pipes are slightly better than Hack pipes. But everyone in the champion group agrees that F# pipes have met with far too much resistance to be able to pass TC39 in the foreseeable future.</p>
<p>To emphasize, it is likely that an attempt to switch from Hack pipes back to F# pipes will result in TC39 never agreeing to any pipes at all. <a href="https://github.com/tc39/proposal-partial-application">PFA syntax</a> is similarly facing an uphill battle in TC39 (see <a href="https://github.com/tc39/proposal-pipeline-operator/raw/main/HISTORY.md">HISTORY.md</a>). Many members of the pipe champion group think this is unfortunate, and they are willing to fight again <strong>later</strong> for an <a href="https://raw.githubusercontent.com/tc39/proposal-pipeline-operator/main/#tacit-unary-function-application-syntax">F#-pipe split mix</a> and <a href="https://github.com/tc39/proposal-partial-application">PFA syntax</a>. But there are quite a few representatives (including <a href="https://github.com/tc39/proposal-pipeline-operator/raw/main/HISTORY.md#2021-07">browser-engine implementers</a>) outside of the Pipe Champion Group who are generally against encouraging <a href="https://en.wikipedia.org/wiki/Tacit_programming">tacit programming</a> (and <a href="https://github.com/tc39/proposal-partial-application">PFA syntax</a>), regardless of Hack pipes.</p>
<h2>Description</h2>
<p>(A <a href="http://tc39.github.io/proposal-pipeline-operator/">formal draft specification</a> is available.)</p>
<p>The <strong>topic reference</strong> <code>%</code> is a <strong>nullary operator</strong>. It acts as a placeholder for a <strong>topic value</strong>, and it is <strong>lexically scoped</strong> and <strong>immutable</strong>.</p>
<details>
<summary><code>%</code> is not a final choice</summary>
<p>(The precise <a href="https://github.com/tc39/proposal-pipeline-operator/issues/91"><strong>token</strong> for the topic reference is <strong>not final</strong></a>. <code>%</code> could instead be <code>^</code>, or many other tokens. We plan to <a href="https://github.com/tc39/proposal-pipeline-operator/issues/91"><strong>bikeshed</strong> what actual token to use</a> before advancing to Stage 3. However, <code>%</code> seems to be the <a href="https://github.com/js-choi/proposal-hack-pipes/issues/2">least syntactically problematic</a>, and it also resembles the placeholders of <strong><a href="https://en.wikipedia.org/wiki/Printf_format_string">printf format strings</a></strong> and <a href="https://clojure.org/reference/reader#_dispatch"><strong>Clojure</strong>’s <code>#(%)</code> <strong>function literals</strong></a>.)</p>
</details>
<p>The <strong>pipe operator</strong> <code>|></code> is an <strong>infix operator</strong> that forms a <strong>pipe expression</strong> (also called a <strong>pipeline</strong>). It evaluates its lefthand side (the <strong>pipe head</strong> or <strong>pipe input</strong>), immutably <strong>binds</strong> the resulting value (the <strong>topic value</strong>) to the <strong>topic reference</strong>, then evaluates its righthand side (the <strong>pipe body</strong>) with that binding. The resulting value of the righthand side becomes the whole pipe expression’s final value (the <strong>pipe output</strong>).</p>
<p>The pipe operator’s precedence is the <strong>same</strong> as:</p>
<ul>
<li>the function arrow <code>=></code>;</li>
<li>the assignment operators <code>=</code>, <code>+=</code>, etc.;</li>
<li>the generator operators <code>yield</code> and <code>yield *</code>;</li>
</ul>
<p>It is <strong>tighter</strong> than only the comma operator <code>,</code>.<br> It is <strong>looser</strong> than <strong>all other</strong> operators.</p>
<p>For example, <code>v => v |> % == null |> foo(%, 0)</code><br> would group into <code>v => (v |> (% == null) |> foo(%, 0))</code>,<br> which in turn is equivalent to <code>v => foo(v == null, 0)</code>.</p>
<p>A pipe body <strong>must</strong> use its topic value <strong>at least once</strong>. For example, <code>value |> foo + 1</code> is <strong>invalid syntax</strong>, because its body does not contain a topic reference. This design is because <strong>omission</strong> of the topic reference from a pipe expression’s body is almost certainly an <strong>accidental</strong> programmer error.</p>
<p>Likewise, a topic reference <strong>must</strong> be contained in a pipe body. Using a topic reference outside of a pipe body is also <strong>invalid syntax</strong>.</p>
<p>To prevent confusing grouping, it is <strong>invalid</strong> syntax to use <strong>other</strong> operators that have <strong>similar precedence</strong> (i.e., the arrow <code>=></code>, the ternary conditional operator <code>?</code> <code>:</code>, the assignment operators, and the <code>yield</code> operator) as a <strong>pipe head or body</strong>. When using <code>|></code> with these operators, we must use <strong>parentheses</strong> to explicitly indicate what grouping is correct. For example, <code>a |> b ? % : c |> %.d</code> is invalid syntax; it should be corrected to either <code>a |> (b ? % : c) |> %.d</code> or <code>a |> (b ? % : c |> %.d)</code>.</p>
<p>Lastly, topic bindings <strong>inside dynamically compiled</strong> code (e.g., with <code>eval</code> or <code>new Function</code>) <strong>cannot</strong> be used <strong>outside</strong> of that code. For example, <code>v |> eval('% + 1')</code> will throw a syntax error when the <code>eval</code> expression is evaluated at runtime.</p>
<p>There are <strong>no other special rules</strong>.</p>
<p>A natural result of these rules is that, if we need to interpose a <strong>side effect</strong> in the middle of a chain of pipe expressions, without modifying the data being piped through, then we could use a <strong>comma expression</strong>, such as with <code>value |> (sideEffect(), %)</code>. As usual, the comma expression will evaluate to its righthand side <code>%</code>, essentially passing through the topic value without modifying it. This is especially useful for quick debugging: <code>value |> (console.log(%), %)</code>.</p>
<h2>Real-world examples</h2>
<p>The only changes to the original examples were dedentation and removal of comments.</p>
<p>From <a href="https://github.com/jquery/jquery/raw/2.2-stable/build/tasks/sourcemap.js">jquery/build/tasks/sourceMap.js</a>:</p>
<pre><code class="language-js">// Status quo
var minLoc = Object.keys( grunt.config( "uglify.all.files" ) )[ 0 ];
// With pipes
var minLoc = grunt.config('uglify.all.files') |> Object.keys(%)[0];
</code></pre>
<p>From <a href="https://github.com/nodejs/node/raw/v16.x/deps/npm/lib/unpublish.js">node/deps/npm/lib/unpublish.js</a>:</p>
<pre><code class="language-js">// Status quo
const json = await npmFetch.json(npa(pkgs[0]).escapedName, opts);
// With pipes
const json = pkgs[0] |> npa(%).escapedName |> await npmFetch.json(%, opts);
</code></pre>
<p>From <a href="https://underscorejs.org/docs/underscore-esm.html">underscore.js</a>:</p>
<pre><code class="language-js">// Status quo
return filter(obj, negate(cb(predicate)), context);
// With pipes
return cb(predicate) |> _.negate(%) |> _.filter(obj, %, context);
</code></pre>
<p>From <a href="https://github.com/ramda/ramda/raw/v0.27.1/dist/ramda.js">ramda.js</a>.</p>
<pre><code class="language-js">// Status quo
return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));
// With pipes
return xf
|> bind(%['@@transducer/step'], %)
|> obj[methodName](%, acc)
|> xf['@@transducer/result'](%);
</code></pre>
<p>From <a href="https://github.com/ramda/ramda/raw/v0.27.1/dist/ramda.js">ramda.js</a>.</p>
<pre><code class="language-js">// Status quo
try {
return tryer.apply(this, arguments);
} catch (e) {
return catcher.apply(this, _concat([e], arguments));
}
// With pipes: Note the visual parallelism between the two clauses.
try {
return arguments
|> tryer.apply(this, %);
} catch (e) {
return arguments
|> _concat([e], %)
|> catcher.apply(this, %);
}
</code></pre>
<p>From <a href="https://github.com/expressjs/express/raw/5.0/lib/response.js">express/lib/response.js</a>.</p>
<pre><code class="language-js">// Status quo
return this.set('Link', link + Object.keys(links).map(function(rel){
return '<' + links[rel] + '>; rel="' + rel + '"';
}).join(', '));
// With pipes
return links
|> Object.keys(%).map(function (rel) {
return '<' + links[rel] + '>; rel="' + rel + '"';
})
|> link + %.join(', ')
|> this.set('Link', %);
</code></pre>
<p>From <a href="https://github.com/facebook/react/raw/17.0.2/scripts/jest/jest-cli.js">react/scripts/jest/jest-cli.js</a>.</p>
<pre><code class="language-js">// Status quo
console.log(
chalk.dim(
`$ ${Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')}`,
'node',
args.join(' ')
)
);
// With pipes
Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
|> `$ ${%}`
|> chalk.dim(%, 'node', args.join(' '))
|> console.log(%);
</code></pre>
<p>From <a href="https://github.com/ramda/ramda/raw/v0.27.1/dist/ramda.js">ramda.js</a>.</p>
<pre><code class="language-js">// Status quo
return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list);
// With pipes
return fn
|> (typeof % === 'function' ? _xwrap(%) : %)
|> xf(%)
|> _reduce(%, acc, list);
</code></pre>
<p>From <a href="https://github.com/jquery/jquery/raw/2.2-stable/src/core/init.js">jquery/src/core/init.js</a>.</p>
<pre><code class="language-js">// Status quo
jQuery.merge( this, jQuery.parseHTML(
match[ 1 ],
context && context.nodeType ? context.ownerDocument || context : document,
true
) );
// With pipes
context
|> (% && %.nodeType ? %.ownerDocument || % : document)
|> jQuery.parseHTML(match[1], %, true)
|> jQuery.merge(%);
</code></pre>
<h2>Relationships with other proposals</h2>
<h3><code>Function</code> helpers</h3>
<p>Hack pipes can and would coexist with the <a href="https://github.com/js-choi/proposal-function-helpers"><code>Function</code> helpers proposal</a>, including its <code>pipe</code> and <code>flow</code> functions. These simple (and commonly downloaded) convenience functions manipulate unary functions without extra syntax.</p>
<p><a href="https://raw.githubusercontent.com/tc39/proposal-pipeline-operator/main/#tc39-has-rejected-f-pipes-multiple-times">TC39 has rejected the F# pipe operator twice</a>. Given this reality, TC39 is considerably more likely to pass <code>pipe</code> and <code>flow</code> helper functions than a similar syntactic operator.</p>
<p>Standardized <code>pipe</code> and <code>flow</code> convenience functions may also obviate some of the need for a F#-pipe infix operator. (They would not preclude standardizing an equivalent operator later. For example, TC39 standardized binary <code>**</code> even when <code>Math.pow</code> existed.)</p>
<h3>Partial-function-application syntax</h3>
<p>Hack pipes can coexist with a syntax for <strong>partial function application</strong> (PFA). There are two approaches with which they may coexist.</p>
<p>The <strong>first approach</strong> is with an <strong>eagerly</strong> evaluated PFA syntax, which has <a href="https://github.com/tc39/proposal-partial-application">already been proposed in proposal-partial-application</a>. This eager PFA syntax would add an <code>…~(…)</code> operator. The operator’s right-hand side would be a list of arguments, each of which is an ordinary expression or a <code>?</code> placeholder. Each consecutive <code>?</code> placeholder would represent another parameter.</p>
<p>Ordinary expressions would be evaluated <strong>before</strong> the function is created. For example, <code>f~(g(), ?, h(), ?)</code> would evaluate <code>f</code>, then <code>g()</code>, then <code>h()</code>, and <em>then</em> it would create a partially applied version of <code>f</code> with two arguments.</p>
<p>An optional number after <code>?</code> placeholder would override the parameter’s position. For example, <code>f~(?1, ?0)</code> would have two parameters but would switch them when calling <code>f</code>.</p>
<p>The <strong>second approach</strong> is with a <strong>lazily</strong> evaluated syntax. This could be handled with an <strong>extension to Hack pipes</strong>, with a syntax further inspired by <a href="https://clojure.org/reference/reader#_dispatch">Clojure’s <code>#(%1 %2)</code> function literals</a>. It would do so by <strong>combining</strong> the Hack pipe <code>|></code> with the <strong>arrow function</strong> <code>=></code> into a <strong>pipe-function</strong> operator <code>+></code>, which would use the same general rules as <code>|></code>.</p>
<p><code>+></code> would be a <strong>prefix operator</strong> that <strong>creates a new function</strong>, which in turn <strong>binds its argument(s)</strong> to topic references. <strong>Non-unary functions</strong> would be created by including topic references with <strong>numbers</strong> (<code>%0</code>, <code>%1</code>, <code>%2</code>, etc.) or <code>...</code>. <code>%0</code> (equivalent to plain <code>%</code>) would be bound to the <strong>zeroth argument</strong>, <code>%1</code> would be bound to the next argument, and so on. <code>%...</code> would be bound to an array of <strong>rest arguments</strong>. And just as with <code>|></code>, <code>+></code> would require its body to contain at least one topic reference in order to be syntactically valid.</p>
<table>
<thead>
<tr>
<th>Eager PFA</th>
<th>Pipe functions</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>a.map(f~(?, 0))</code></td>
<td><code>a.map(+> f(%, 0))</code></td>
</tr>
<tr>
<td><code>a.map(f~(?, ?, 0))</code></td>
<td><code>a.map(+> f(%0, %1, 0))</code></td>
</tr>
<tr>
<td><code>a.map(x=> x + 1)</code></td>
<td><code>a.map(+> % + 1)</code></td>
</tr>
<tr>
<td><code>a.map(x=> x + x)</code></td>
<td><code>a.map(+> % + %)</code></td>
</tr>
<tr>
<td><code>a.map(x=> f(x, x))</code></td>
<td><code>a.map(+> f(%, %))</code></td>
</tr>
</tbody>
</table>
<p>In contrast to the <a href="https://github.com/tc39/proposal-partial-application">eagerly evaluated PFA syntax</a>, topic functions would <strong>lazily</strong> evaluate its arguments, just like how an arrow function would.</p>
<p>For example, <code>+> f(g(), %0, h(), %1)</code> would evaluate <code>f</code>, and then it would create an arrow function that closes over <code>g</code> and <code>h</code>. The created function would <strong>not</strong> evaluate <code>g()</code> or <code>h()</code> until the every time the created function is called.</p>
<p>No matter the approach taken, Hack pipes could coexist with PFA.</p>
<h3>Eventual sending / pipelining</h3>
<p>Despite sharing the word “pipe” in their name, the pipe operator and the <a href="https://github.com/tc39/proposal-eventual-send/">eventual-send proposal</a>’s remote-object pipelines are orthogonal and independent. They can coexist and even work together.</p>
<pre><code class="language-js">const fileP = E(
E(target).openDirectory(dirName)
).openFile(fileName);
const fileP = target
|> E(%).openDirectory(dirName)
|> E(%).openFile(fileName);
</code></pre>
<h2>Possible future extensions</h2>
<h3>Hack-pipe syntax for <code>if</code>, <code>catch</code>, and <code>for</code>–<code>of</code></h3>
<p>Many <strong><code>if</code>, <code>catch</code>, and <code>for</code> statements</strong> could become pithier if they gained <strong>“pipe syntax”</strong> that bound the topic reference.</p>
<p><code>if () |></code> would bind its condition value to <code>%</code>,<br> <code>catch |></code> would bind its caught error to <code>%</code>,<br> and <code>for (of) |></code> would consecutively bind each of its iterator’s values to <code>%</code>.</p>
<table>
<thead>
<tr>
<th>Status quo</th>
<th>Hack-pipe statement syntax</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>const c = f(); if (c) g(c);</code></td>
<td><code>if (f()) |> g(%);</code></td>
</tr>
<tr>
<td><code>catch (e) f(e);</code></td>
<td><code>catch |> f(%);</code></td>
</tr>
<tr>
<td><code>for (const v of f()) g(v);</code></td>
<td><code>for (f()) |> g(%);</code></td>
</tr>
</tbody>
</table>
<h3>Optional Hack pipes</h3>
<p>A <strong>short-circuiting</strong> optional-pipe operator <code>|?></code> could also be useful, much in the way <code>?.</code> is useful for optional method calls.</p>
<p>For example, <code>value |> (% == null ? % : await foo(%) |> (% == null ? % : % + 1))</code><br> would be equivalent to <code>value |?> await foo(%) |?> % + 1</code>.</p>
<h3>Tacit unary function application syntax</h3>
<p><strong>Syntax</strong> for <strong>tacit unary function application</strong> – that is, the F# pipe operator – has been <a href="https://raw.githubusercontent.com/tc39/proposal-pipeline-operator/main/#tc39-has-rejected-f-pipes-multiple-times">rejected twice by TC39</a>. However, they could still eventually be added to the language in two ways.</p>
<p>First, it can be added as a convenience function <code>Function.pipe</code>. This is what the <a href="https://github.com/js-choi/proposal-function-helpers">function-helpers proposal</a> proposes. <code>Function.pipe</code> may obviate much of the need for an F#-pipe operator, while still not closing off the possibility of an F#-pipe operator.</p>
<p>Secondly, it can be added as <strong>another pipe operator</strong> <code>|>></code> – similarly to how <a href="https://clojure.org/guides/threading_macros">Clojure has multiple pipe macros</a> <code>-></code>, <code>->></code>, and <code>as-></code>.<br> For example, <code>value |> % + 1 |>> f |> g(%, 0)</code><br> would mean <code>value |> % + 1 |> f(%) |> g(%, 0)</code>.</p>
<p>There was an <a href="https://raw.githubusercontent.com/tc39/proposal-pipeline-operator/main/#tacit-unary-function-application-syntax">informal proposal for such a <strong>split mix</strong> of two pipe operators</a>, which was set aside in favor of single-operator proposals. This split mix might return as a proposal after Hack pipes.</p>
+
+
\ No newline at end of file
diff --git a/http/daily/index.xml b/http/daily/index.xml
index 963cbe99302..9080ef2206e 100644
--- a/http/daily/index.xml
+++ b/http/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HTTP Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:50Z
+ 2023-12-24T01:35:06Z
Daily Trending of HTTP in GitHub
\ No newline at end of file
diff --git a/http/weekly/index.xml b/http/weekly/index.xml
new file mode 100644
index 00000000000..2c3ee6caee8
--- /dev/null
+++ b/http/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HTTP Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:48Z
+ Weekly Trending of HTTP in GitHub
+
+
\ No newline at end of file
diff --git a/hxml/daily/index.xml b/hxml/daily/index.xml
index 58d7ba7064c..9c6bcf87e6f 100644
--- a/hxml/daily/index.xml
+++ b/hxml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HXML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:51Z
+ 2023-12-24T01:35:05Z
Daily Trending of HXML in GitHub
\ No newline at end of file
diff --git a/hxml/weekly/index.xml b/hxml/weekly/index.xml
new file mode 100644
index 00000000000..9c0f335fe46
--- /dev/null
+++ b/hxml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HXML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:47Z
+ Weekly Trending of HXML in GitHub
+
+
\ No newline at end of file
diff --git a/hy/daily/index.xml b/hy/daily/index.xml
index 918f020e1f7..51def7cc498 100644
--- a/hy/daily/index.xml
+++ b/hy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Hy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:51Z
+ 2023-12-24T01:35:04Z
Daily Trending of Hy in GitHub
\ No newline at end of file
diff --git a/hy/weekly/index.xml b/hy/weekly/index.xml
new file mode 100644
index 00000000000..8c35ffe60df
--- /dev/null
+++ b/hy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Hy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:47Z
+ Weekly Trending of Hy in GitHub
+
+
\ No newline at end of file
diff --git a/hyphy/daily/index.xml b/hyphy/daily/index.xml
index 9d4a13348f2..58e914e6f73 100644
--- a/hyphy/daily/index.xml
+++ b/hyphy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub HyPhy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:54Z
+ 2023-12-24T01:35:07Z
Daily Trending of HyPhy in GitHub
\ No newline at end of file
diff --git a/hyphy/weekly/index.xml b/hyphy/weekly/index.xml
new file mode 100644
index 00000000000..329ac1ec0fc
--- /dev/null
+++ b/hyphy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub HyPhy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:49Z
+ Weekly Trending of HyPhy in GitHub
+
+
\ No newline at end of file
diff --git a/idl/daily/index.xml b/idl/daily/index.xml
index 9a28cc11bfc..cfe1ccc53de 100644
--- a/idl/daily/index.xml
+++ b/idl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub IDL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:55Z
+ 2023-12-24T01:35:08Z
Daily Trending of IDL in GitHub
\ No newline at end of file
diff --git a/idl/weekly/index.xml b/idl/weekly/index.xml
new file mode 100644
index 00000000000..63fb446380f
--- /dev/null
+++ b/idl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub IDL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:50Z
+ Weekly Trending of IDL in GitHub
+
+
\ No newline at end of file
diff --git a/idris/daily/index.xml b/idris/daily/index.xml
index 12d94c06b4e..33ac9835f08 100644
--- a/idris/daily/index.xml
+++ b/idris/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Idris Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:53Z
+ 2023-12-24T01:35:10Z
Daily Trending of Idris in GitHub
\ No newline at end of file
diff --git a/idris/weekly/index.xml b/idris/weekly/index.xml
new file mode 100644
index 00000000000..6a1bad8f316
--- /dev/null
+++ b/idris/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Idris Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:52Z
+ Weekly Trending of Idris in GitHub
+
+
\ No newline at end of file
diff --git a/ignore-list/daily/index.xml b/ignore-list/daily/index.xml
index 5287c48401f..4c5c5ee80ae 100644
--- a/ignore-list/daily/index.xml
+++ b/ignore-list/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ignore List Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:53Z
+ 2023-12-24T01:35:09Z
Daily Trending of Ignore List in GitHub
\ No newline at end of file
diff --git a/ignore-list/weekly/index.xml b/ignore-list/weekly/index.xml
new file mode 100644
index 00000000000..85b7dcd5291
--- /dev/null
+++ b/ignore-list/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ignore List Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:51Z
+ Weekly Trending of Ignore List in GitHub
+
+
\ No newline at end of file
diff --git a/igor-pro/daily/index.xml b/igor-pro/daily/index.xml
index ffb764ca28e..f295e84ac2b 100644
--- a/igor-pro/daily/index.xml
+++ b/igor-pro/daily/index.xml
@@ -1,7 +1,7 @@
GitHub IGOR Pro Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:58Z
+ 2023-12-24T01:35:11Z
Daily Trending of IGOR Pro in GitHub
\ No newline at end of file
diff --git a/igor-pro/weekly/index.xml b/igor-pro/weekly/index.xml
new file mode 100644
index 00000000000..ea4caff1d80
--- /dev/null
+++ b/igor-pro/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub IGOR Pro Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:53Z
+ Weekly Trending of IGOR Pro in GitHub
+
+
\ No newline at end of file
diff --git a/imagej-macro/daily/index.xml b/imagej-macro/daily/index.xml
index 6944d985c53..15c295a56d8 100644
--- a/imagej-macro/daily/index.xml
+++ b/imagej-macro/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ImageJ Macro Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:56Z
+ 2023-12-24T01:35:12Z
Daily Trending of ImageJ Macro in GitHub
\ No newline at end of file
diff --git a/imagej-macro/weekly/index.xml b/imagej-macro/weekly/index.xml
new file mode 100644
index 00000000000..082ddbe6677
--- /dev/null
+++ b/imagej-macro/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ImageJ Macro Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:55Z
+ Weekly Trending of ImageJ Macro in GitHub
+
+
\ No newline at end of file
diff --git a/inform-7/daily/index.xml b/inform-7/daily/index.xml
index 7c768f8fecb..11e0d7cdd04 100644
--- a/inform-7/daily/index.xml
+++ b/inform-7/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Inform 7 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:30:57Z
+ 2023-12-24T01:35:13Z
Daily Trending of Inform 7 in GitHub
\ No newline at end of file
diff --git a/inform-7/weekly/index.xml b/inform-7/weekly/index.xml
new file mode 100644
index 00000000000..ec08762d500
--- /dev/null
+++ b/inform-7/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Inform 7 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:54Z
+ Weekly Trending of Inform 7 in GitHub
+
+
\ No newline at end of file
diff --git a/ini/daily/index.xml b/ini/daily/index.xml
index 3cd55d43866..cf0c3b92787 100644
--- a/ini/daily/index.xml
+++ b/ini/daily/index.xml
@@ -1,7 +1,7 @@
GitHub INI Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:03Z
+ 2023-12-24T01:35:16Z
Daily Trending of INI in GitHub
\ No newline at end of file
diff --git a/ini/weekly/index.xml b/ini/weekly/index.xml
new file mode 100644
index 00000000000..a1ca993fc64
--- /dev/null
+++ b/ini/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub INI Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:56Z
+ Weekly Trending of INI in GitHub
+
+
\ No newline at end of file
diff --git a/inno-setup/daily/index.xml b/inno-setup/daily/index.xml
index 1c471ae386a..a67e3a2c1a1 100644
--- a/inno-setup/daily/index.xml
+++ b/inno-setup/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Inno Setup Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:01Z
+ 2023-12-24T01:35:17Z
Daily Trending of Inno Setup in GitHub
\ No newline at end of file
diff --git a/inno-setup/weekly/index.xml b/inno-setup/weekly/index.xml
new file mode 100644
index 00000000000..5854f3eb934
--- /dev/null
+++ b/inno-setup/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Inno Setup Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:58Z
+ Weekly Trending of Inno Setup in GitHub
+
+
\ No newline at end of file
diff --git a/io/daily/index.xml b/io/daily/index.xml
index 972d5b9e36e..6d1de0a5b62 100644
--- a/io/daily/index.xml
+++ b/io/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Io Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:02Z
+ 2023-12-24T01:35:14Z
Daily Trending of Io in GitHub
\ No newline at end of file
diff --git a/io/weekly/index.xml b/io/weekly/index.xml
new file mode 100644
index 00000000000..cb8e54d75d2
--- /dev/null
+++ b/io/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Io Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:51:59Z
+ Weekly Trending of Io in GitHub
+
+
\ No newline at end of file
diff --git a/ioke/daily/index.xml b/ioke/daily/index.xml
index 5363b2e2ddd..eda4dabc9ed 100644
--- a/ioke/daily/index.xml
+++ b/ioke/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ioke Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:06Z
+ 2023-12-24T01:35:19Z
Daily Trending of Ioke in GitHub
\ No newline at end of file
diff --git a/ioke/weekly/index.xml b/ioke/weekly/index.xml
new file mode 100644
index 00000000000..f64ee667433
--- /dev/null
+++ b/ioke/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ioke Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:00Z
+ Weekly Trending of Ioke in GitHub
+
+
\ No newline at end of file
diff --git a/irc-log/daily/index.xml b/irc-log/daily/index.xml
index 3856c0b51bd..60a4a0d5a14 100644
--- a/irc-log/daily/index.xml
+++ b/irc-log/daily/index.xml
@@ -1,7 +1,7 @@
GitHub IRC log Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:04Z
+ 2023-12-24T01:35:19Z
Daily Trending of IRC log in GitHub
\ No newline at end of file
diff --git a/irc-log/weekly/index.xml b/irc-log/weekly/index.xml
new file mode 100644
index 00000000000..54250790fbc
--- /dev/null
+++ b/irc-log/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub IRC log Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:03Z
+ Weekly Trending of IRC log in GitHub
+
+
\ No newline at end of file
diff --git a/isabelle-root/daily/index.xml b/isabelle-root/daily/index.xml
index 23312006a56..07e8d74ba6a 100644
--- a/isabelle-root/daily/index.xml
+++ b/isabelle-root/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Isabelle ROOT Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:06Z
+ 2023-12-24T01:35:18Z
Daily Trending of Isabelle ROOT in GitHub
\ No newline at end of file
diff --git a/isabelle-root/weekly/index.xml b/isabelle-root/weekly/index.xml
new file mode 100644
index 00000000000..8f97d017d35
--- /dev/null
+++ b/isabelle-root/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Isabelle ROOT Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:01Z
+ Weekly Trending of Isabelle ROOT in GitHub
+
+
\ No newline at end of file
diff --git a/isabelle/daily/index.xml b/isabelle/daily/index.xml
index 81cb5167da6..12f77e030d7 100644
--- a/isabelle/daily/index.xml
+++ b/isabelle/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Isabelle Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:05Z
+ 2023-12-24T01:35:20Z
Daily Trending of Isabelle in GitHub
\ No newline at end of file
diff --git a/isabelle/weekly/index.xml b/isabelle/weekly/index.xml
new file mode 100644
index 00000000000..aec00505616
--- /dev/null
+++ b/isabelle/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Isabelle Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:02Z
+ Weekly Trending of Isabelle in GitHub
+
+
\ No newline at end of file
diff --git a/j/daily/index.xml b/j/daily/index.xml
index c8992de079b..19cfe4160d6 100644
--- a/j/daily/index.xml
+++ b/j/daily/index.xml
@@ -1,7 +1,7 @@
GitHub J Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:08Z
+ 2023-12-24T01:35:23Z
Daily Trending of J in GitHub
\ No newline at end of file
diff --git a/j/weekly/index.xml b/j/weekly/index.xml
new file mode 100644
index 00000000000..22d4b503210
--- /dev/null
+++ b/j/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub J Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:04Z
+ Weekly Trending of J in GitHub
+
+
\ No newline at end of file
diff --git a/janet/daily/index.xml b/janet/daily/index.xml
index 7c70f8d5dcc..46952359d58 100644
--- a/janet/daily/index.xml
+++ b/janet/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Janet Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:08Z
+ 2023-12-24T01:35:24Z
Daily Trending of Janet in GitHub
\ No newline at end of file
diff --git a/janet/weekly/index.xml b/janet/weekly/index.xml
new file mode 100644
index 00000000000..35d32f48b4b
--- /dev/null
+++ b/janet/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Janet Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:05Z
+ Weekly Trending of Janet in GitHub
+
+
\ No newline at end of file
diff --git a/jar-manifest/daily/index.xml b/jar-manifest/daily/index.xml
index 3e4384e35e3..c01a7d4c383 100644
--- a/jar-manifest/daily/index.xml
+++ b/jar-manifest/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JAR Manifest Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:10Z
+ 2023-12-24T01:35:22Z
Daily Trending of JAR Manifest in GitHub
\ No newline at end of file
diff --git a/jar-manifest/weekly/index.xml b/jar-manifest/weekly/index.xml
new file mode 100644
index 00000000000..5724c5094ec
--- /dev/null
+++ b/jar-manifest/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JAR Manifest Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:05Z
+ Weekly Trending of JAR Manifest in GitHub
+
+
\ No newline at end of file
diff --git a/jasmin/daily/index.xml b/jasmin/daily/index.xml
index 2abcf27465d..935002a1776 100644
--- a/jasmin/daily/index.xml
+++ b/jasmin/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Jasmin Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:09Z
+ 2023-12-24T01:35:22Z
Daily Trending of Jasmin in GitHub
\ No newline at end of file
diff --git a/jasmin/weekly/index.xml b/jasmin/weekly/index.xml
new file mode 100644
index 00000000000..81603350d62
--- /dev/null
+++ b/jasmin/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Jasmin Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:06Z
+ Weekly Trending of Jasmin in GitHub
+
+
\ No newline at end of file
diff --git a/java-properties/daily/index.xml b/java-properties/daily/index.xml
index 717c056b75d..e847a0db611 100644
--- a/java-properties/daily/index.xml
+++ b/java-properties/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Java Properties Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:11Z
+ 2023-12-24T01:35:25Z
Daily Trending of Java Properties in GitHub
\ No newline at end of file
diff --git a/java-properties/weekly/index.xml b/java-properties/weekly/index.xml
new file mode 100644
index 00000000000..245aa39e23f
--- /dev/null
+++ b/java-properties/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Java Properties Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:08Z
+ Weekly Trending of Java Properties in GitHub
+
+
\ No newline at end of file
diff --git a/java-server-pages/daily/index.xml b/java-server-pages/daily/index.xml
index 0454df76e2d..37a7d9b5aca 100644
--- a/java-server-pages/daily/index.xml
+++ b/java-server-pages/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Java Server Pages Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:12Z
+ 2023-12-24T01:35:26Z
Daily Trending of Java Server Pages in GitHub
\ No newline at end of file
diff --git a/java-server-pages/weekly/index.xml b/java-server-pages/weekly/index.xml
new file mode 100644
index 00000000000..ec0c133007c
--- /dev/null
+++ b/java-server-pages/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Java Server Pages Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:07Z
+ Weekly Trending of Java Server Pages in GitHub
+
+
\ No newline at end of file
diff --git a/java/daily/index.xml b/java/daily/index.xml
index 6579b4f3823..8651f8d913f 100644
--- a/java/daily/index.xml
+++ b/java/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Java Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:17Z
+ 2023-12-24T01:35:35Z
Daily Trending of Java in GitHub
+
+ Skythinker616/gpt-assistant-android
+ 2023-12-24T01:35:35Z
+ tag:github.com,2023-12-24:/Skythinker616/gpt-assistant-android
+
+ <p>【新增Vision识图】免费的基于ChatGPT API的安卓端语音助手,可通过音量键唤起并进行语音交流,支持联网、Vision拍照识图、连续对话、提问模板、3.5/4.0接口、Markdown渲染等功能</p><hr><div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/icon.jpg" height="100px">
<h1>GPT Assistant</h1>
</div>
<p>这是一个基于ChatGPT的安卓端语音助手,允许用户通过手机音量键从任意界面唤起并直接进行语音交流,用最快捷的方式询问并获取回复</p>
<div align="center">
<font size="3"> <b>免费聊天 · 语音交互 · 支持联网 · 支持识图</b> </font>
</div>
<br>
<div align="center">
<p> <a href="https://gitee.com/skythinker/gpt-assistant-android"> <img src="https://gitee.com/skythinker/gpt-assistant-android/badge/star.svg?sanitize=true"> <img src="https://gitee.com/skythinker/gpt-assistant-android/badge/fork.svg?sanitize=true"> </a> <a href="https://github.com/Skythinker616/gpt-assistant-android"> <img src="https://img.shields.io/github/stars/skythinker616/gpt-assistant-android?logo=github"> <img src="https://img.shields.io/github/forks/skythinker616/gpt-assistant-android?logo=github"> </a> <img src="https://img.shields.io/badge/License-GPL3.0-red"> </p>
</div>
<hr>
<h2>介绍</h2>
<h3>项目特性</h3>
<ul>
<li>支持预设<strong>提问模板</strong>,包括使用高级模板语法向界面添加下拉选框等控件</li>
<li><strong>支持联网</strong>,允许GPT获取在线网页</li>
<li>支持拍照或从相册中<strong>上传图片</strong>到GPT Vision模型</li>
<li>通过无障碍功能捕获音量键事件,实现在<strong>任意界面唤起</strong></li>
<li>支持从<strong>全局上下文菜单</strong>(选中文本后弹出的系统菜单)中直接唤起</li>
<li>支持通过状态栏<strong>快捷按钮</strong>唤起</li>
<li>支持对<strong>Markdown</strong>进行渲染</li>
<li>使用华为或百度语音API进行<strong>语音输入</strong></li>
<li>调用系统TTS引擎<strong>输出语音</strong></li>
</ul>
<h3>国内使用说明</h3>
<p>本软件通过OpenAI API获取回复,在国内使用时可以用第三方转发服务,如<a href="https://github.com/chatanywhere/GPT_API_free">Chatanywhere</a>,其目前提供免费和付费服务,具体使用方法见<a href="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95">下述说明</a></p>
<blockquote>
<p>注:Chatanywhere注册需要GitHub账号,因此注册时需要能够登录GitHub的网络环境</p>
</blockquote>
<h3>费用说明</h3>
<p>本软件不会收取任何费用,用户能够免费使用各项功能,但如果有特殊需求,使用的下述第三方服务<strong>可能</strong>会产生费用:</p>
<ol>
<li> <p>ChatGPT调用费用</p>
<ul>
<li>以Chatanywhere为例,目前其<strong>免费服务</strong>限制对<code>gpt-3.5-turbo</code>模型的调用频率不超过<strong>60请求/小时/IP&Key</strong>,足够个人使用,若需要更高的调用频率或<code>gpt-4</code>模型,可以选择付费服务</li>
</ul> </li>
<li> <p>百度语音识别接口费用</p>
<ul>
<li> <p>目前华为HMS提供免费的语音识别接口,因此程序内置了作者的API Key以供直接使用,如无特殊情况该API将在华为免费期间一直可用</p> </li>
<li> <p>程序也提供了对百度接口的调用以供有需要的情况下使用,目前百度短语音识别为新用户提供<strong>15万次 & 180天免费额度</strong>,额度外收取¥0.0034/次的调用费用</p> </li>
</ul> </li>
</ol>
<hr>
<h2>效果展示</h2>
<p><strong>一、基础使用:仅用音量键就可以操控</strong></p>
<ol>
<li> <p>长按音量下键唤出界面</p> </li>
<li> <p>按住音量键不放,开始语音输入</p> </li>
<li> <p>松开后再次短按,发送问题</p> </li>
<li> <p>接收回复的同时可以自动通过语音进行播报</p> </li>
</ol>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/usage.gif" height="400px">
</div>
<p><strong>二、用状态栏快捷键也可触发</strong></p>
<p>下拉状态栏,点击“GPT”按钮,即可唤出界面,键盘会自动弹出,可以手动输入问题</p>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/tile_btn.gif" height="400px">
</div>
<p><strong>三、从全局上下文菜单唤起</strong></p>
<p>在选中文本后弹出的系统菜单中,点击GPTAssistant选项,即可直接唤起应用并将选中文本添加到输入框</p>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/context_menu.gif" height="400px">
</div>
<p><strong>四、支持连续对话</strong></p>
<p>激活上方的对话图标,即可保留当前会话,进行连续对话(点击左侧的头像图标可以对单条对话进行删除、重试等操作)</p>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/multi_chat.gif" height="400px">
</div>
<p><strong>五、支持高级模板语法</strong></p>
<p>高级模板语法通过在模板开头添加参数,可以实现向界面添加下拉选框等操作,具体说明可以在<a href="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/template_help.md">模板编写说明</a>中查看,也可以在<a href="https://github.com/Skythinker616/gpt-assistant-android/discussions/categories/templates">讨论社区</a>中获取或分享模板</p>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/template_code.png" height="140px">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/template_ui.png" height="140px">
</div>
<p><strong>六、支持上传图片到Vision</strong></p>
<p>当选择的模型中含有<code>vision</code>时(如<code>gpt-4-vision-preview</code>),输入框左侧会出现图片按钮,点击后可以拍照或从相册中选择图片</p>
<p>从其他应用中分享图片时,也可以选择本程序,将图片添加到输入框</p>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/vision.gif" height="400px">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/vision_room.jpg" height="400px">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/vision_math.jpg" height="400px">
</div>
<p>经测试,<code>gpt-4-vision-preview</code>模型识别效果较好,可以识别较复杂的图片,可用于拍照识物、翻译文字、拍照答题等场景</p>
<blockquote>
<p>注:Vision模型一般无法免费使用(如Chatanywhere),有需要的用户可以考虑付费服务</p>
</blockquote>
<p><strong>七、支持GPT联网</strong></p>
<p>本程序实现了OpenAI的Function接口,允许GPT发起联网请求,程序会向GPT自动返回所需的网页数据,使GPT具有联网能力(需先在设置中开启联网选项)</p>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/web_time.png" height="120px">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/web_weather.png" height="120px">
</div>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/web_jd.png" height="180px">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/web_zhihu.png" height="180px">
</div>
<blockquote>
<p>注1:上图均为使用<code>gpt-3.5-turbo</code>模型的测试结果,建议在提问前加入“百度搜索”、“必应搜索”、“在线获取”、“从xxx获取”等字样引导GPT,以获得更好的联网效果</p>
<p>注2:如果你使用图中的提问但没有获取到正确的回答,可能是由于GPT的随机性导致访问了错误的网址,或是网站内容变化导致抓取失败,你可以尝试修改提问方式</p>
<p>注3:由于需要将网页内容发送给GPT,联网时会产生大量Token消耗,<code>gpt-4</code>模型请谨慎使用</p>
<p>注4:<code>gpt-4-vision-preview</code>模型暂不支持联网</p>
</blockquote>
<hr>
<h2>使用方法</h2>
<h3>1. 下载安装</h3>
<p>直接下载最新发行版中的apk文件,安装即可</p>
<h3>2. 配置 OpenAI</h3>
<p>程序使用的是OpenAI API,需要用户在设置中填入自己的API_KEY,可以选择使用官方服务或第三方转发服务</p>
<ul>
<li> <p><strong>使用Chatanywhere转发服务</strong>(国内推荐)</p> <p>Chatanywhere提供了免费和付费的OpenAI API转发服务,目前免费服务限制60请求/小时/IP&Key调用频率,付费服务则无限制,可以在国内直接访问,用户可以参照其<a href="https://github.com/chatanywhere/GPT_API_free">项目主页</a>获取地址和KEY填入设置中</p> </li>
<li> <p><strong>使用官方服务</strong></p> <p>在OpenAI官网注册账号并获取API_KEY,在设置中填写网址<code>https://api.openai.com/</code>和API_KEY</p> </li>
</ul>
<h3>3. 配置百度语音识别 (可选)</h3>
<blockquote>
<p>注:程序默认使用的是华为语音识别接口,如无特殊情况,不需要进行此步骤</p>
</blockquote>
<p>用户可以参照<a href="https://cloud.baidu.com/doc/SPEECH/s/qknh9i8ed">百度语音识别官方文档</a>注册并创建应用,然后获取AppID、API Key和Secret Key填入设置中</p>
<p>若设置项的“启用长语音”选项关闭,则使用的是百度短语音识别接口,若开启,则使用的是实时语音识别接口,需要用户根据需求在创建应用时勾选对应的服务</p>
<p>此外,在创建应用时,需要将“语音包名”设置为“Android”,并填入本软件包名<code>com.skythinker.gptassistant</code></p>
<p><img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/asr_set_package.jpg" alt="设置语音包名"></p>
<h3>4. 开始使用</h3>
<ol>
<li> <p>根据软件提示开启无障碍服务,并允许软件在后台运行</p> </li>
<li> <p>查看设置中是否存在“后台弹出界面”权限,如有该权限则允许,如无则忽略</p>
<blockquote>
<p>若发现长按音量下键后手机震动一下但没有弹出界面,大概率是因为缺少该权限</p>
</blockquote> </li>
<li> <p>开始正常使用,可参照<a href="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/#%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA">效果展示</a>中的操作步骤</p> </li>
</ol>
<hr>
<h2>Q&A</h2>
<h3>软件唤起</h3>
<p><strong>Q: 长按音量下键只是在调节音量,并没有其他任何现象?</strong></p>
<p>A: 请在设置中开启本软件的无障碍服务(重启手机后可能需要重新开启,建议设置为无障碍快捷方式)</p>
<p><strong>Q: 长按音量下键后,手机震动了一下,但没有弹出界面?</strong></p>
<p>A: 请在设置中允许程序“后台弹出界面”权限</p>
<p><strong>Q: 隔一段时间不用就无法使用音量键唤起了?</strong></p>
<p>A: 请在设置中允许程序在后台运行</p>
<h3>语音播报</h3>
<p><strong>Q: 语音播报没声音 / 不好听?</strong></p>
<p>A: 软件调用的是系统自带TTS(Text To Speech)服务,可以通过软件设置项“打开系统语音设置”进入系统设置界面,选择合适的语音引擎;若对系统自带引擎不满意也可以自行安装讯飞等第三方TTS引擎</p>
<p><strong>Q: 华为和百度语音识别效果有什么差别?</strong></p>
<p>A: 经测试,所使用的华为接口(实时语音识别)识别准确度较高,尤其是在中英混说的场景下,但其断句能力则不如百度,仅适合单句识别</p>
<h3>联网相关</h3>
<p><strong>Q: 联网时GPT能访问什么网站?</strong></p>
<p>A: 程序使用Android WebView加载网页,能用本机浏览器打开的网站都可以访问</p>
<p><strong>Q: GPT能获取网站中的什么内容?</strong></p>
<p>A: 对于一般网站,仅允许GPT获取纯文本内容,而对于下述特殊适配过的网站,GPT还可以获取到搜索结果链接:百度、必应、谷歌、谷歌学术、知乎、微博、京东、GitHub、B站、知网</p>
<blockquote>
<p>如果你觉得有其他网站需要适配,可以提交Issue</p>
</blockquote>
<p><strong>Q: 为什么GPT在访问一些网站时说无法获取内容?</strong></p>
<p>A: 网页加载超时(15s)、需要登录、需要验证等原因都可能导致这个问题,你可以尝试再次提问,或要求GPT更换访问的网站</p>
<h3>其他使用问题</h3>
<p><strong>Q: 为什么列表中没有我需要的模型?</strong></p>
<p>A: 软件仅内置了少数常用模型,你可以在设置中添加自定义模型(以英文分号分隔),添加后即会出现在列表中</p>
<p><strong>Q: GPT返回的内容中表格无法正常显示?</strong></p>
<p>A: 所使用的Markdown渲染器无法在测试中产生稳定的结果,因此暂不支持表格渲染</p>
<p><strong>Q: 显示获取失败,提示请求超时,或产生错误码502/503?</strong></p>
<p>A: 排除网络因素,该错误一般由OpenAI接口产生,可能由于其服务器负载过高导致,请重试或等待一段时间后再尝试 <a href="https://status.openai.com/">查看OpenAI实时状态</a></p>
<h3>开发相关</h3>
<p><strong>Q: 编译仓库代码后无法使用华为HMS语音识别?</strong></p>
<p>A: 为防止滥用,仓库中的Key开启了包名和签名验证,因此如果希望自行编译使用,需要根据<a href="https://developer.huawei.com/consumer/cn/doc/hiai-Guides/ml-asr-0000001050066212#section699935381711">华为官方文档</a>创建AppGallery应用并替换鉴权信息,包括<code>app/agconnect-services.json</code>文件和<code>app/src/main/res/values/strings.xml</code>中的<code>hms_api_key</code>字段</p>
<hr>
<h2>主要功能更新日志</h2>
<ul>
<li><strong>2023.09.10</strong> 发布第一个版本,支持基础对话、百度语音输入、TTS输出、Markdown渲染等功能</li>
<li><strong>2023.09.13</strong> 支持连续对话、GPT-4、百度长语音识别,上下文菜单唤起</li>
<li><strong>2023.10.06</strong> 添加华为HMS语音识别</li>
<li><strong>2023.11.06</strong> 添加联网功能</li>
<li><strong>2023.12.04</strong> 添加Vision识图功能</li>
<li><strong>2023.12.21</strong> 支持高级模板语法</li>
</ul>
<hr>
<h2>TODO</h2>
<ul>
<li>支持渲染Markdown表格</li>
<li>连续语音交流</li>
</ul>
<hr>
<h2>测试环境</h2>
<p>已测试的机型:</p>
<table>
<thead>
<tr>
<th align="center">机型</th>
<th align="center">系统版本</th>
<th align="center">Android 版本</th>
<th align="center">本程序版本</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">荣耀 7C</td>
<td align="center">EMUI 8.0.0</td>
<td align="center">Android 8</td>
<td align="center">1.9.1</td>
</tr>
<tr>
<td align="center">荣耀 20</td>
<td align="center">HarmonyOS 3.0.0</td>
<td align="center">Android 10</td>
<td align="center">1.9.1</td>
</tr>
<tr>
<td align="center">华为 Mate 30</td>
<td align="center">HarmonyOS 3.0.0</td>
<td align="center">Android 12</td>
<td align="center">1.6.0</td>
</tr>
<tr>
<td align="center">华为 Mate 30</td>
<td align="center">HarmonyOS 4.0</td>
<td align="center">Android 12</td>
<td align="center">1.8.0</td>
</tr>
<tr>
<td align="center">荣耀 Magic 4</td>
<td align="center">MagicOS 7.0</td>
<td align="center">Android 13</td>
<td align="center">1.9.1</td>
</tr>
<tr>
<td align="center">红米 K20 Pro</td>
<td align="center">MIUI 12.5.6</td>
<td align="center">Android 11</td>
<td align="center">1.5.0</td>
</tr>
<tr>
<td align="center">红米 K60 Pro</td>
<td align="center">MIUI 14.0.23</td>
<td align="center">Android 13</td>
<td align="center">1.7.0</td>
</tr>
<tr>
<td align="center">Pixel 2 (模拟器)</td>
<td align="center">Android 12</td>
<td align="center">Android 12</td>
<td align="center">1.7.0</td>
</tr>
</tbody>
</table>
<hr>
<h2>改进&贡献</h2>
<p>如果你有改进建议或希望参与贡献,欢迎提交Issue或Pull Request</p>
<hr>
<h2>隐私说明</h2>
<p>本程序不会以任何方式收集用户的个人信息,语音输入会直接发送给华为或百度API,提问会直接发送给OpenAI API,不会经过其他中间服务器</p>
<hr>
<h2>引用的开源项目</h2>
<ul>
<li><a href="https://github.com/noties/Markwon">Markwon</a>: Android上的Markdown渲染器</li>
<li><a href="https://github.com/Grt1228/chatgpt-java">chatgpt-java</a>: OpenAI API的Java封装</li>
</ul>
<hr>
<h2>支持/捐赠</h2>
<p>如果你觉得 GPT Assistant 不错,可以点个Star,也可以捐赠请我喝杯奶茶,非常感谢你的支持!</p>
<p><a href="https://star-history.com/#Skythinker616/gpt-assistant-android&Date"><img src="https://api.star-history.com/svg?repos=Skythinker616/gpt-assistant-android&type=Date" alt="Star History Chart"></a></p>
<details>
<summary>查看捐赠码</summary>
<div align="center">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/wechat.png" height="180px">
<img src="https://raw.githubusercontent.com/Skythinker616/gpt-assistant-android/master/readme_img/alipay.jpg" height="180px">
</div>
<br>
</details>
+
\ No newline at end of file
diff --git a/java/weekly/index.xml b/java/weekly/index.xml
new file mode 100644
index 00000000000..5e9ad29dca4
--- /dev/null
+++ b/java/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Java Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:13Z
+ Weekly Trending of Java in GitHub
+
+
+ oddfar/campus-imaotai
+ 2023-12-24T01:52:13Z
+ tag:github.com,2023-12-24:/oddfar/campus-imaotai
+
+ <p>i茅台app自动预约,每日自动预约,支持docker一键部署</p><hr><p align="center"><a href="https://oddfar.com/" target="_blank" rel="noopener noreferrer"><img width="180" src="https://note.oddfar.com/img/web.png" alt="logo"></a></p>
<p align="center"> <a href="https://github.com/oddfar/campus-imaotai/stargazers"><img src="https://img.shields.io/github/stars/oddfar/campus-imaotai.svg?sanitize=true"></a> <a href="https://github.com/oddfar/campus-imaotai/raw/master/LICENSE"><img src="https://img.shields.io/github/license/oddfar/campus-imaotai.svg?sanitize=true"></a> </p>
<p align="center"> i茅台app自动预约,每日自动预约,支持docker一键部署</p>
<h2 align="center">Campus-imaotai</h2>
<p><a href="https://github.com/oddfar/notes">笔记仓库</a> | <a href="https://oddfar.com">我的博客</a></p>
<h2>项目介绍</h2>
<p>i茅台app,每日自动预约茅台</p>
<ul>
<li><input type="checkbox" checked disabled> 平台注册账号(可用i茅台)</li>
<li><input type="checkbox" checked disabled> 添加多个用户</li>
<li><input type="checkbox" checked disabled> 自动预约</li>
<li><input type="checkbox" checked disabled> 类型选择(本市出货量最大的门店,或位置附近门店)</li>
<li><input type="checkbox" checked disabled> 自动旅行</li>
<li><input type="checkbox" checked disabled> 首次旅行分享</li>
<li><input type="checkbox" checked disabled> 获取申购耐力值</li>
<li><input type="checkbox" checked disabled> 自定义时间/随机时间预约或旅行</li>
<li><input type="checkbox" checked disabled> 结果消息推送</li>
</ul>
<p>此项目使用 <strong>Campus</strong> 进行编写:<a href="https://github.com/oddfar/campus">https://github.com/oddfar/campus</a></p>
<h2>使用教程</h2>
<ul>
<li> <p>文档教程</p> <p><a href="https://oddfar.github.io/campus-doc/campus-imaotai">https://oddfar.github.io/campus-doc/campus-imaotai</a></p> </li>
<li> <p>视频教程</p> <p><a href="https://www.bilibili.com/video/BV1dj411H7oT">https://www.bilibili.com/video/BV1dj411H7oT</a></p> </li>
</ul>
<p>有问题请查看文档,查找 <a href="https://github.com/oddfar/campus-imaotai/issues">issues</a> 上是否有相同问题,若没有则提交 <a href="https://github.com/oddfar/campus-imaotai/issues">issues</a> ,附带详细的错误原因</p>
<p>不会Docker部署的,可使用客户端:<a href="https://github.com/lisongkun/hygge-imaotai">https://github.com/lisongkun/hygge-imaotai</a></p>
<h2>交流</h2>
<p>欢迎各位老哥进群<strong>项目技术交流</strong>(只交流技术,不谈茅台)</p>
<p>若您是开发人员,纯技术交流,请进<strong>Campus框架交流群</strong></p>
<p>若您使用本茅台项目,交流本项目/吹牛皮,请进<strong>Campus-imaotai交流群</strong></p>
<p>之前300多人的群早已解散,请大家遵守群规,选择合适的群。</p>
<table>
<thead>
<tr>
<th>Campus框架交流群</th>
<th>Campus-imaotai交流群</th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://note.oddfar.com/img/campus-group.JPG" alt="wechat" style="height:280px;"></td>
<td><img src="https://note.oddfar.com/img/campus-imaotai-group.jpg" alt="wechat" style="height:280px;"></td>
</tr>
</tbody>
</table>
<h2>贡献代码</h2>
<p>若您有好的想法,发现一些 <strong>BUG</strong> 并修复了,欢迎提交 <strong>Pull Request</strong> 参与开源贡献</p>
<p>发起 pull request 请求,提交到 master 分支,等待作者合并</p>
<h2>友情链接</h2>
<ul>
<li> <p>葫芦娃项目</p> <p>yize8888-maotai: <a href="https://github.com/yize8888/maotai">https://github.com/yize8888/maotai</a></p> </li>
</ul>
<h2>演示图</h2>
<table>
<thead>
<tr>
<th>i茅台预约</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://gcore.jsdelivr.net/gh/oddfar/campus-imaotai/.github/image-20230707144241399.png" alt="image-20230707144241399"></td>
<td><img src="https://gcore.jsdelivr.net/gh/oddfar/campus-imaotai/.github/image-20230707144404638.png" alt="image-20230707144404638"></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td><img src="https://gcore.jsdelivr.net/gh/oddfar/campus-imaotai/.github/image-20230707144703842.png" alt="image-20230707144703842"></td>
<td><img src="https://gcore.jsdelivr.net/gh/oddfar/campus-imaotai/.github/image-20230707145525709.png" alt="image-20230707145525709"></td>
</tr>
</tbody>
</table>
<h2>star 趋势图</h2>
<p><img src="https://starchart.cc/oddfar/campus-imaotai.svg?sanitize=true" alt="Stargazers over time"></p>
<h2>贡献</h2>
<a href="https://github.com/oddfar/campus-imaotai/graphs/contributors"> <img src="https://contrib.rocks/image?repo=oddfar/campus-imaotai"> </a>
<h2>演示图</h2>
<table>
<thead>
<tr>
<th>i茅台预约</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://raw.githubusercontent.com/oddfar/campus-imaotai/master/.github/image-20230707144241399.png" alt="image-20230707144241399"></td>
<td><img src="https://raw.githubusercontent.com/oddfar/campus-imaotai/master/.github/image-20230707144404638.png" alt="image-20230707144404638"></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td><img src="https://raw.githubusercontent.com/oddfar/campus-imaotai/master/.github/image-20230707144703842.png" alt="image-20230707144703842"></td>
<td><img src="https://raw.githubusercontent.com/oddfar/campus-imaotai/master/.github/image-20230707145525709.png" alt="image-20230707145525709"></td>
</tr>
</tbody>
</table>
<h2>声明</h2>
<ul>
<li>本项目涉及的数据由使用的个人或组织自行填写,本项目不对数据内容负责,包括但不限于数据的真实性、准确性、合法性。使用本项目所造成的一切后果,与本项目的所有贡献者无关,由使用的个人或组织完全承担。</li>
<li>本项目中涉及的第三方硬件、软件等,与本项目没有任何直接或间接的关系。本项目仅对部署和使用过程进行客观描述,不代表支持使用任何第三方硬件、软件。使用任何第三方硬件、软件,所造成的一切后果由使用的个人或组织承担,与本项目无关。</li>
<li>本项目中所有内容只供学习和研究使用,不得将本项目中任何内容用于违反国家/地区/组织等的法律法规或相关规定的其他用途。</li>
<li>所有基于本项目源代码,进行的任何修改,为其他个人或组织的自发行为,与本项目没有任何直接或间接的关系,所造成的一切后果亦与本项目无关。</li>
<li>所有直接或间接使用本项目的个人和组织,应24小时内完成学习和研究,并及时删除本项目中的所有内容。如对本项目的功能有需求,应自行开发相关功能。</li>
<li>本项目保留随时对免责声明进行补充或更改的权利,直接或间接使用本项目内容的个人或组织,视为接受本项目的特别声明。</li>
</ul>
<h2>鸣谢</h2>
<blockquote>
<p><a href="https://zh.wikipedia.org/zh-hans/IntelliJ_IDEA">IntelliJ IDEA</a> 是一个在各个方面都最大程度地提高开发人员的生产力的 IDE,适用于 JVM 平台语言。</p>
</blockquote>
<p>特别感谢 <a href="https://www.jetbrains.com/?from=campus">JetBrains</a> 为开源项目提供免费的 <a href="https://www.jetbrains.com/idea/?from=campus">IntelliJ IDEA</a> 等 IDE 的授权<br> <a href="https://www.jetbrains.com/?from=campus"><img src="https://raw.githubusercontent.com/oddfar/campus-imaotai/master/.github/jetbrains-variant.png" width="200"></a></p>
+
+
+ blossom-editor/blossom
+ 2023-12-24T01:52:13Z
+ tag:github.com,2023-12-24:/blossom-editor/blossom
+
+ <p>A markdown editor that you can deploy on your own servers to achieve cloud storage and device synchronization(支持私有部署的云端存储双链笔记软件)</p><hr><p align="center"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/blossom_name.png" height="auto"> </p>
<p align="center"> <a href="https://www.wangyunf.com/blossom-demo/#/settingindex">💻️ 试用</a> | <a href="https://www.wangyunf.com/blossom-doc/index.html">📃 文档</a> | <a href="https://www.wangyunf.com/blossom-doc/guide/about/download.html">📥 下载</a> </p>
<p>Blossom 是一个支持<strong>私有部署</strong>的<strong>云端双链笔记软件</strong>,你可以将你的笔记,图片,个人计划安排保存在自己的服务器中,并在任意设备之间实时同步。同时还是一个动态博客。</p>
<p>支持 Windows,Mac,网页客户端,网页移动端。</p>
<p align="center"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/device.png"> </p>
<h1>🛎️ 在线试用</h1>
<p>你可以通过<a href="https://www.wangyunf.com/blossom-demo/#/settingindex">在线地址</a>或<a href="https://www.wangyunf.com/blossom-doc/guide/about/download.html">下载客户端</a>试用,详细信息请查看<a href="https://www.wangyunf.com/blossom-doc/guide/tryuse.html">试用</a>文档。</p>
<p><br><br></p>
<h1>👏 Blossom 的特点:</h1>
<h3>完善的文件关系</h3>
<p>Blossom 不依赖任何三方存储和图床,其本身就是一个图床,并且提供了完善的图片管理,访勿删,以及图片和文章的双向关系绑定。</p>
<p>基于 Markdown 编写,没有破坏性的语法拓展,在这里编写的内容在任何 Markdown 软件中都能正常显示。</p>
<h3>快速迁移</h3>
<p>所有图片和文章都支持一键备份和导出,可以在几分钟内轻松迁出。导出的文件可以无缝使用 VS Code 或 Obsidian 等本地软件正常打开。</p>
<h3>丰富的附加功能</h3>
<ul>
<li>📅 <a href="https://www.wangyunf.com/blossom-doc/guide/plan.html">计划安排</a></li>
<li>🏷️ <a href="https://www.wangyunf.com/blossom-doc/guide/todo.html">待办事项</a></li>
<li>🎫 <a href="https://www.wangyunf.com/blossom-doc/guide/note.html">快捷便签</a></li>
<li>🍅 <a href="https://www.wangyunf.com/blossom-doc/guide/article.html#tomato">番茄钟</a></li>
<li>🧰 多用户、字数统计、字数折线图、编辑热力图、天气预报、主题设置...</li>
</ul>
<p>Blossom 拥有丰富的功能,不仅仅是知识管理,更是一个可以供多人同时使用的全面实用性工具。</p>
<p><br><br></p>
<h1>🚀 Docker Compose 一键部署</h1>
<pre><code>docker compose -f docker/compose/blossom-mysql8.yaml up -d
</code></pre>
<p><br><br></p>
<h1>🥳 加入群聊</h1>
<p>加入群聊进行沟通,反馈问题。</p>
<ul>
<li>1 群:522359970 (即将满)</li>
<li>2 群:921906098</li>
</ul>
<p align="center"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/qq1.png" height="400"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/qq2.png" height="400"> </p>
<h1>🤝 赞助 Blossom</h1>
<p><strong>Blossom 不会向你收取任何的费用,你可以永久免费使用!</strong></p>
<p>但开源软件的收益目前很难维持生活,并且项目设计,开发,测试需要大量的时间和精力,如果你愿意赞助我的工作,将非常有助于该项目的成长,并激励我长期持续下去!</p>
<p><strong>感谢每一个位赞助者对 Blossom 的大力支持,Blossom 因为你们变得更好。</strong></p>
<table>
<thead>
<tr>
<th align="left">赞助者 / Sponsors</th>
<th align="left">赞助者 / Sponsors</th>
<th align="left">赞助者 / Sponsors</th>
<th align="left">赞助者 / Sponsors</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">i just walked away🏃</td>
<td align="left">KalyanYang</td>
<td align="left">dsx</td>
<td align="left">熊猫不是猫</td>
</tr>
<tr>
<td align="left">白驹过隙</td>
<td align="left">支付宝用户-*发</td>
<td align="left">支付宝用户-*琛</td>
<td align="left">支付宝匿名用户</td>
</tr>
<tr>
<td align="left">疾风剑豪索隆</td>
<td align="left">放羊的星星</td>
<td align="left">立冬</td>
<td align="left">给你一支烟</td>
</tr>
<tr>
<td align="left">林诗</td>
<td align="left">Criesgod</td>
<td align="left">支付宝用户-*伟</td>
<td align="left">黑醋栗和丁香</td>
</tr>
<tr>
<td align="left">Mr_tg000</td>
<td align="left">Lucky</td>
<td align="left">egil</td>
<td align="left">Glimpse</td>
</tr>
</tbody>
</table>
<hr>
<h4 align="center">你可以通过以下几种方式赞助 Blossom。</h4>
<p align="center"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/sponsors/wechat.png" height="400"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/sponsors/ali.png" height="400"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/sponsors/aifadian.png" height="400"> </p>
<br>
<h1>更多图片</h1>
<p><img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/article.png" alt=""编辑器""></p>
<p align="center">编辑器</p>
<hr>
<p><img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/article_reference.png" alt=""双链笔记""></p>
<p align="center">双链笔记</p>
<hr>
<p><img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/picture.png" alt=""照片墙""></p>
<p align="center">照片墙</p>
<hr>
<p><img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/todo.png" alt=""日历计划""></p>
<p align="center">待办事项清单</p>
<hr>
<p><img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/plan.png" alt=""日历计划""></p>
<p align="center">日历计划</p>
<hr>
<p><img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/note.png" alt=""便签管理""></p>
<p align="center">便签管理</p>
<hr>
<p><img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/blog_home_pc.png" alt=""博客""></p>
<p align="center">博客</p>
<p align="center"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/blog_home_m.png" height="600"> <img src="https://raw.githubusercontent.com/blossom-editor/blossom/dev/doc/imgs/blog_article.png" height="600" style="margin-left: 30px"> </p>
<p align="center">博客移动端</p>
+
+
+ google/google-java-format
+ 2023-12-24T01:52:13Z
+ tag:github.com,2023-12-24:/google/google-java-format
+
+ <p>Reformats Java source code to comply with Google Java Style.</p><hr><h1>google-java-format</h1>
<p><code>google-java-format</code> is a program that reformats Java source code to comply with <a href="https://google.github.io/styleguide/javaguide.html">Google Java Style</a>.</p>
<h2>Using the formatter</h2>
<h3>from the command-line</h3>
<p><a href="https://github.com/google/google-java-format/releases">Download the formatter</a> and run it with:</p>
<pre><code>java -jar /path/to/google-java-format-${GJF_VERSION?}-all-deps.jar <options> [files...]
</code></pre>
<p>The formatter can act on whole files, on limited lines (<code>--lines</code>), on specific offsets (<code>--offset</code>), passing through to standard-out (default) or altered in-place (<code>--replace</code>).</p>
<p>To reformat changed lines in a specific patch, use <a href="https://github.com/google/google-java-format/raw/master/scripts/google-java-format-diff.py"><code>google-java-format-diff.py</code></a>.</p>
<p><em><strong>Note:</strong></em> <em>There is no configurability as to the formatter's algorithm for formatting. This is a deliberate design decision to unify our code formatting on a single format.</em></p>
<h3>IntelliJ, Android Studio, and other JetBrains IDEs</h3>
<p>A <a href="https://plugins.jetbrains.com/plugin/8527">google-java-format IntelliJ plugin</a> is available from the plugin repository. To install it, go to your IDE's settings and select the <code>Plugins</code> category. Click the <code>Marketplace</code> tab, search for the <code>google-java-format</code> plugin, and click the <code>Install</code> button.</p>
<p>The plugin will be disabled by default. To enable it in the current project, go to <code>File→Settings...→google-java-format Settings</code> (or <code>IntelliJ IDEA→Preferences...→Other Settings→google-java-format Settings</code> on macOS) and check the <code>Enable google-java-format</code> checkbox. (A notification will be presented when you first open a project offering to do this for you.)</p>
<p>To enable it by default in new projects, use <code>File→Other Settings→Default Settings...</code>.</p>
<p>When enabled, it will replace the normal <code>Reformat Code</code> and <code>Optimize Imports</code> actions.</p>
<h4>IntelliJ JRE Config</h4>
<p>The google-java-format plugin uses some internal classes that aren't available without extra configuration. To use the plugin, go to <code>Help→Edit Custom VM Options...</code> and paste in these lines:</p>
<pre><code>--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
</code></pre>
<p>Once you've done that, restart the IDE.</p>
<h3>Eclipse</h3>
<p>The latest version of the <code>google-java-format</code> Eclipse plugin can be downloaded from the <a href="https://github.com/google/google-java-format/releases">releases page</a>. Drop it into the Eclipse <a href="http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fp2_dropins_format.html">drop-ins folder</a> to activate the plugin.</p>
<p>The plugin adds a <code>google-java-format</code> formatter implementation that can be configured in <code>Window > Preferences > Java > Code Style > Formatter > Formatter Implementation</code>.</p>
<h3>Third-party integrations</h3>
<ul>
<li>Gradle plugins
<ul>
<li><a href="https://github.com/diffplug/spotless/tree/main/plugin-gradle#google-java-format">spotless</a></li>
<li><a href="https://github.com/sherter/google-java-format-gradle-plugin">sherter/google-java-format-gradle-plugin</a></li>
</ul> </li>
<li>Apache Maven plugins
<ul>
<li><a href="https://github.com/diffplug/spotless/tree/main/plugin-maven#google-java-format">spotless</a></li>
<li><a href="https://github.com/spotify/fmt-maven-plugin">spotify/fmt-maven-plugin</a></li>
<li><a href="https://github.com/talios/googleformatter-maven-plugin">talios/googleformatter-maven-plugin</a></li>
<li><a href="https://github.com/Cosium/maven-git-code-format">Cosium/maven-git-code-format</a>: A maven plugin that automatically deploys google-java-format as a pre-commit git hook.</li>
</ul> </li>
<li>SBT plugins
<ul>
<li><a href="https://github.com/sbt/sbt-java-formatter">sbt/sbt-java-formatter</a></li>
</ul> </li>
<li><a href="https://github.com/features/actions">Github Actions</a>
<ul>
<li><a href="https://github.com/axel-op/googlejavaformat-action">googlejavaformat-action</a>: Automatically format your Java files when you push on github</li>
</ul> </li>
</ul>
<h3>as a library</h3>
<p>The formatter can be used in software which generates java to output more legible java code. Just include the library in your maven/gradle/etc. configuration.</p>
<p><code>google-java-format</code> uses internal javac APIs for parsing Java source. The following JVM flags are required when running on JDK 16 and newer, due to <a href="https://openjdk.java.net/jeps/396">JEP 396: Strongly Encapsulate JDK Internals by Default</a>:</p>
<pre><code>--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
</code></pre>
<h4>Maven</h4>
<pre><code class="language-xml"><dependency>
<groupId>com.google.googlejavaformat</groupId>
<artifactId>google-java-format</artifactId>
<version>${google-java-format.version}</version>
</dependency>
</code></pre>
<h4>Gradle</h4>
<pre><code class="language-groovy">dependencies {
implementation 'com.google.googlejavaformat:google-java-format:$googleJavaFormatVersion'
}
</code></pre>
<p>You can then use the formatter through the <code>formatSource</code> methods. E.g.</p>
<pre><code class="language-java">String formattedSource = new Formatter().formatSource(sourceString);
</code></pre>
<p>or</p>
<pre><code class="language-java">CharSource source = ...
CharSink output = ...
new Formatter().formatSource(source, output);
</code></pre>
<p>Your starting point should be the instance methods of <code>com.google.googlejavaformat.java.Formatter</code>.</p>
<h2>Building from source</h2>
<pre><code>mvn install
</code></pre>
<h2>Contributing</h2>
<p>Please see <a href="https://raw.githubusercontent.com/google/google-java-format/master/CONTRIBUTING.md">the contributors guide</a> for details.</p>
<h2>License</h2>
<pre><code class="language-text">Copyright 2015 Google Inc.
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
http://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.
</code></pre>
+
+
\ No newline at end of file
diff --git a/javascript+erb/daily/index.xml b/javascript+erb/daily/index.xml
index 5a64728deed..d0ae59fa20c 100644
--- a/javascript+erb/daily/index.xml
+++ b/javascript+erb/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JavaScript+ERB Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:37Z
+ 2023-12-24T01:35:47Z
Daily Trending of JavaScript+ERB in GitHub
\ No newline at end of file
diff --git a/javascript+erb/weekly/index.xml b/javascript+erb/weekly/index.xml
new file mode 100644
index 00000000000..2b0b6b138e4
--- /dev/null
+++ b/javascript+erb/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JavaScript+ERB Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:55Z
+ Weekly Trending of JavaScript+ERB in GitHub
+
+
\ No newline at end of file
diff --git a/javascript/daily/index.xml b/javascript/daily/index.xml
index 7de35a14a49..30b11cd5499 100644
--- a/javascript/daily/index.xml
+++ b/javascript/daily/index.xml
@@ -1,28 +1,28 @@
GitHub JavaScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:26Z
+ 2023-12-24T01:35:30Z
Daily Trending of JavaScript in GitHub
- vanila-io/wireflow
- 2023-12-23T01:31:26Z
- tag:github.com,2023-12-23:/vanila-io/wireflow
-
- <p>Wireflow - user flow chart real-time collaborative tool</p><hr><h1>Wireflow - flow chart collaboration app</h1>
<p><a href="https://app.netlify.com/sites/wireflow-app/deploys"><img src="https://api.netlify.com/api/v1/badges/15abd946-68e7-4cdb-8d9e-4930d5a2191c/deploy-status" alt="Netlify Status"></a> <a href="https://david-dm.org/vanila-io/wireflow"><img src="https://david-dm.org/vanila-io/wireflow/status.svg?sanitize=true" alt="dependencies Status"></a> <a href="https://david-dm.org/vanila-io/wireflow?type=dev"><img src="https://david-dm.org/vanila-io/wireflow/dev-status.svg?sanitize=true" alt="devDependencies Status"></a> <a href="https://raw.githubusercontent.com/vanila-io/wireflow/master/#backers"><img src="https://opencollective.com/wireflow/backers/badge.svg?sanitize=true" alt="OpenCollective"></a> <a href="https://raw.githubusercontent.com/vanila-io/wireflow/master/#sponsors"><img src="https://opencollective.com/wireflow/sponsors/badge.svg?sanitize=true" alt="OpenCollective"></a></p>
<p>Alpha version of Wireflow app made by <a href="https://vanila.io">The Vanila Team</a> and <a href="https://uxstore.com">UX Store</a>.</p>
<h3>Official Website: <a href="https://wireflow.co">Wireflow.co</a></h3>
<p><img src="https://i.imgur.com/ceXMd28.png" alt="Wireflow"></p>
<h2>Around the web:</h2>
<ul>
<li><a href="https://join.slack.com/t/wireflow/shared_invite/zt-iwgx8efa-Vt~_rnkw2tGAhSR~nJs9bA">Private slack channel invite link</a></li>
<li>Join our community chat: <a href="https://community.vanila.io/wireflow">https://community.vanila.io/wireflow</a></li>
<li><a href="https://youtu.be/zm0XbLmXtXY">Youtube Video with a short story</a></li>
<li><a href="https://forums.meteor.com/t/anyone-interested-in-collaboration-on-wireflow-co-open-source-project/40716">Post regarding Contribution</a></li>
<li><a href="https://blog.vanila.io/we-were-hunted-on-producthunt-unexpectedly-e92e7179bdec">Check a blog post for whole story</a></li>
<li><a href="https://www.producthunt.com/posts/wireflow">ProductHunt page</a></li>
<li><a href="https://www.openhub.net/p/wireflow">Open Hub analysis of Wireflow code</a></li>
</ul>
<h1>Develop Locally</h1>
<pre><code>yarn
yarn start
open http://localhost:3000
</code></pre>
<h1>Using docker-compose</h1>
<pre><code>docker-compose up -d
</code></pre>
<h2>Credits</h2>
<h3>Contributors</h3>
<p>This project exists thanks to all the people who contribute. <a href="https://github.com/vanila-io/wireflow/graphs/contributors"><img src="https://opencollective.com/wireflow/contributors.svg?width=890&button=false"></a></p>
<h3>Backers</h3>
<p>Thank you to all our backers! 🙏 [<a href="https://opencollective.com/wireflow#backer">Become a backer</a>]</p>
<p><a href="https://opencollective.com/wireflow#backer" target="_blank"><img src="https://opencollective.com/wireflow/backers.svg?width=890"></a></p>
<h3>Sponsors</h3>
<p>Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [<a href="https://opencollective.com/wireflow#sponsor">Become a sponsor</a>]</p>
<p><a href="https://opencollective.com/wireflow/sponsor/0/website" target="_blank"><img src="https://opencollective.com/wireflow/sponsor/0/avatar.svg?sanitize=true"></a> <a href="https://opencollective.com/wireflow/sponsor/1/website" target="_blank"><img src="https://opencollective.com/wireflow/sponsor/1/avatar.svg?sanitize=true"></a> <a href="https://opencollective.com/wireflow/sponsor/2/website" target="_blank"><img src="https://opencollective.com/wireflow/sponsor/2/avatar.svg?sanitize=true"></a></p>
+ moddio/moddio2
+ 2023-12-24T01:35:30Z
+ tag:github.com,2023-12-24:/moddio/moddio2
+
+ <p>HTML5 multiplayer game engine</p><hr><div align="center">
<h2><a href="https://modd.io">Moddio Game Engine 2</a></h2>
<p>Moddio is a Multiplayer-First Game Engine. It has a built-in server-authoritative netcode, including snapshot interpolation and client-side reconciliation. It can support 50+ concurrent players or 300+ moving entities hosted on a $5/month VM. Join us on <a href="https://discord.gg/XRe8T7K">Discord</a> </p>
</div>
<div align="center">
<img src="https://img.shields.io/github/contributors/moddio/moddio2?style=for-the-badge&color=f01313">
<img src="https://img.shields.io/github/last-commit/moddio/moddio2?style=for-the-badge&color=f01313">
<img src="https://img.shields.io/github/languages/code-size/moddio/moddio2?style=for-the-badge&color=f01313">
</div>
<h3><a href="http://modd.io/play/two-houses">Demo</a></h3>
<br>
<h2>What's included in the box.</h2>
<ul>
<li>Box2D Physics</li>
<li>Server-authoritative netcode using Websocket, Snapshot interpolation, Client-side reconciliation, and LZ-string compression</li>
<li>Inventory & Item system</li>
<li>Built-in Attributes (e.g. HP, Energy, etc) with regeneration rates</li>
<li>Built-in Item system (melee & projectile)</li>
<li>Dialogues (ideal for visual novel-style games)</li>
<li>Shops (for selling items)</li>
<li>Unit control (top-down WASD or platformer)</li>
<li>Client-side predicted projectile + unit movement (optional)</li>
<li>Unit AI including A* pathfinding</li>
<li>Mobile controls</li>
<li>and more!</li>
</ul>
<h2>Running the game</h2>
<p>Make sure you have <a href="https://nodejs.org">Node 16</a> or later. First, setup the repo</p>
<pre><code>git clone https://github.com/moddio/moddio2.git
cd moddio2
npm install
</code></pre>
<p>Then, go to /src directory, and rename game-sample.json to game.json. Go back to the root directory and run the command below:</p>
<pre><code>npm run server
</code></pre>
<p>You can now play the game at <a href="http://localhost:80">http://localhost:80</a></p>
<h2>How do I create a new game from scratch?</h2>
<p>Moddio games are created & edited using Moddio Game Editor available at <a href="https://www.modd.io">https://www.modd.io</a>. To learn how to use the game editor, visit <a href="https://learn.modd.io">https://learn.modd.io</a>.</p>
<p>Once you create the game, you can export the game.json which you can use in your local installation. Inside the Moddio Game Editor, Go to <code>Menu</code> -> Click <code>Export Game</code>.</p>
<img src="https://raw.githubusercontent.com/moddio/moddio2/master/assets/images/gamejson2.png" width="600" alt="How to get game json in game's in-game editor"> Next, rename the downloaded Game JSON as `game.json` and move it to the `./src` directory.
<h2>How to contribute</h2>
<p>Moddio is completely free and open source under the MIT license, and we are always looking for more contributors. To learn about how to become a contributor, please visit <a href="https://docs.modd.io/how-to-contribute">how to contribute page</a></p>
<h2>Credits</h2>
<p><a href="https://www.isogenicengine.com/">Isogenic Game Engine</a></p>
<p><a href="https://phaser.io/">Phaser</a></p>
<p><a href="https://github.com/piqnt/planck.js">PlanckJS</a></p>
<p><a href="https://github.com/uNetworking/uWebSockets">uWebsocket</a></p>
<p><a href="https://github.com/erincatto/box2d">Box2D</a></p>
<p><a href="https://www.kenney.nl/">Kenney Assets</a></p>
<p><a href="https://github.com/tailwindlabs/heroicons">Hero Icons</a></p>
- vitozyf/lucky-draw
- 2023-12-23T01:31:26Z
- tag:github.com,2023-12-23:/vitozyf/lucky-draw
-
- <p>年会抽奖程序</p><hr><h2>年会抽奖</h2>
<p><a href="https://vitozyf.github.io/lucky-draw/index.html#/?tdsourcetag=s_pctim_aiomsg">演示地址</a></p>
<h2>使用说明</h2>
<h3>配置建议</h3>
<ul>
<li>本程序理论支持配置百万级别人数,超过 10 万以上时初始化会比较耗时,初始化后可以正常抽奖。</li>
<li>如果人数较多,不建议导入名单或照片,按号码抽奖即可。</li>
</ul>
<h3>抽奖配置</h3>
<ul>
<li>设置抽奖总人数、奖项及每个奖项的人数,默认包含两个奖项,如果不想抽取默认的奖项,可以设置该奖项数量为 0</li>
<li>可以新增自定义的奖项,新增后必须将奖项人数设置大于 0 才会在抽奖奖项列表中显示</li>
</ul>
<h3>抽奖结果</h3>
<ul>
<li>显示抽取的结果,点击号码允许从结果中删除该号码。删除后该号码可以参与剩余的抽奖,否则已经中的号码无法参与剩余奖项的抽奖(除非开启全员参与功能)</li>
</ul>
<h3>开始</h3>
<ul>
<li>开始抽奖,需要选取抽取的奖项、本次抽取的人数和是否开启全员抽奖功能。</li>
<li>本次抽取的人数可以选择 1 人、5 人、一次性抽取完或者自定义抽取数量,不能大于奖项剩余的数量</li>
<li>点击停止抽取完成</li>
</ul>
<h3>重置</h3>
<ul>
<li>重置数据恢复到初始状态</li>
<li>可选的重置选项: <code>1.重置全部数据 2.重置抽奖配置 3.重置名单 4.重置照片 5.重置抽奖结果</code></li>
</ul>
<h3>导入名单</h3>
<ul>
<li>按照格式导入名单,可以多次输入。若号码有对应的姓名,则在抽取过程及结果中会显示号码及姓名,若没有对应的姓名,则只显示号码。</li>
</ul>
<h3>导入相册</h3>
<ul>
<li>按照 抽奖号-照片的一对一导入,(可在现场将号码发出签到后,每发一个号码,导入一个照片)。抽奖结果将以照片形式展示。</li>
<li>照片格式支持<code>.jpg</code>和<code>.png</code>,照片大小不能超过 <code>150kb</code>,建议 <code>20-50kb</code>,建议尺寸为 <code>160*160px</code></li>
</ul>
<h2>温馨提示</h2>
<ul>
<li>本抽奖程序无暗箱操作,无后台,无后门。</li>
<li>名单和照片显示只需导入一种即可,无导入数据则使用抽奖号码。</li>
<li>建议使用最新的 Chrome 浏览器打开体验最佳。</li>
<li>由于背景音乐加载较慢,可以在抽奖前提前打开缓存好。或者安装 windows 版本软件到本地,无需联网即可使用。</li>
</ul>
<h2>windows 软件版本</h2>
<ul>
<li>本抽奖程序的 windows 软件版本下载<a href="https://github.com/vitozyf/lucky-draw/releases">安装包</a></li>
</ul>
<h2>Donation</h2>
<p>如果这个开源项目对您有帮助,请作者喝杯咖啡吧</p>
<p>Email: <a href="mailto:vito.z@qq.com">vito.z@qq.com</a></p>
<p><img src="https://raw.githubusercontent.com/vitozyf/lucky-draw/master/public/pay.png" alt="payimg"></p>
<h2>License</h2>
<p><a href="https://choosealicense.com/licenses/mit/">MIT</a></p>
+ koolkishan/chat-app-react-nodejs
+ 2023-12-24T01:35:30Z
+ tag:github.com,2023-12-24:/koolkishan/chat-app-react-nodejs
+
+ <p>Chat Application Using React, Node.js and Socket.io with MongoDB</p><hr><h1>Snappy - Chat Application</h1>
<p>Snappy is chat application build with the power of MERN Stack. You can find the tutorial <a href="https://www.youtube.com/watch?v=otaQKODEUFs">here</a></p>
<p><img src="https://raw.githubusercontent.com/koolkishan/chat-app-react-nodejs/master/images/snappy_login.png" alt="login page"></p>
<p><img src="https://raw.githubusercontent.com/koolkishan/chat-app-react-nodejs/master/images/snappy.png" alt="home page"></p>
<h2>Installation Guide</h2>
<h3>Requirements</h3>
<ul>
<li><a href="https://nodejs.org/en/download">Nodejs</a></li>
<li><a href="https://www.mongodb.com/docs/manual/administration/install-community/">Mongodb</a></li>
</ul>
<p>Both should be installed and make sure mongodb is running.</p>
<pre><code class="language-shell">git clone https://github.com/koolkishan/chat-app-react-nodejs
cd chat-app-react-nodejs
</code></pre>
<p>Now rename env files from .env.example to .env</p>
<pre><code class="language-shell">cd public
mv .env.example .env
cd ..
cd server
mv .env.example .env
cd ..
</code></pre>
<p>Now install the dependencies</p>
<pre><code class="language-shell">cd server
yarn
cd ..
cd public
yarn
</code></pre>
<p>We are almost done, Now just start the development server.</p>
<p>For Frontend.</p>
<pre><code class="language-shell">cd public
yarn start
</code></pre>
<p>For Backend.</p>
<p>Open another terminal in folder, Also make sure mongodb is running in background.</p>
<pre><code class="language-shell">cd server
yarn start
</code></pre>
<p>Done! Now open localhost:3000 in your browser.</p>
- DuendeSoftware/IdentityServer
- 2023-12-23T01:31:26Z
- tag:github.com,2023-12-23:/DuendeSoftware/IdentityServer
-
- <p>The most flexible and standards-compliant OpenID Connect and OAuth 2.x framework for ASP.NET Core</p><hr><h1>Duende IdentityServer</h1>
<p>The most flexible and standards-compliant OpenID Connect and OAuth 2.x framework for ASP.NET Core</p>
<p><a href="https://duendesoftware.com/products/identityserver">Web site</a> and <a href="https://docs.duendesoftware.com">documentation</a></p>
<h2>How to build</h2>
<ul>
<li>Install Git</li>
<li>Clone this repo</li>
<li><a href="https://www.microsoft.com/net/download/core#/current">Install</a> the <a href="https://github.com/DuendeSoftware/IdentityServer/raw/main/global.json">required</a> .NET Core SDK</li>
<li>Run <code>build.ps1</code> or <code>build.sh</code> in the root of the cloned repo</li>
</ul>
+ ruesandora/Kenshi
+ 2023-12-24T01:35:30Z
+ tag:github.com,2023-12-24:/ruesandora/Kenshi
+
+ <p></p><hr><h1 align="center">Kenshi</h1>
<blockquote>
<p>Kurulumu kolay - ne kadar süreceğini bilmiyorum belli değil - donanım için yeni sunucuya gerek yok</p>
</blockquote>
<blockquote>
<p>Ödüllü evet - ama top 200'e - herkes kurabilir ama en iyi performansı veren 200 node ödül alabilir.</p>
</blockquote>
<blockquote>
<p>TOPLULUK KANALLARI: <a href="https://t.me/RuesChat">Sohbet Kanalımız</a> - <a href="https://t.me/RuesAnnouncement">Duyurular ve Gelişmeler</a> - <a href="https://whatsapp.com/channel/0029VaBcj7V1dAw1H2KhMk34">Whatsapp</a> - <a href="https://t.me/KenshiTech">Kenshi Telegram</a></p>
</blockquote>
<h1></h1>
<h1 align="center">Donanım</h1>
<blockquote>
<p>Bir cihaz temin etmedim mevcut nodeların yanına kurdum - ario, santiment, voi yanlarında denedim problem olmadı.</p>
</blockquote>
<blockquote>
<p>top 200'de olmak için en önemli kriter internet olacak, <a href="https://hetzner.cloud/?ref=gIFAhUnYYjD3">Hetzner</a> kullandım.</p>
</blockquote>
<blockquote>
<p>illa temin edilecekse 2 CPU 2 RAM ideal 'şimdilik'</p>
</blockquote>
<h1></h1>
<h1 align="center">Kurulum</h1>
<pre><code class="language-console"># sunucu güncelleme
sudo apt update -y && sudo apt upgrade -y
# burada 20 ve 60 saniye bekliyoruz
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
# komutları sırasıyla girelim:
sudo apt-get install -y nodejs
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm install 16
nvm use 16
apt install npm
sudo npm i -g @kenshi.io/unchained
sudo npm i -g @kenshi.io/unchained@latest
</code></pre>
<h1 align="center">Yapılandırma işlemleri ve başlatma</h1>
<pre><code class="language-console"># conf.yaml içine girelim
sudo nano conf.yaml
# burada sadece Rues kısmını kendi adınız yapın - gerisini ben ayarladım
log: info
name: Rues
lite: true
gossip: 5
rpc:
ethereum:
- https://ethereum.publicnode.com
- https://eth.llamarpc.com
- wss://ethereum.publicnode.com
- https://eth.rpc.blxrbdn.com
database:
url: mongodb+srv://<user>:<password>@<url>/?retryWrites=true&w=majority
name: unchained
> CTRL X Y Enter ile çıkıyoruz.
# Screen içine girelim
screen -S kenshi
# Başlatalım
unchained start conf.yaml --generate
> CTRL A D ile screenden çıkıyoruz.
# Notlar:
> Son komuttan sonra loglar akmaya başlayacak ve sync olmaya başlayacaksınız
> 5 dakikada bir gözüken Leaderboard'da siz OLMAYACAKSINIZ
> Bu leaderboard - sizin node'larınız tarafından diğer nodelara verilen puanlardır
> Sizde başkaların nodelarından puan alacaksınız - hetzner'iniz varsa kafanız rahat olabilir.
</code></pre>
<blockquote>
<p>WinSCP veya mobaxterm benzeri bir uygulama ile conf.yaml dosyasını yedekleyelim.</p>
</blockquote>
<blockquote>
<p>Veya <code>cat conf.yaml</code> komut ile çıktıyı kaydedebilirsiniz.</p>
</blockquote>
<blockquote>
<p>conf.yaml içinde ki secret key önemli olan.</p>
</blockquote>
<blockquote>
<p>Kendinizi <a href="https://charts.mongodb.com/charts-unchained-gpust/public/dashboards/cbb6ccf6-15b2-4187-be56-ff9d2e25a48a">burada</a> contributions kısmında bulabilirsiniz.</p>
</blockquote>
\ No newline at end of file
diff --git a/javascript/weekly/index.xml b/javascript/weekly/index.xml
new file mode 100644
index 00000000000..04b9b8d28d7
--- /dev/null
+++ b/javascript/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub JavaScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:21Z
+ Weekly Trending of JavaScript in GitHub
+
+
+ Chalarangelo/30-seconds-of-code
+ 2023-12-24T01:52:21Z
+ tag:github.com,2023-12-24:/Chalarangelo/30-seconds-of-code
+
+ <p>Short code snippets for all your development needs</p><hr><p><a href="https://30secondsofcode.org/js/p/1"><img src="https://raw.githubusercontent.com/Chalarangelo/30-seconds-of-code/master/logo.png" alt="Logo"></a></p>
<h1>30 seconds of code</h1>
<blockquote>
<p>Short code snippets for all your development needs</p>
</blockquote>
<ul>
<li>Visit <a href="https://30secondsofcode.org">the website</a> to view the snippet collection.</li>
<li>Search for snippets and collections that suit your needs, using the name, tags, language or description.</li>
<li>Browse all <a href="https://30secondsofcode.org/snippets/p/1">snippets</a> or individual <a href="https://30secondsofcode.org/collections/p/1">snippet collections</a> for each topic.</li>
<li>Click on each snippet card to view the whole snippet, including code, explanation and examples.</li>
<li>You can copy code blocks on any snippet card, using the copy button at the top right.</li>
<li>If you like the project, give it a star. It means a lot.</li>
</ul>
<h2>Want to contribute?</h2>
<ul>
<li>Community contributions are not accepted at this time. Check back later for updates.</li>
</ul>
<h2>Credits</h2>
<ul>
<li>This repository is maintained by <a href="https://raw.githubusercontent.com/Chalarangelo/30-seconds-of-code/master/%5Bhttps://github.com/30-seconds%5D(https://github.com/Chalarangelo)">Angelos Chalaris</a>.</li>
<li>All code snippets are licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0 License</a>, unless explicitly stated otherwise.</li>
<li>Any other material (including text content, images, the website source code, logos, names and trademarks) are not to be used without the explicit consent of the owner.</li>
<li>The website is powered by <a href="https://www.netlify.com/">Netlify</a>, <a href="https://astro.build/">Astro</a> & <a href="https://github.com/">GitHub</a>.</li>
<li>All of the photography is provided by <a href="https://unsplash.com/collections/9387655/30-seconds-of-code-images">Unsplash</a>.</li>
</ul>
+
+
+ serverless/serverless
+ 2023-12-24T01:52:21Z
+ tag:github.com,2023-12-24:/serverless/serverless
+
+ <p>⚡ Serverless Framework – Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more! –</p><hr><p><a href="https://serverless.com"><img src="https://s3.amazonaws.com/assets.github.serverless/readme-serverless-framework.gif" alt="Serverless Application Framework AWS Lambda API Gateway"></a></p>
<p><a href="http://www.serverless.com"><img src="http://public.serverless.com/badges/v3.svg?sanitize=true" alt="serverless"></a> <a href="https://github.com/serverless/serverless/actions?query=workflow%3AIntegrate"><img src="https://github.com/serverless/serverless/workflows/Integrate/badge.svg?sanitize=true" alt="Build Status"></a> <a href="https://badge.fury.io/js/serverless"><img src="https://badge.fury.io/js/serverless.svg?sanitize=true" alt="npm version"></a> <a href="https://codecov.io/gh/serverless/serverless"><img src="https://codecov.io/gh/serverless/serverless/branch/master/graph/badge.svg?sanitize=true" alt="codecov"></a> <a href="https://gitter.im/serverless/serverless"><img src="https://img.shields.io/gitter/room/serverless/serverless.svg?sanitize=true" alt="gitter"></a> <a href="https://snyk.io/test/github/serverless/serverless"><img src="https://snyk.io/test/github/serverless/serverless/badge.svg?sanitize=true" alt="Known Vulnerabilities"></a> <a href="https://www.npmjs.com/package/serverless"><img src="https://img.shields.io/npm/l/serverless.svg?sanitize=true" alt="license"></a></p>
<p><a href="http://www.serverless.com">Website</a> • <a href="https://serverless.com/framework/docs/">Docs</a> • <a href="https://serverless.com/slack">Community Slack</a> • <a href="http://forum.serverless.com">Forum</a> • <a href="https://twitter.com/goserverless">Twitter</a> • <a href="https://www.meetup.com/pro/serverless/">Meetups</a></p>
<p><strong>The Serverless Framework</strong> – Build applications on AWS Lambda and other next-gen cloud services, that auto-scale and only charge you when they run. This lowers the total cost of running and operating your apps, enabling you to build more and manage less.</p>
<p>The Serverless Framework is a command-line tool with an easy and approachable YAML syntax to deploy both your code and cloud infrastructure needed to make tons of serverless application use-cases. It's a multi-language framework that supports Node.js, Typescript, Python, Go, Java, and more. It's also completely extensible via over 1,000 plugins which add more serverless use-cases and workflows to the Framework.</p>
<p>Actively maintained by <a href="https://www.serverless.com">Serverless Inc</a>.</p>
<h1>Contents</h1>
<ul>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#features">Features</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#quick-start">Quick Start</a></li>
<li><a href="https://github.com/serverless/plugins">Plugins</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#contributing">Contributing</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#community">Community</a></li>
<li><a href="https://raw.githubusercontent.com/serverless/serverless/main/#licensing">Licensing</a></li>
</ul>
<h1><a name="features"></a>Features</h1>
<ul>
<li><strong>Hyper-Productive</strong> - Build more and manage less with serverless architectures.</li>
<li><strong>Multiple Use-Cases</strong> - Choose from tons of efficient serverless use-cases (APIs, Scheduled Tasks, Event Handlers, Streaming Data Pipelines, Web Sockets & more).</li>
<li><strong>Infra & Code</strong> - Deploys both code and infrastructure together, resulting in out-of-the-box serverless apps.</li>
<li><strong>Easy</strong> - Enjoy simple syntax to safely deploy deploy AWS Lambda functions, event sources and more without being a cloud expert.</li>
<li><strong>Multi-Language</strong> - Supports Node.js, Python, Java, Go, C#, Ruby, Swift, Kotlin, PHP, Scala, & F#</li>
<li><strong>Full Lifecycle</strong> - Manages the lifecycle of your serverless architecture (build, deploy, update, monitor, troubleshoot).</li>
<li><strong>Multi-Domains</strong> - Group domains into Serverless Services for easy management of code, resources & processes, across large projects & teams.</li>
<li><strong>Multi-Environments</strong> - Built-in support for multiple stages (e.g. development, staging, production).</li>
<li><strong>Guardrails</strong> - Loaded with automation, optimization and best practices.</li>
<li><strong>Extensible</strong> - Extend or modify the Framework and its operations via Plugins.</li>
<li><strong>Plugin Ecosystem</strong> - Extend or modify the Framework and its operations via Plugins.</li>
<li><strong>Welcoming</strong> - A passionate and welcoming community!</li>
</ul>
<h1><a name="quick-start"></a>Quick Start</h1>
<p>Here's how to get started quickly, as well as some recommended development workflows.</p>
<h2>Installation</h2>
<p>Install <code>serverless</code> module via NPM:</p>
<pre><code class="language-bash">npm install -g serverless
</code></pre>
<p><em>If you don’t already have Node.js on your machine, <a href="https://nodejs.org/">install it first</a>. If you don't want to install Node or NPM, you can <a href="https://www.serverless.com/framework/docs/install-standalone">install <strong>serverless</strong> as a standalone binary</a>.</em></p>
<h2>Creating A Service</h2>
<p>To create your first project (known as a Serverless Framework "Service"), run the <code>serverless</code> command below, then follow the prompts.</p>
<pre><code class="language-bash"># Create a new serverless project
serverless
# Move into the newly created directory
cd your-service-name
</code></pre>
<p>The <code>serverless</code> command will guide you to:</p>
<ol>
<li>Create a new project</li>
<li>Configure your <a href="https://serverless.com/framework/docs/providers/aws/guide/credentials/">AWS credentials</a></li>
<li>Optionally set up a free Serverless Framework account with additional features.</li>
</ol>
<p>Your new serverless project will contain a <code>serverless.yml</code> file. This file features simple syntax for deploying infrastructure to AWS, such as AWS Lambda functions, infrastructure that triggers those functions with events, and additional infrastructure your AWS Lambda functions may need for various use-cases. You can learn more about this in the <a href="https://www.serverless.com/framework/docs/providers/aws/guide/intro">Core Concepts documentation</a>.</p>
<p>The <code>serverless</code> command will give you a variety of templates to choose from. If those do not fit your needs, check out the <a href="https://github.com/serverless/examples">project examples from Serverless Inc. and our community</a>. You can install any example by passing a GitHub URL using the <code>--template-url</code> option:</p>
<pre><code class="language-base">serverless --template-url=https://github.com/serverless/examples/tree/v3/...
</code></pre>
<p>Please note that you can use <code>serverless</code> or <code>sls</code> to run Serverless Framework commands.</p>
<h2>Deploying</h2>
<p>If you haven't done so already within the <code>serverless</code> command, you can deploy the project at any time by running:</p>
<pre><code class="language-bash">sls deploy
</code></pre>
<p>The deployed AWS Lambda functions and other essential information such as API Endpoint URLs will be displayed in the command output.</p>
<p>More details on deploying can be found <a href="https://www.serverless.com/framework/docs/providers/aws/guide/deploying">here</a>.</p>
<h2>Developing On The Cloud</h2>
<p>Many Serverless Framework users choose to develop on the cloud, since it matches reality and emulating Lambda locally can be complex. To develop on the cloud quickly, without sacrificing speed, we recommend the following workflow...</p>
<p>To deploy code changes quickly, skip the <code>serverless deploy</code> command which is much slower since it triggers a full AWS CloudFormation update. Instead, deploy code and configuration changes to individual AWS Lambda functions in seconds via the <code>deploy function</code> command, with <code>-f [function name in serverless.yml]</code> set to the function you want to deploy.</p>
<pre><code class="language-bash">sls deploy function -f my-api
</code></pre>
<p>More details on the <code>deploy function</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/deploy-function">here</a>.</p>
<p>To invoke your AWS Lambda function on the cloud, you can find URLs for your functions w/ API endpoints in the <code>serverless deploy</code> output, or retrieve them via <code>serverless info</code>. If your functions do not have API endpoints, you can use the <code>invoke</code> command, like this:</p>
<pre><code class="language-bash">sls invoke -f hello
# Invoke and display logs:
serverless invoke -f hello --log
</code></pre>
<p>More details on the <code>invoke</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke">here</a>.</p>
<p>To stream your logs while you work, use the <code>sls logs</code> command in a separate terminal window:</p>
<pre><code class="language-bash">sls logs -f [Function name in serverless.yml] -t
</code></pre>
<p>Target a specific function via the <code>-f</code> option and enable streaming via the <code>-t</code> option.</p>
<h2>Developing Locally</h2>
<p>Many Serverless Framework users rely on local emulation to develop more quickly. Please note, emulating AWS Lambda and other cloud services is never accurate and the process can be complex. We recommend the following workflow to develop locally...</p>
<p>Use the <code>invoke local</code> command to invoke your function locally:</p>
<pre><code class="language-bash">sls invoke local -f my-api
</code></pre>
<p>You can also pass data to this local invocation via a variety of ways. Here's one of them:</p>
<pre><code class="language-bash">serverless invoke local --function functionName --data '{"a":"bar"}'
</code></pre>
<p>More details on the <code>invoke local</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke-local">here</a></p>
<p>Serverless Framework also has a great plugin that allows you to run a server locally and emulate AWS API Gateway. This is the <code>serverless-offline</code> command.</p>
<p>More details on the <strong>serverless-offline</strong> plugins command can be found <a href="https://github.com/dherault/serverless-offline">here</a></p>
<h2>Monitoring, Secrets & Collaboration</h2>
<p>If you're looking for easy, out-of-the-box monitoring, secrets management and collaboration features, sign into the Serverless Framework Dashboard. It's free!</p>
<pre><code class="language-bash">sls login
</code></pre>
<h2>Remove your service</h2>
<p>If you want to delete your service, run <code>remove</code>. This will delete all the AWS resources created by your project and ensure that you don't incur any unexpected charges. It will also remove the service from Serverless Dashboard.</p>
<pre><code class="language-bash">sls remove
</code></pre>
<p>More details on the <code>remove</code> command can be found <a href="https://www.serverless.com/framework/docs/providers/aws/cli-reference/remove">here</a>.</p>
<h2>What's Next</h2>
<p>Here are some helpful resources for continuing with the Serverless Framework:</p>
<ul>
<li><a href="https://www.serverless.com/framework/docs/providers/aws/guide/intro">Study Serverless Framework's core concepts</a></li>
<li><a href="https://github.com/serverless/examples">Get inspiration from these Serverless Framework templates</a></li>
<li><a href="https://www.serverless.com/framework/docs/providers/aws/guide/events">Discover all of the events that can trigger Lambda functions</a></li>
<li><a href="https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml">Bookmark Serverless Framework's <code>serverless.yml</code> guide</a></li>
<li><a href="https://www.serverless.com/plugins">Search the plugins registry to extend Serverless Framework</a></li>
</ul>
<h1><a name="contributing"></a>Contributing</h1>
<p>We love our contributors! Please read our <a href="https://raw.githubusercontent.com/serverless/serverless/main/CONTRIBUTING.md">Contributing Document</a> to learn how you can start working on the Framework yourself.</p>
<p>Check out our <a href="https://github.com/serverless/serverless/labels/help%20wanted">help wanted</a> or <a href="https://github.com/serverless/serverless/labels/good%20first%20issue">good first issue</a> labels to find issues we want to move forward on with your help.</p>
<h1><a name="community"></a>Community</h1>
<ul>
<li><a href="https://twitter.com/goserverless">Twitter</a></li>
<li><a href="https://serverless.com/slack">Community Slack</a></li>
<li><a href="http://www.meetup.com/serverless/">Serverless Meetups</a></li>
<li><a href="http://stackoverflow.com/questions/tagged/serverless-framework">Stackoverflow</a></li>
<li><a href="https://www.facebook.com/serverless">Facebook</a></li>
<li><a href="mailto:hello@serverless.com">Contact Us</a></li>
</ul>
<h1><a name="licensing"></a>Licensing</h1>
<p>Serverless is licensed under the <a href="https://raw.githubusercontent.com/serverless/serverless/main/LICENSE.txt">MIT License</a>.</p>
<p>All files located in the node_modules and external directories are externally maintained libraries used by this software which have their own licenses; we recommend you read them, as their terms may differ from the terms in the MIT License.</p>
+
+
+ hiteshchoudhary/chai-backend
+ 2023-12-24T01:52:21Z
+ tag:github.com,2023-12-24:/hiteshchoudhary/chai-backend
+
+ <p>A video series on chai aur code youtube channel</p><hr><h1>chai aur backend series</h1>
<p>This is a video series on backend with javascript</p>
<ul>
<li><a href="https://app.eraser.io/workspace/YtPqZ1VogxGy1jzIDkzj?origin=share">Model link</a></li>
</ul>
+
+
\ No newline at end of file
diff --git a/jest-snapshot/daily/index.xml b/jest-snapshot/daily/index.xml
index dbb979d6300..f0cf65f38cb 100644
--- a/jest-snapshot/daily/index.xml
+++ b/jest-snapshot/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Jest Snapshot Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:36Z
+ 2023-12-24T01:35:49Z
Daily Trending of Jest Snapshot in GitHub
\ No newline at end of file
diff --git a/jest-snapshot/weekly/index.xml b/jest-snapshot/weekly/index.xml
new file mode 100644
index 00000000000..20a049f14dc
--- /dev/null
+++ b/jest-snapshot/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Jest Snapshot Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:56Z
+ Weekly Trending of Jest Snapshot in GitHub
+
+
\ No newline at end of file
diff --git a/jflex/daily/index.xml b/jflex/daily/index.xml
index cde0e96c4c8..df6a8e50e0e 100644
--- a/jflex/daily/index.xml
+++ b/jflex/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JFlex Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:40Z
+ 2023-12-24T01:35:50Z
Daily Trending of JFlex in GitHub
\ No newline at end of file
diff --git a/jflex/weekly/index.xml b/jflex/weekly/index.xml
new file mode 100644
index 00000000000..bb30d1480e1
--- /dev/null
+++ b/jflex/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JFlex Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:52:59Z
+ Weekly Trending of JFlex in GitHub
+
+
\ No newline at end of file
diff --git a/jinja/daily/index.xml b/jinja/daily/index.xml
index 687fb3364aa..c90da6fcaac 100644
--- a/jinja/daily/index.xml
+++ b/jinja/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Jinja Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:41Z
+ 2023-12-24T01:35:53Z
Daily Trending of Jinja in GitHub
\ No newline at end of file
diff --git a/jinja/weekly/index.xml b/jinja/weekly/index.xml
new file mode 100644
index 00000000000..367ccb8e6cf
--- /dev/null
+++ b/jinja/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Jinja Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:01Z
+ Weekly Trending of Jinja in GitHub
+
+
\ No newline at end of file
diff --git a/jison-lex/daily/index.xml b/jison-lex/daily/index.xml
index 5401aa29574..00d2a4c992d 100644
--- a/jison-lex/daily/index.xml
+++ b/jison-lex/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Jison Lex Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:40Z
+ 2023-12-24T01:35:52Z
Daily Trending of Jison Lex in GitHub
\ No newline at end of file
diff --git a/jison-lex/weekly/index.xml b/jison-lex/weekly/index.xml
new file mode 100644
index 00000000000..08070328e7c
--- /dev/null
+++ b/jison-lex/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Jison Lex Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:00Z
+ Weekly Trending of Jison Lex in GitHub
+
+
\ No newline at end of file
diff --git a/jison/daily/index.xml b/jison/daily/index.xml
index 231f3fcd038..318b550c13e 100644
--- a/jison/daily/index.xml
+++ b/jison/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Jison Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:42Z
+ 2023-12-24T01:35:51Z
Daily Trending of Jison in GitHub
\ No newline at end of file
diff --git a/jison/weekly/index.xml b/jison/weekly/index.xml
new file mode 100644
index 00000000000..b56a52d70dc
--- /dev/null
+++ b/jison/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Jison Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:02Z
+ Weekly Trending of Jison in GitHub
+
+
\ No newline at end of file
diff --git a/jolie/daily/index.xml b/jolie/daily/index.xml
index 4cffa6cc0eb..2780bf81b57 100644
--- a/jolie/daily/index.xml
+++ b/jolie/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Jolie Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:46Z
+ 2023-12-24T01:35:54Z
Daily Trending of Jolie in GitHub
\ No newline at end of file
diff --git a/jolie/weekly/index.xml b/jolie/weekly/index.xml
new file mode 100644
index 00000000000..d0679c66416
--- /dev/null
+++ b/jolie/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Jolie Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:03Z
+ Weekly Trending of Jolie in GitHub
+
+
\ No newline at end of file
diff --git a/jq/daily/index.xml b/jq/daily/index.xml
index 0b9c3e2c4ac..2b71f2fe2ca 100644
--- a/jq/daily/index.xml
+++ b/jq/daily/index.xml
@@ -1,7 +1,7 @@
GitHub jq Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:45Z
+ 2023-12-24T01:35:54Z
Daily Trending of jq in GitHub
\ No newline at end of file
diff --git a/jq/weekly/index.xml b/jq/weekly/index.xml
new file mode 100644
index 00000000000..30f818e8678
--- /dev/null
+++ b/jq/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub jq Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:04Z
+ Weekly Trending of jq in GitHub
+
+
\ No newline at end of file
diff --git a/json-with-comments/daily/index.xml b/json-with-comments/daily/index.xml
index 8ee656b8b90..8ca9f3b83e4 100644
--- a/json-with-comments/daily/index.xml
+++ b/json-with-comments/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JSON with Comments Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:43Z
+ 2023-12-24T01:35:56Z
Daily Trending of JSON with Comments in GitHub
\ No newline at end of file
diff --git a/json-with-comments/weekly/index.xml b/json-with-comments/weekly/index.xml
new file mode 100644
index 00000000000..4ced7f8fc81
--- /dev/null
+++ b/json-with-comments/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JSON with Comments Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:05Z
+ Weekly Trending of JSON with Comments in GitHub
+
+
\ No newline at end of file
diff --git a/json/daily/index.xml b/json/daily/index.xml
index 9aff464359e..f158da77a24 100644
--- a/json/daily/index.xml
+++ b/json/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JSON Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:44Z
+ 2023-12-24T01:35:55Z
Daily Trending of JSON in GitHub
\ No newline at end of file
diff --git a/json/weekly/index.xml b/json/weekly/index.xml
new file mode 100644
index 00000000000..6dddf9aa45d
--- /dev/null
+++ b/json/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JSON Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:04Z
+ Weekly Trending of JSON in GitHub
+
+
\ No newline at end of file
diff --git a/json5/daily/index.xml b/json5/daily/index.xml
index 3ac7591235f..f7b074a5710 100644
--- a/json5/daily/index.xml
+++ b/json5/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JSON5 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:49Z
+ 2023-12-24T01:35:57Z
Daily Trending of JSON5 in GitHub
\ No newline at end of file
diff --git a/json5/weekly/index.xml b/json5/weekly/index.xml
new file mode 100644
index 00000000000..e306e801d3c
--- /dev/null
+++ b/json5/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JSON5 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:06Z
+ Weekly Trending of JSON5 in GitHub
+
+
\ No newline at end of file
diff --git a/jsoniq/daily/index.xml b/jsoniq/daily/index.xml
index a4511c12305..66df2c92c77 100644
--- a/jsoniq/daily/index.xml
+++ b/jsoniq/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JSONiq Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:47Z
+ 2023-12-24T01:35:58Z
Daily Trending of JSONiq in GitHub
\ No newline at end of file
diff --git a/jsoniq/weekly/index.xml b/jsoniq/weekly/index.xml
new file mode 100644
index 00000000000..4bded38fea6
--- /dev/null
+++ b/jsoniq/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JSONiq Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:09Z
+ Weekly Trending of JSONiq in GitHub
+
+
\ No newline at end of file
diff --git a/jsonld/daily/index.xml b/jsonld/daily/index.xml
index 84c1ecf0f3e..5323cceab51 100644
--- a/jsonld/daily/index.xml
+++ b/jsonld/daily/index.xml
@@ -1,7 +1,7 @@
GitHub JSONLD Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:48Z
+ 2023-12-24T01:35:59Z
Daily Trending of JSONLD in GitHub
\ No newline at end of file
diff --git a/jsonld/weekly/index.xml b/jsonld/weekly/index.xml
new file mode 100644
index 00000000000..d1d8d44a059
--- /dev/null
+++ b/jsonld/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub JSONLD Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:07Z
+ Weekly Trending of JSONLD in GitHub
+
+
\ No newline at end of file
diff --git a/jsonnet/daily/index.xml b/jsonnet/daily/index.xml
index ddec567e104..51061d36789 100644
--- a/jsonnet/daily/index.xml
+++ b/jsonnet/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Jsonnet Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:50Z
+ 2023-12-24T01:35:58Z
Daily Trending of Jsonnet in GitHub
-
- eclipse-eclemma/.eclipsefdn
- 2023-12-23T01:31:50Z
- tag:github.com,2023-12-23:/eclipse-eclemma/.eclipsefdn
-
- <p>Repository to host configurations related to the Eclipse Foundation.</p><hr>
-
\ No newline at end of file
diff --git a/jsonnet/weekly/index.xml b/jsonnet/weekly/index.xml
new file mode 100644
index 00000000000..bd4a5f5c38d
--- /dev/null
+++ b/jsonnet/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Jsonnet Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:08Z
+ Weekly Trending of Jsonnet in GitHub
+
+
\ No newline at end of file
diff --git a/julia/daily/index.xml b/julia/daily/index.xml
index b9263fb8b2c..21033f12a69 100644
--- a/julia/daily/index.xml
+++ b/julia/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Julia Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:54Z
+ 2023-12-24T01:36:02Z
Daily Trending of Julia in GitHub
\ No newline at end of file
diff --git a/julia/weekly/index.xml b/julia/weekly/index.xml
new file mode 100644
index 00000000000..29f489e6732
--- /dev/null
+++ b/julia/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Julia Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:12Z
+ Weekly Trending of Julia in GitHub
+
+
\ No newline at end of file
diff --git a/jupyter-notebook/daily/index.xml b/jupyter-notebook/daily/index.xml
index f94310781a1..b629df4fcf6 100644
--- a/jupyter-notebook/daily/index.xml
+++ b/jupyter-notebook/daily/index.xml
@@ -1,14 +1,28 @@
GitHub Jupyter Notebook Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:57Z
+ 2023-12-24T01:36:05Z
Daily Trending of Jupyter Notebook in GitHub
- facebookresearch/seamless_communication
- 2023-12-23T01:31:57Z
- tag:github.com,2023-12-23:/facebookresearch/seamless_communication
-
- <p>Foundational Models for State-of-the-Art Speech and Text Translation</p><hr><p><img src="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/23-11_SEAMLESS_BlogHero_11.17.jpg" alt=""></p>
<h1>Seamless Intro</h1>
<p>Seamless is a family of AI models that enable more natural and authentic communication across languages. SeamlessM4T is a massive multilingual multimodal machine translation model supporting around 100 languages. SeamlessM4T serves as foundation for SeamlessExpressive, a model that preserves elements of prosody and voice style across languages and SeamlessStreaming, a model supporting simultaneous translation and streaming ASR for around 100 languages. SeamlessExpressive and SeamlessStreaming are combined into Seamless, a unified model featuring multilinguality, real-time and expressive translations.</p>
<h2>Links</h2>
<h3>Demos</h3>
<table>
<thead>
<tr>
<th></th>
<th>SeamlessM4T v2</th>
<th>SeamlessExpressive</th>
<th>SeamlessStreaming</th>
</tr>
</thead>
<tbody>
<tr>
<td>Demo</td>
<td><a href="https://seamless.metademolab.com/m4t?utm_source=github&utm_medium=web&utm_campaign=seamless&utm_content=readme">SeamlessM4T v2 Demo</a></td>
<td><a href="https://seamless.metademolab.com/expressive?utm_source=github&utm_medium=web&utm_campaign=seamless&utm_content=readme">SeamlessExpressive Demo</a></td>
<td></td>
</tr>
<tr>
<td>HuggingFace Space Demo</td>
<td><a href="https://huggingface.co/spaces/facebook/seamless-m4t-v2-large">🤗 SeamlessM4T v2 Space</a></td>
<td><a href="https://huggingface.co/spaces/facebook/seamless-expressive">🤗 SeamlessExpressive Space</a></td>
<td><a href="https://huggingface.co/spaces/facebook/seamless-streaming">🤗 SeamlessStreaming Space</a></td>
</tr>
</tbody>
</table>
<h3>Papers</h3>
<p><a href="https://ai.facebook.com/research/publications/seamless-multilingual-expressive-and-streaming-speech-translation/">Seamless</a></p>
<p><a href="https://ai.meta.com/research/publications/efficient-monotonic-multihead-attention/">EMMA</a></p>
<p><a href="https://ai.meta.com/research/publications/sonar-expressive-zero-shot-expressive-speech-to-speech-translation/">SONAR</a></p>
<h3>Blog</h3>
<p><a href="https://ai.meta.com/research/seamless-communication/">AI at Meta Blog</a></p>
<h2>Tutorial</h2>
<p>An exhaustive <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/Seamless_Tutorial.ipynb">tutorial</a> given at the NeurIPS 2023 - Seamless EXPO, which is a one-stop shop to learn how to use the entire suite of Seamless models. Please feel free to play with the notebook.</p>
<h2>SeamlessM4T</h2>
<p>SeamlessM4T is our foundational all-in-one <strong>M</strong>assively <strong>M</strong>ultilingual and <strong>M</strong>ultimodal <strong>M</strong>achine <strong>T</strong>ranslation model delivering high-quality translation for speech and text in nearly 100 languages.</p>
<p>SeamlessM4T models support the tasks of:</p>
<ul>
<li>Speech-to-speech translation (S2ST)</li>
<li>Speech-to-text translation (S2TT)</li>
<li>Text-to-speech translation (T2ST)</li>
<li>Text-to-text translation (T2TT)</li>
<li>Automatic speech recognition (ASR)</li>
</ul>
<p><span>🌟</span> We are releasing SeamlessM4T v2, an updated version with our novel <em>UnitY2</em> architecture. This new model improves over SeamlessM4T v1 in quality as well as inference latency in speech generation tasks.</p>
<p>To learn more about the collection of SeamlessM4T models, the approach used in each, their language coverage and their performance, visit the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/m4t/README.md">SeamlessM4T README</a> or <a href="https://huggingface.co/facebook/seamless-m4t-v2-large">🤗 Model Card</a>.</p>
<blockquote>
<p>[!NOTE] Seamless M4T is also available in the 🤗 Transformers library. Visit <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/m4t/README.md#transformers-usage">this section</a> for more details.</p>
</blockquote>
<h2>SeamlessExpressive</h2>
<p>SeamlessExpressive is a speech-to-speech translation model that captures certain underexplored aspects of prosody such as speech rate and pauses, while preserving the style of one's voice and high content translation quality.</p>
<p>To learn more about SeamlessExpressive models, visit the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/expressive/README.md">SeamlessExpressive README</a> or <a href="https://huggingface.co/facebook/seamless-expressive">🤗 Model Card</a></p>
<h2>SeamlessStreaming</h2>
<p>SeamlessStreaming is a streaming translation model. The model supports speech as input modality and speech/text as output modalities.</p>
<p>The SeamlessStreaming model supports the following tasks:</p>
<ul>
<li>Speech-to-speech translation (S2ST)</li>
<li>Speech-to-text translation (S2TT)</li>
<li>Automatic speech recognition (ASR)</li>
</ul>
<p>To learn more about SeamlessStreaming models, visit the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/streaming/README.md">SeamlessStreaming README</a> or <a href="https://huggingface.co/facebook/seamless-streaming">🤗 Model Card</a></p>
<h2>Seamless</h2>
<p>The Seamless model is the unified model for expressive streaming speech-to-speech translations.</p>
<h2>What's new</h2>
<ul>
<li>[12/18/2023] We are open-sourcing our Conformer-based <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/#w2v-bert-20-speech-encoder">W2v-BERT 2.0 speech encoder</a> as described in Section 3.2.1 of the <a href="https://arxiv.org/pdf/2312.05187.pdf">paper</a>, which is at the core of our Seamless models.</li>
<li>[12/14/2023] We are releasing the Seamless <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/#tutorial">tutorial</a> given at NeurIPS 2023.</li>
</ul>
<h1>Quick Start</h1>
<h2>Installation</h2>
<blockquote>
<p>[!NOTE] One of the prerequisites is <a href="https://github.com/facebookresearch/fairseq2">fairseq2</a> which has pre-built packages available only for Linux x86-64 and Apple-silicon Mac computers. In addition it has a dependency on <a href="https://github.com/libsndfile/libsndfile">libsndfile</a> which might not be installed on your machine. If you experience any installation issues, please refer to its <a href="https://github.com/facebookresearch/fairseq2">README</a> for further instructions.</p>
</blockquote>
<pre><code>pip install .
</code></pre>
<blockquote>
<p>[!NOTE] Transcribing inference audio for computing metric uses <a href="https://github.com/openai/whisper#setup">Whisper</a>, which is automatically installed. Whisper in turn requires the command-line tool <a href="https://ffmpeg.org/"><code>ffmpeg</code></a> to be installed on your system, which is available from most package managers.</p>
</blockquote>
<h2>Running inference</h2>
<h3>SeamlessM4T Inference</h3>
<p>Here’s an example of using the CLI from the root directory to run inference.</p>
<p>S2ST task:</p>
<pre><code class="language-bash">m4t_predict <path_to_input_audio> --task s2st --tgt_lang <tgt_lang> --output_path <path_to_save_audio>
</code></pre>
<p>T2TT task:</p>
<pre><code class="language-bash">m4t_predict <input_text> --task t2tt --tgt_lang <tgt_lang> --src_lang <src_lang>
</code></pre>
<p>Please refer to the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/cli/m4t/predict">inference README</a> for detailed instruction on how to run inference and the list of supported languages on the source, target sides for speech, text modalities.</p>
<p>For running S2TT/ASR natively (without Python) using GGML, please refer to <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/#unitycpp">the unity.cpp section</a>.</p>
<h3>SeamlessExpressive Inference</h3>
<blockquote>
<p>[!NOTE] Please check the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/#seamlessexpressive-models">section</a> on how to download the model.</p>
</blockquote>
<p>Here’s an example of using the CLI from the root directory to run inference.</p>
<pre><code class="language-bash">expressivity_predict <path_to_input_audio> --tgt_lang <tgt_lang> --model_name seamless_expressivity --vocoder_name vocoder_pretssel --output_path <path_to_save_audio>
</code></pre>
<h3>SeamlessStreaming and Seamless Inference</h3>
<p><a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/cli/streaming">Streaming Evaluation README</a> has detailed instructions for running evaluations for the SeamlessStreaming and Seamless models. The CLI has an <code>--no-scoring</code> option that can be used to skip the scoring part and just run inference.</p>
<h2>Running SeamlessStreaming Demo</h2>
<p>You can duplicate the <a href="https://huggingface.co/spaces/facebook/seamless-streaming?duplicate=true">SeamlessStreaming HF space</a> to run the streaming demo.</p>
<p>You can also run the demo locally, by cloning the space from <a href="https://huggingface.co/spaces/facebook/seamless-streaming/tree/main">here</a>. See the <a href="https://huggingface.co/spaces/facebook/seamless-streaming/blob/main/README.md">README</a> of the SeamlessStreaming HF repo for more details on installation.</p>
<h2>Running SeamlessM4T & SeamlessExpressive <a href="https://github.com/gradio-app/gradio">Gradio</a> demos locally</h2>
<p>To launch the same demo Space we host on Hugging Face locally:</p>
<pre><code class="language-bash">cd demo
pip install -r requirements.txt
python app.py
</code></pre>
<h1>Resources and usage</h1>
<h2>Model</h2>
<h3>SeamlessM4T models</h3>
<table>
<thead>
<tr>
<th>Model Name</th>
<th>#params</th>
<th>checkpoint</th>
<th>metrics</th>
</tr>
</thead>
<tbody>
<tr>
<td>SeamlessM4T-Large v2</td>
<td>2.3B</td>
<td><a href="https://huggingface.co/facebook/seamless-m4t-v2-large">🤗 Model card</a> - <a href="https://huggingface.co/facebook/seamless-m4t-v2-large/resolve/main/seamlessM4T_v2_large.pt">checkpoint</a></td>
<td><a href="https://dl.fbaipublicfiles.com/seamless/metrics/seamlessM4T_large_v2.zip">metrics</a></td>
</tr>
<tr>
<td>SeamlessM4T-Large (v1)</td>
<td>2.3B</td>
<td><a href="https://huggingface.co/facebook/seamless-m4t-large">🤗 Model card</a> - <a href="https://huggingface.co/facebook/seamless-m4t-large/resolve/main/multitask_unity_large.pt">checkpoint</a></td>
<td><a href="https://dl.fbaipublicfiles.com/seamless/metrics/seamlessM4T_large.zip">metrics</a></td>
</tr>
<tr>
<td>SeamlessM4T-Medium (v1)</td>
<td>1.2B</td>
<td><a href="https://huggingface.co/facebook/seamless-m4t-medium">🤗 Model card</a> - <a href="https://huggingface.co/facebook/seamless-m4t-medium/resolve/main/multitask_unity_medium.pt">checkpoint</a></td>
<td><a href="https://dl.fbaipublicfiles.com/seamless/metrics/seamlessM4T_medium.zip">metrics</a></td>
</tr>
</tbody>
</table>
<h3>SeamlessExpressive models</h3>
<p><a href="https://huggingface.co/facebook/seamless-expressive">🤗 Model card</a></p>
<p>To access and download SeamlessExpressive, please request the model artifacts through <a href="https://ai.meta.com/resources/models-and-libraries/seamless-downloads/">this request form</a>. Upon approval, you will then receive an email with download links to each model artifact.</p>
<p>Please note that SeamlessExpressive is made available under its own <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/SEAMLESS_LICENSE">License</a> and <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/ACCEPTABLE_USE_POLICY">Acceptable Use Policy</a>.</p>
<h3>SeamlessStreaming models</h3>
<table>
<thead>
<tr>
<th>Model Name</th>
<th>#params</th>
<th>checkpoint</th>
<th>metrics</th>
</tr>
</thead>
<tbody>
<tr>
<td>SeamlessStreaming</td>
<td>2.5B</td>
<td><a href="https://huggingface.co/facebook/seamless-streaming">🤗 Model card</a> - <a href="https://huggingface.co/facebook/seamless-streaming/resolve/main/seamless_streaming_monotonic_decoder.pt">monotonic decoder checkpoint</a> - <a href="https://huggingface.co/facebook/seamless-streaming/resolve/main/seamless_streaming_unity.pt">streaming UnitY2 checkpoint</a></td>
<td><a href="https://dl.fbaipublicfiles.com/seamless/metrics/streaming/seamless_streaming.zip">metrics</a></td>
</tr>
</tbody>
</table>
<h3>Seamless models</h3>
<p>Seamless model is simply the SeamlessStreaming model with the non-expressive <code>vocoder_v2</code> swapped out with the expressive <code>vocoder_pretssel</code>. Please check out above <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/#seamlessexpressive-models">section</a> on how to acquire <code>vocoder_pretssel</code> checkpoint.</p>
<h3>W2v-BERT 2.0 speech encoder</h3>
<table>
<thead>
<tr>
<th>Model Name</th>
<th>#params</th>
<th>checkpoint</th>
</tr>
</thead>
<tbody>
<tr>
<td>W2v-BERT 2.0</td>
<td>600M</td>
<td><a href="https://huggingface.co/facebook/conformer-shaw">🤗 Model card</a> - <a href="https://huggingface.co/facebook/conformer-shaw/resolve/main/conformer_shaw.pt">checkpoint</a></td>
</tr>
</tbody>
</table>
<p>Here's how you should do a foward pass through the speech encoder:</p>
<pre><code class="language-python">import torch
from fairseq2.data.audio import AudioDecoder, WaveformToFbankConverter
from fairseq2.memory import MemoryBlock
from fairseq2.nn.padding import get_seqs_and_padding_mask
from pathlib import Path
from seamless_communication.models.conformer_shaw import load_conformer_shaw_model
audio_wav_path, device, dtype = ...
audio_decoder = AudioDecoder(dtype=torch.float32, device=device)
fbank_converter = WaveformToFbankConverter(
num_mel_bins=80,
waveform_scale=2**15,
channel_last=True,
standardize=True,
device=device,
dtype=dtype,
)
collater = Collater(pad_value=1)
model = load_conformer_shaw_model("conformer_shaw", device=device, dtype=dtype)
model.eval()
with Path(audio_wav_path).open("rb") as fb:
block = MemoryBlock(fb.read())
decoded_audio = audio_decoder(block)
src = collater(fbank_converter(decoded_audio))["fbank"]
seqs, padding_mask = get_seqs_and_padding_mask(src)
with torch.inference_mode():
seqs, padding_mask = model.encoder_frontend(seqs, padding_mask)
seqs, padding_mask = model.encoder(seqs, padding_mask)
</code></pre>
<h2>Evaluation</h2>
<h3>SeamlessM4T Evaluation</h3>
<p>To reproduce our results, or to evaluate using the same metrics over your own test sets, please check out the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/cli/m4t/evaluate">README here</a>.</p>
<h3>SeamlessExpressive Evaluation</h3>
<p>Below is the script for efficient batched evaluation.</p>
<pre><code class="language-bash">export MODEL_DIR="/path/to/SeamlessExpressive/model"
export TEST_SET_TSV="input.tsv" # Your dataset in a TSV file, with headers "id", "audio"
export TGT_LANG="spa" # Target language to translate into, options including "fra", "deu", "eng" ("cmn" and "ita" are experimental)
export OUTPUT_DIR="tmp/" # Output directory for generated text/unit/waveform
export TGT_TEXT_COL="tgt_text" # The column in your ${TEST_SET_TSV} for reference target text to calcuate BLEU score. You can skip this argument.
export DFACTOR="1.0" # Duration factor for model inference to tune predicted duration (preddur=DFACTOR*preddur) per each position which affects output speech rate. Greater value means slower speech rate (default to 1.0). See expressive evaluation README for details on duration factor we used.
expressivity_evaluate ${TEST_SET_TSV} \
--gated-model-dir ${MODEL_DIR} --task s2st --tgt_lang ${TGT_LANG} \
--audio_root_dir "" --output_path ${OUTPUT_DIR} --ref_field ${TGT_TEXT_COL} \
--model_name seamless_expressivity --vocoder_name vocoder_pretssel \
--text_unk_blocking True --duration_factor ${DFACTOR}
</code></pre>
<p>Please check out this <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/expressive/README.md#automatic-evaluation">README section</a></p>
<h3>SeamlessStreaming and Seamless Evaluation</h3>
<p><a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/cli/streaming">Streaming Evaluation README</a> has detailed instructions for running evaluations on the SeamlessStreaming and Seamless models.</p>
<h2>Unity.cpp</h2>
<p>To enable Seamless Communication Everywhere, we implemented unity.cpp so users could run SeamlessM4T models in GGML - a C tensor library allowing easier integration on verbose platforms.</p>
<p>To transcribe/translte a given audio,</p>
<pre><code>./ggml/bin/unity --model seamlessM4T_medium.ggml input.wav
</code></pre>
<p>For details of build and more usage please check out <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/ggml">unity.cpp</a></p>
<h2>Expressive Datasets</h2>
<p>We created two expressive speech-to-speech translation datasets, mExpresso and mDRAL, between English and five other languages -- French, German, Italian, Mandarin and Spanish. We currently open source the speech-to-text of mExpresso for out-of-English directions, and we will open source the remaining part of the datasets soon. For details, please check out <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/expressive/README.md#benchmark-datasets">README</a></p>
<h3>SeamlessAlignExpressive</h3>
<p>We’re introducing the first expressive speech alignment procedure. Starting with raw data, the expressive alignment procedure automatically discovers pairs of audio segments sharing not only the same meaning, but the same overall expressivity. To showcase this procedure, we are making metadata available to create a benchmarking dataset called SeamlessAlignExpressive, that can be used to validate the quality of our alignment method. SeamlessAlignExpressive is the first large-scale (11k+ hours) collection of multilingual audio alignments for expressive translation. More details can be found on the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/expressive/seamless_align_expressive_README.md">SeamlessAlignExpressive README</a>.</p>
<h2>Converting raw audio to units</h2>
<p>Please check out the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/cli/m4t/audio_to_units">README here</a>. Note that SeamlessM4T v1 model uses reduced units and other models use non-reduced units.</p>
<h1>Libraries</h1>
<p>Seamless Communication depends on 4 libraries developed by Meta.</p>
<h2><a href="https://github.com/facebookresearch/fairseq2">fairseq2</a></h2>
<p>fairseq2 is our next-generation open-source library of sequence modeling components that provides researchers and developers with building blocks for machine translation, language modeling, and other sequence generation tasks. All SeamlessM4T models in this repository are powered by fairseq2.</p>
<h2><a href="https://github.com/facebookresearch/SONAR">SONAR and BLASER 2.0</a></h2>
<p>SONAR, Sentence-level multimOdal and laNguage-Agnostic Representations is a new multilingual and -modal sentence embedding space which outperforms existing sentence embeddings such as LASER3 and LabSE on the xsim and xsim++ multilingual similarity search tasks. SONAR provides text and speech encoders for many languages. SeamlessAlign was mined based on SONAR embeddings.</p>
<p>BLASER 2.0 is our latest model-based evaluation metric for multimodal translation. It is an extension of BLASER, supporting both speech and text. It operates directly on the source signal, and as such, does not require any intermediate ASR system like ASR-BLEU. As in the first version, BLASER 2.0 leverages the similarity between input and output sentence embeddings. SONAR is the underlying embedding space for BLASER 2.0. Scripts to run evaluation with BLASER 2.0 can be found in the <a href="https://github.com/facebookresearch/SONAR">SONAR repo</a>.</p>
<h2><a href="https://github.com/facebookresearch/stopes">stopes</a></h2>
<p>As part of the seamless communication project, we've extended the stopes library. Version 1 provided a text-to-text mining tool to build training dataset for translation models. Version 2 has been extended thanks to SONAR, to support tasks around training large speech translation models. In particular, we provide tools to read/write the fairseq audiozip datasets and a new mining pipeline that can do speech-to-speech, text-to-speech, speech-to-text and text-to-text mining, all based on the new SONAR embedding space.</p>
<h2><a href="https://github.com/facebookresearch/SimulEval">SimulEval</a></h2>
<p>SimulEval is a library used for evaluating simulaneous translation models. SimulEval also provides a backend for generation using partial/incremental inputs with flexible/extensible states, which is used to implement streaming inference. Users define agents which implement SimulEval's interface, which can be connected together in a pipeline. You can find agents implemented for SeamlessStreaming <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/streaming/agents">here</a>.</p>
<h2>[Legacy] SeamlessM4T v1 instructions</h2>
<h4>Finetuning SeamlessM4T v1 models</h4>
<p>Please check out the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/cli/m4t/finetune">README here</a>.</p>
<h4>On-device models</h4>
<p>Apart from Seamless-M4T large (2.3B) and medium (1.2B) models, we are also releasing a small model (281M) targeted for on-device inference. To learn more about the usage and model details check out the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/m4t/on_device_README.md">README here</a>.</p>
<h4>SeamlessAlign mined dataset</h4>
<p>We open-source the metadata to SeamlessAlign, the largest open dataset for multimodal translation, totaling 270k+ hours of aligned Speech and Text data. The dataset can be rebuilt by the community based on the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/m4t/seamless_align_README.md">SeamlessAlign readme</a>.</p>
<h1>Citation</h1>
<p>If you use Seamless in your work or any models/datasets/artifacts published in Seamless, please cite :</p>
<pre><code class="language-bibtex">@inproceedings{seamless2023,
title="Seamless: Multilingual Expressive and Streaming Speech Translation",
author="{Seamless Communication}, Lo{\"i}c Barrault, Yu-An Chung, Mariano Coria Meglioli, David Dale, Ning Dong, Mark Duppenthaler, Paul-Ambroise Duquenne, Brian Ellis, Hady Elsahar, Justin Haaheim, John Hoffman, Min-Jae Hwang, Hirofumi Inaguma, Christopher Klaiber, Ilia Kulikov, Pengwei Li, Daniel Licht, Jean Maillard, Ruslan Mavlyutov, Alice Rakotoarison, Kaushik Ram Sadagopan, Abinesh Ramakrishnan, Tuan Tran, Guillaume Wenzek, Yilin Yang, Ethan Ye, Ivan Evtimov, Pierre Fernandez, Cynthia Gao, Prangthip Hansanti, Elahe Kalbassi, Amanda Kallet, Artyom Kozhevnikov, Gabriel Mejia, Robin San Roman, Christophe Touret, Corinne Wong, Carleigh Wood, Bokai Yu, Pierre Andrews, Can Balioglu, Peng-Jen Chen, Marta R. Costa-juss{\`a}, Maha Elbayad, Hongyu Gong, Francisco Guzm{\'a}n, Kevin Heffernan, Somya Jain, Justine Kao, Ann Lee, Xutai Ma, Alex Mourachko, Benjamin Peloquin, Juan Pino, Sravya Popuri, Christophe Ropers, Safiyyah Saleem, Holger Schwenk, Anna Sun, Paden Tomasello, Changhan Wang, Jeff Wang, Skyler Wang, Mary Williamson",
journal={ArXiv},
year={2023}
}
</code></pre>
<h1>License</h1>
<p>We have three license categories.</p>
<p>The following non-generative components are MIT licensed as found in <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/MIT_LICENSE">MIT_LICENSE</a>:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/#w2v-bert-20-speech-encoder">W2v-BERT 2.0 speech encoder</a></li>
<li>Code</li>
<li>Text only part of the mExpresso dataset found in the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/expressive/README.md">SeamlessExpressive README</a>.</li>
<li>UnitY2 forced alignment extractor found in the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/docs/m4t/unity2_aligner_README.md">UnitY2 Aligner README</a>.</li>
<li>Speech toxicity tool with the etox dataset found in the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/src/seamless_communication/cli/toxicity">Toxicity README</a>.</li>
</ul>
<p>The following models are CC-BY-NC 4.0 licensed as found in the <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/LICENSE">LICENSE</a>:</p>
<ul>
<li>SeamlessM4T models (v1 and v2).</li>
<li>SeamlessStreaming models.</li>
</ul>
<p>The following models are Seamless licensed as found in <a href="https://raw.githubusercontent.com/facebookresearch/seamless_communication/main/SEAMLESS_LICENSE">SEAMLESS_LICENSE</a>:</p>
<ul>
<li>Seamless models.</li>
<li>SeamlessExpressive models.</li>
</ul>
+ predibase/llm_distillation_playbook
+ 2023-12-24T01:36:05Z
+ tag:github.com,2023-12-24:/predibase/llm_distillation_playbook
+
+ <p>Practical best practices for distilling large language models.</p><hr><h1>LLM Distillation Playbook</h1>
<p><strong>Justin Zhao<sup>†</sup>, Wael Abid<sup>†</sup></strong></p>
<p>† Predibase, MLX team</p>
<h2>Table of Contents</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#llm-distillation-playbook">LLM Distillation Playbook</a>
<ul>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#table-of-contents">Table of Contents</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#who-is-this-document-for">Who is this document for?</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#why-a-distillation-playbook">Why a distillation playbook?</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#commmitment-to-open-source">Commmitment to open source</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#key-concepts">Key Concepts</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#best-practices">Best practices</a>
<ul>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#1-understand-the-limitations-of-smaller-models">1. Understand the limitations of smaller models.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#2-build-good-logging-infrastructure">2. Build good logging infrastructure.</a>
<ul>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#bootstrap-datasets-with-real-logs">Bootstrap datasets with real logs.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#bootstrap-datasets-with-synthetic-data">Bootstrap datasets with synthetic data.</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#3-define-clear-evaluation-criteria">3. Define clear evaluation criteria.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#4-maximize-the-quality-of-your-teacher-model">4. Maximize the quality of your teacher model.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#5-maximize-the-quality-of-your-training-data">5. Maximize the quality of your training data.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#6-the-best-datasets-are-diverse-and-balanced">6. The best datasets are diverse and balanced.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#7-start-simple-and-small">7. Start simple and small.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#8-assess-the-marginal-utility-of-having-more-data">8. Assess the marginal utility of having more data.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#9-consider-how-you-want-to-serve-your-student">9. Consider how you want to serve your student.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#10-experiment-broadly-one-parameter-at-a-time">10. Experiment broadly, one parameter at a time.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#11-look-at-the-models-individual-mistakes">11. Look at the model's individual mistakes.</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#12-actually-deploy-and-monitor-your-models-in-production">12. Actually deploy and monitor your models in production.</a>
<ul>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#options-for-model-deployment">Options for model deployment</a></li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#infrastructure-safeguards">Infrastructure safeguards</a></li>
</ul> </li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/#contributing">Contributing</a></li>
</ul> </li>
</ul>
<h2>Who is this document for?</h2>
<p>This document is for engineers and ML practitioners interested in <strong>LLM distillation</strong> for production applications. We assume familiarity with deep learning fundamentals and large language models (LLMs). While the advice in this guide is adaptable to other settings like academic research, our focus is on how to most effectively distill LLMs for production applications.</p>
<h2>Why a distillation playbook?</h2>
<p>Almost every organization we’ve worked with has built at least one novel internal application using LLMs; one larger company we spoke to had built 70 prototypes in a week.</p>
<p>Everyone is building their prototype using large language models, however as LLMs become increasingly capable and integral to various applications, the need for more efficient, smaller counterparts has never been more pronounced.</p>
<p>This shift is driven by the compelling performance of LLMs, juxtaposed with the significant costs, resource demands, and slower operational speeds of large models. In response, distilling these models into more efficient, smaller versions presents a solution that balances capability with cost-effectiveness and speed.</p>
<p>Despite significant interest in model distillation, we find there is still an astonishing amount of toil and guesswork involved in actually getting distilled models to work well in practice. Anecdotes and snippets of advice are spread across arxiv, huggingface, discord, substack, and social media, but the systemization and centralization of these recommendations remains to be seen.</p>
<p>The advice in this document draws from our experience distilling language models at Google and Predibase, combined with any SLM/LLM research we could find on the topic. We are hopeful that these strategies for the efficient refinement of LLMs provide practitioners and enthusiasts with ideas that are practical, grounded in academic research, and helpful for the growing development and utilization of open source language models.</p>
<p>This is a living document. We anticipate making periodic improvements, both small and large. If you’d like to be notified, please watch our repository (see <a href="https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository">instructions</a>).</p>
<h2>Commmitment to open source</h2>
<p>At Predibase, we believe that the future is fine-tuned, specialized, and <strong>open source</strong> LLMs. Open source is in the DNA of the company. As a company, we maintain:</p>
<ul>
<li><a href="https://github.com/ludwig-ai/ludwig">Ludwig</a>: Low-code framework for building custom LLMs, neural networks, and other AI models.</li>
<li><a href="https://github.com/predibase/lorax">LoRAX</a>: Multi-LoRA inference server that scales to 1000s of fine-tuned LLMs.</li>
</ul>
<details>
<summary><em>[More about Predibase]</em></summary>
<p>Predibase is a <a href="https://predibase.com">managed platform</a> that's built on top of open source. If you are interested in a managed solution for fine-tuning and deploying LMs, you can sign up for a free trial <a href="https://predibase.com">here</a>.</p>
</details>
<h2>Key Concepts</h2>
<p>Before we delve into the best practices for distilling large language models (LLMs), let's define terminology commonly used for model distillation and its applications.</p>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/model_distillation_overview.jpeg" alt="img"></p>
<p align="center"><i>Illustration of model distillation. <a href="https://magazine.sebastianraschka.com/p/research-papers-in-november-2023">Image source</a>.</i></p>
<p><strong>Model distillation</strong> enables the refinement and compression of large language models into more manageable, cost-effective versions without a significant loss in performance.</p>
<p><strong>Large Language Models (LLMs)</strong>: Advanced AI models (see <a href="https://github.com/Hannibal046/Awesome-LLM">full list</a>) trained on vast amounts of text data. They seem to have a deep understanding of language, and can be trained to follow instructions or other tasks involving text.</p>
<p><strong>Teacher Model</strong>: A capable larger model that we aim to transfer to the smaller model.</p>
<p><strong>Student Model</strong>: The smaller model that the teacher model is distilled into.</p>
<h2>Best practices</h2>
<h3>1. Understand the limitations of smaller models.</h3>
<p><em><strong>Summary</strong>: Model distillation is an empirical science and is not guaranteed to work well in all cases. The effectiveness of model distillation depends on the task and data.</em></p>
<p>There is substantial and growing evidence that smaller models outperform zero-shot and few-shot GPT-4 when fine-tuned on golden labels (<a href="https://predibase.com/blog/how-to-fine-tune-llama-70b-for-structured-json-generation-with-ludwig">1</a>, <a href="https://www.anyscale.com/blog/fine-tuning-llms-lora-or-full-parameter-an-in-depth-analysis-with-llama-2">2</a>). However, due to their limited size, smaller models might not capture the full depth and nuance of language as effectively as their larger counterparts.</p>
<p>In a canonical model distillation set up where the student model is trained on the raw outputs of the teacher model (also called imitation learning), it is more often the case that the student model will, at best, match the teacher model's quality.</p>
<p>In <a href="https://arxiv.org/abs/2305.15717">The False Promise of Imitating Proprietary LLMs</a>, researchers found that for certain tasks, smaller student models deceptively learned to mimic their teachers' style while falling short on factual correctness.</p>
<p align="center"> <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/spectrum_nlp_tasks.png"> </p>
<p align="center"><i>Spectrum of NLP tasks. The broader the domain and higher required precision, the more difficult the problem, and the less likely distillation will "just work".</i></p>
<p></p>
<p>In truth, the effectiveness of model distillation depends largely on the specific task and data. Students are likely more disadvantaged than their larger pre-trained teachers when it comes to tasks that span broader domains or require substantial reasoning abilities. Conversely, for tasks that are straightforward and narrowly defined, out-of-the-box imitation learning may be entirely adequate for attaining competitive student models.</p>
<details>
<summary><em>[Case study: Jigsaw toxic comment classification]</em></summary>
<p>To demonstrate and contextualize the best practices of LLM distillation that we will explore in the subsequent sections of this post, we use the <a href="https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge">Jigsaw toxic comment classification dataset</a>.</p>
<p>The <a href="https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge">Jigsaw dataset</a> was created to train models to classify offensive comments. It consists of 160K real comments from the internet and has a mix of offensive and non-offensive examples.</p>
<p>The original dataset contains fine-grained labels for each comment: <code>toxic</code>, <code>severe_toxic</code>, <code>obscene</code>, <code>threat</code>, <code>insult</code>, and <code>identity_hate</code>. We collapse all the columns into one column <code>is_bad</code> to obtain a binary classification dataset.[^1]</p>
<p>[^1]: While there are established state-of-the-art (SOTA) text classification models <a href="https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge/leaderboard">specifically designed for the Jigsaw dataset</a>, our intention here is not to surpass these benchmarks. Rather, we utilize this dataset as an illustrative tool to demonstrate and contextualize the best practices of LLM distillation.</p>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/zs_vs_finetuned.png" alt="img"></p>
<p align="center"><i>Model accuracy on a balanced test set comparing zero-shot performance of GPT-* models with OSS LLMs fine-tuned using a random subset of 10K examples.</i></p>
</details>
<h3>2. Build good logging infrastructure.</h3>
<p><em><strong>Summary</strong>: Have basic logging infrastructure for your LLMs in production. If logs are limited due to low traffic, PII, or other constraints, synthetic data generation may be a viable option for bootstrapping a dataset for fine-tuning.</em></p>
<p>If you haven't already implemented logging in your application, you really should. Tokens are expensive and <a href="https://www.quora.com/Who-should-get-credit-for-the-quote-data-is-the-new-oil">data is oil</a>.</p>
<p align="center"> <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/logging.png"> </p>
<p align="center"><i>Example of basic logging infrastructure with a Model-as-a-Service (MaaS) serverless teacher model. Stream requests and responses from your MaaS endpoint to a storage solution like Amazon S3 or Snowflake.</i></p>
<p></p>
<h4>Bootstrap datasets with real logs.</h4>
<p>Collecting logs from production traffic that's sent to your teacher models is a great, lean option for bootstrapping a dataset for fine-tuning.[^2]</p>
<p>[^2]: Always review the terms of service and usage policies of LLM providers when logging their outputs. While OpenAI permits the use of their models for academic or exploratory work, it's advisable to seek clarification for specific use cases and production settings.</p>
<p>See a lightweight example of asynchronously logging requests and responses to S3 in a streamlit app <a href="https://github.com/predibase/llm_distillation_playbook/tree/main/app">here</a>.</p>
<h4>Bootstrap datasets with synthetic data.</h4>
<p>For applications with limited data either due to low traffic, PII, or other constraints, <strong>synthetic data generation</strong> may be a viable option for fine-tuning data.</p>
<p align="center"> <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/synthetic_data_start.png"> </p>
<p align="center"><i>Bootstrap your dataset with synthetic data. The biggest challenge with synthetic data is to ensure that the examples produced are varied and non-repetitive.</i></p>
<p></p>
<p>Papers like <a href="https://arxiv.org/abs/2212.10560">Self-Instruct</a>, <a href="https://arxiv.org/pdf/2310.14558.pdf">Alpacare</a> or Microsoft's <a href="https://arxiv.org/pdf/2306.11644.pdf">phi-1</a>/<a href="https://arxiv.org/pdf/2309.05463.pdf">phi-1.5</a>/<a href="https://www.microsoft.com/en-us/research/blog/phi-2-the-surprising-power-of-small-language-models/">phi-2</a> show how synthetic datasets, generated through creative variations of seed queries to GPT models, can be used to fine-tune compelling smaller models.</p>
<blockquote>
<p>"We speculate that the creation of synthetic datasets will become, in the near future, an important technical skill and a central topic of research in AI." ~ <a href="https://arxiv.org/pdf/2309.05463.pdf">phi 1.5 technical report</a></p>
</blockquote>
<h3>3. Define clear evaluation criteria.</h3>
<p><em><strong>Summary:</strong> Effective evaluation of distilled models requires clearly defined criteria that align with your specific application's needs. The choice of evaluation metrics should reflect the nature of the problem and the desired outcomes of the model.</em></p>
<p>This is a well-known best practice for machine learning, but it's worth reiterating because it's so important.</p>
<p><strong>Tailoring evaluation to the application</strong>: Effective evaluation requires clearly defined criteria that align with your specific application's needs. For instance, LLMs for JSON generation tasks might focus on checking for schema adherence, extraction tasks might focus on accuracy or recall, and other language generation tasks might use BLEURT, ROUGE, or perplexity. The key is to select metrics that best represent the success of the model in its intended environment.</p>
<p><strong>The emergence of LLMs as judges</strong>: There's a growing trend of using LLMs themselves to assess model outputs, especially in scenarios where traditional metrics might fall short or where manual evaluation by human raters is too expensive. This approach can be compelling but requires <a href="https://arxiv.org/abs/2306.05685">careful consideration</a> to account for potential LLM biases.</p>
<p><strong>Consistency and diversity in test sets</strong>: Establishing clear test sets is critical. These sets should be diverse enough to cover various aspects of model performance yet consistent enough to allow for reliable tracking over time. Avoid changing your test sets frequently, as consistency is key when comparing performance across different models and iterations.</p>
<details>
<summary><em>[Case study: Jigsaw toxic comment classification]</em></summary>
<p>Sampling a test set randomly from the <a href="https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge">Jigsaw dataset</a> gives us a dataset with the distribution of: 90% non-toxic, 10% toxic.</p>
<p>This distribution might match what we expect our hypothetical application to receive (mostly non-toxic comments), we want to be sure that any model we put in production is equally good at detecting both offensive and non-offensive comments.</p>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/jigsaw_test_sets.png" alt="img"></p>
<p>Let's formalize 2 different test sets:</p>
<ol>
<li><code>test-indist</code>: An in-distribution test set with 90% non-bad examples and 10% toxic examples, drawn from the original test set.</li>
<li><code>test-balanced</code>: An explicitly balanced test set with 50% non-toxic and 50% toxic examples, drawn from the original test set.</li>
</ol>
<p>By measuring models on both of these test sets simultaneously, we can track how well a candidate model classifies comments overall, as well as how well these classifications would fare in a traffic-realisitic setting.</p>
</details>
<h3>4. Maximize the quality of your teacher model.</h3>
<p><em><strong>Summary:</strong> The quality of your teacher model's outputs serves as an upper limit for the performance of your distilled student model. Invest in maximizing the quality of your teacher model's performance as much as possible.</em></p>
<p align="center"> <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/student_and_teacher.png"> </p>
<p align="center"><i>Get your teacher model as good as it can be before feeding its outputs for the student to imitate.</i></p>
<p></p>
<p><strong>Choose a good teacher:</strong> The choice of the teacher model is a critical first step. Opt for a model that demonstrates the highest accuracy and understanding of your task. GPT-4 is generally great, but it's worth checking to see if there's a better foundation model out there for your use case that may be better specialized to your task.</p>
<table>
<thead>
<tr>
<th>Metric</th>
<th align="center">zephyr-7b-alpha</th>
<th align="center">Mixtral-8x7B-Instruct-v0.1</th>
<th>Llama-2-70b-hf</th>
<th>Yi-34B-200K</th>
<th>CodeLlama-34b-Instruct-hf</th>
<th>GPT-3.5</th>
<th>GPT-4</th>
<th>Gemini</th>
</tr>
</thead>
<tbody>
<tr>
<td>Overall average</td>
<td align="center">59.5</td>
<td align="center">72.6</td>
<td>67.9</td>
<td>70.8</td>
<td>57.3</td>
<td>70.9</td>
<td>88.3</td>
<td>90.7</td>
</tr>
<tr>
<td>ARC</td>
<td align="center">61.0</td>
<td align="center">70.2</td>
<td>67.3</td>
<td>65.4</td>
<td>54.3</td>
<td>82.9</td>
<td>94.9</td>
<td>unreported</td>
</tr>
<tr>
<td>HellaSwag</td>
<td align="center">84.0</td>
<td align="center">87.6</td>
<td>87.3</td>
<td>85.6</td>
<td>76.9</td>
<td>79.4</td>
<td>92.4</td>
<td>87.8</td>
</tr>
<tr>
<td>MMLU</td>
<td align="center">61.4</td>
<td align="center">71.2</td>
<td>69.8</td>
<td>76.1</td>
<td>55.5</td>
<td>67.4</td>
<td>83.7</td>
<td>90.0</td>
</tr>
<tr>
<td>TruthfulQA</td>
<td align="center">57.9</td>
<td align="center">64.6</td>
<td>44.9</td>
<td>53.6</td>
<td>44.4</td>
<td>61.4</td>
<td>79.7</td>
<td>unreported</td>
</tr>
<tr>
<td>Winogrande</td>
<td align="center">78.6</td>
<td align="center">81.4</td>
<td>83.7</td>
<td>82.6</td>
<td>74.6</td>
<td>65.8</td>
<td>87.1</td>
<td>unreported</td>
</tr>
<tr>
<td>GSM8K</td>
<td align="center">14.0</td>
<td align="center">60.7</td>
<td>54.1</td>
<td>61.6</td>
<td>38.0</td>
<td>68.2</td>
<td>92.1</td>
<td>94.4</td>
</tr>
</tbody>
</table>
<p align="center"> <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/radar_teachers.png"> </p>
<p align="center"><i>Sources: <a href="https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard">Open LLM Leaderboard</a>, <a href="https://the-decoder.com/gpt-4-crushes-other-llms-according-to-new-benchmark-suite/">GPT-4 "crushes" other LLMs according to new benchmark suite</a>, <a href="https://storage.googleapis.com/deepmind-media/gemini/gemini_1_report.pdf">Gemini: A Family of Highly Capable Multimodal Models</a></i></p>
<p></p>
<p><strong>Choose a good prompt:</strong> Iterating on your prompts and prompt parameters can significantly enhance the quality of the teacher model's outputs. Thoughtfully crafted prompts often lead to more accurate and contextually relevant responses, which in turn, provide better training material for the student model.</p>
<details>
<summary><em>[Case study: Jigsaw toxic comment classification]</em></summary>
<p>Varying the LLMs, prompts, and temperature can a significant effect on teacher model accuracy.</p>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/jigsaw_prompt_engineering_temperature.png" alt="img"></p>
<p>The best temperature for this dataset appears to be 0.0. This makes sense because a higher temperature boosts the creativity of the outputs of the LLM, which likely isn't useful in a binary classification setting.</p>
<p>We highlight accuracy on <code>test-balanced</code> with two different prompts:</p>
<p>Simple prompt:</p>
<pre><code>Given the input text below, please classify whether it is toxic. Provide your classification in a JSON format with the key 'is_bad'. If the comment is indeed toxic, set is_bad=1, otherwise set is_bad=0.
Input text: '%s'
Output:
</code></pre>
<p>Chain-of-Thought prompt:</p>
<pre><code>For a well-intentioned content moderation app, we want to flag a comment if it may contain toxic, insulting, obscene, or threatening language. Given the input text, please classify its toxicity. Please format your response in the form of a python dictionary with the following keys:
1. 'is_bad': If the comment is indeed toxic, use set is_bad=1, otherwise set is_bad=0.
2. 'reason': Provide an appropriate amount of detail for for your judgment.
Input text: '%s'
Output:
</code></pre>
<p>Here were our results:</p>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/jigsaw_prompt_engineering_cot.png" alt="img"></p>
<p>The <code>simple_prompt</code> seems to be more aligned with human labels than a more sophisticated <code>Chain-of-Thought</code> prompt. The quality gap between the two prompts is smaller when using GPT-4, however it does appear that a more sophisticated prompt does not always lead to better quality. Perhaps the additional reasoning that is spurred by Chain-of-Thought prompting increases the rate of false positives.</p>
</details>
<h3>5. Maximize the quality of your training data.</h3>
<p><em><strong>Summary:</strong> If you can continue enhancing the quality of your training data, with or without involvement from teachers, you absolutely should. Consider how you might fundamentally improve the quality of your data.</em></p>
<p>Most mistakes made by converged student models can be traced back to issues with the source data. For student models, addressing data quality issues at the source is typically more efficient than trying to correct these issues with auxiliary systems.</p>
<p>Here are some of the most popular techniques.</p>
<table>
<thead>
<tr>
<th>Technique</th>
<th>Difficulty</th>
<th>General applicability</th>
<th>Manual labor</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Manually fix or curate your data.</td>
<td>★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>Manually fix and revise bad outputs. Annotate new data. Simple but labor-intensive, this method ensures high-quality, error-free training material.</td>
</tr>
<tr>
<td>Filter data based on rules.</td>
<td>★★</td>
<td>★★★★</td>
<td>★★★</td>
<td>Employ basic rules (length criteria, regex patterns) to eliminate poor-quality data. While setting up rules is straightforward, identifying the right criteria can be time-consuming.</td>
</tr>
<tr>
<td>Rank your data with auxiliary systems (or LLMs).</td>
<td>★★★</td>
<td>★★★</td>
<td>★</td>
<td>Use an auxiliary system, such as another model, to assess and rank data quality. For example, Microsoft's phi-1 model employs GPT-4 to score training examples, using a classifier to prioritize higher-value data, and drop the bottom X% of examples. Also see section 2.1 of <a href="https://arxiv.org/abs/2107.04512">this paper</a>.</td>
</tr>
<tr>
<td>Enrich data with explanation traces.</td>
<td>★★★</td>
<td>★★</td>
<td>★</td>
<td>Collect reasoning data. If your task requires non-trivial reasoning, you may find similar performance gains from including explanation traces or chain-of-thought (CoT) outputs from the teacher.</td>
</tr>
<tr>
<td>Aggregate your teachers.</td>
<td>★★★★</td>
<td>★</td>
<td>★</td>
<td>For recursively-definable tasks such as summarization, use <a href="https://blog.langchain.dev/fine-tuning-chatgpt-surpassing-gpt-4-summarization/">chaining</a>. For tasks with exact answers, take a majority vote. By consolidating multiple teachers, you enable your student model to leapfrog any single teacher.</td>
</tr>
</tbody>
</table>
<details>
<summary><em>[Case study: Jigsaw comment toxicity data quality experiments]</em></summary>
<p>To assess the impact of data quality on model performance, we can derive 6 subsets of training data from the Jigsaw dataset, and train models for each of them.</p>
<ul>
<li>A (1.1k rows): in-distribution, GPT labels.</li>
<li>B (2.2k rows): A + 1.1k rows in-distribution Gold labels.</li>
<li>C (2.1k rows): B filtered to remove GPT errors.</li>
<li>D (3.2k rows): B + 1k rows with Gold toxic labels.</li>
<li>E (5k rows): Larger in-distribution dataset, GPT labels.</li>
<li>F (10k rows): Largest in-distribution dataset, GPT labels.</li>
</ul>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/jigsaw_quality_experiment.png" alt="img"></p>
<p align="center"><i>Model performance on a balanced test set.</i></p>
<p>Performance improves both when we add high-quality human-labeled examples as well as when incorrect teacher-labeled examples are removed.</p>
</details>
<h3>6. The best datasets are diverse and balanced.</h3>
<p><em><strong>Summary:</strong> Try to make your dataset diverse, non-repetitive, and balanced. The more scenarios and complexities your dataset covers, the more likely the distilled student will generalize in an unbiased way.</em></p>
<p>One of the main challenges in creating a high-quality dataset is ensuring that the examples are varied and non-repetitive. The training data for your student model should cover a wide range of scenarios, and they should vary in their level of difficulty, complexity, and style.</p>
<p><strong>Diversity</strong> is important for several reasons: it exposes the language model to different cases that it needs to be able to handle, it reduces the risk of overfitting or memorizing specific patterns or solutions, and it increases the generalization and robustness of the model to unseen or novel situations.</p>
<p><strong>Balance</strong> is just as important. If certain cases are sparsely represented in the overall dataset, it may be challenging for your student model to learn these effectively.</p>
<p align="center"> <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/logs_diversity.png"> </p>
<p align="center"><i>Datasets bootstrapped from real logs can also be variation or balance-deficient. For logs-based datasets, having too many examples from power users could be detrimental to overall dataset representation. Debias logs with random mutation, augment rarer examples with paraphrasing or back-translation, or manually add missing cases.</i></p>
<p></p>
<p>It's not essential to know or address all data distribution issues upfront, but it is useful to anticipate them. Trust that if you've picked good test sets, meaningful biases in student models should become apparent during evaluation, and these can often be addressed with adjustments to training data.</p>
<details>
<summary><em>[Case study: Jigsaw toxic comment classification]</em></summary>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/jigsaw_balance_experiment.png" alt="img"></p>
<p align="center"><i>Model performance on a balanced test set.</i></p>
<p>Perfectly balanced is not necessary, nor necessarily better.</p>
<p>For example, it could be that the non-toxic examples are more difficult to detect than the toxic ones, so the model may very well benefit from having more examples of more difficult classes while having fewer examples of easier classes.</p>
<p>Upfront, it's hard to know what the best "balance" is, or, for non-classification tasks, how to measure or productively change the balance of the dataset in the first place.</p>
<p>The higher-level idea is that if you have good test set(s), then when you do model evaluation with (unintentionally) imbalanced training data, you’ll be able to spot bias patterns that clue you into dataset distribution adjustments.</p>
</details>
<h3>7. Start simple and small.</h3>
<p><em><strong>Summary</strong>: Start with smaller, simpler model configurations that are quick to train so that you can debug issues with your setup, iterate quickly, and establish good benchmarks for comparing to more complex model configurations later.</em></p>
<p><strong>Embrace the power of the smallest, simplest model.</strong> Not just a matter of efficiency; it's a strategic approach to model development. Smaller, simpler models are significantly quicker to train and understand, allowing for the fastest iteration and feedback.</p>
<p><strong>Avoid the trap of cool, but complicated large models.</strong> One of the most common pitfalls in model training is starting with too large and too complex model configurations. These will be harder to understand, slow down iteration velocity, and extend experiment cycle times.</p>
<p><strong>The value of naive baselines.</strong> Always begin with naive, simple baseline models. These serve as a clear benchmark to measure the performance of subsequent more sophisticated model configurations.</p>
<h3>8. Assess the marginal utility of having more data.</h3>
<p><em><strong>Summary:</strong> Meaningful fine-tuning results are often achieved with datasets ranging from a few hundred to tens of thousands of examples as a rule of thumb. To answer the question more concretely for your task, run an ablation study varying dataset size and extrapolate.</em></p>
<blockquote>
<p>"How much data do I need for fine-tuning my model?" ~ One of the most common questions that we get asked.</p>
</blockquote>
<p>In earnest, it really depends, influenced by factors such as task difficulty, output variability, reasoning complexity, example length, task alignment with pre-training data, and hyperparameters. Some problems require minimal data for convergence, while others demand extensive training without converging at all.</p>
<p>To determine a good dataset size for your specific case, conduct an ablation experiment holding other training parameters constant, and varying dataset size (e.g., 5%, 10%, 25%, 50%, 75%, 100%).</p>
<p>Such experiments can reveal the marginal utility of having additional data for fine-tuning. If increasing data quantity doesn't yield much improvement, it's advisable to reevaluate other aspects of the training pipeline to identify potential areas for enhancement.</p>
<p>If you do find that the marginal utility of having more data is high, then consider data augmentation techniques like <a href="https://github.com/QData/TextAttack">back translation</a>, manually annotating more data.</p>
<details>
<summary><em>[Case study: Jigsaw toxic comment classification]</em></summary>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/jigsaw_dataset_size_ablation.png" alt="img"></p>
<p align="center"><i>Model performance on a balanced test set.</i></p>
<p>While there's a big jump in performance from 1.1K examples to 5K examples, the jump in quality from 5K to 10K is rather marginal. Based on these scores, we can roughly extrapolate that there is diminishing marginal utility for adding more training data for this model configuration beyond 10K examples.</p>
</details>
<h3>9. Consider how you want to serve your student.</h3>
<p><em><strong>Summary:</strong> While not crucial to decide upfront, have a model serving plan in mind to prioritize experiments with models that can ultimately be served.</em></p>
<p>If you are planning to deploy multiple LLMs in production, it's beneficial to explore parameter-efficient fine-tuning (PEFT) techniques. PEFT, such as LoRA (Low-Rank Adaptation), involves training only a fraction of the model's weights, unlike full fine-tuning, which requires a dedicated set of GPU resources for each model. LoRA has been shown to <a href="https://arxiv.org/abs/2106.09685">achieve performance on par with full fine-tuning</a>, making it a viable option for efficient deployment.</p>
<p><a href="https://github.com/predibase/lorax">The LoRA Exchange (LoRAX)</a>, for example, is a serving solution optimized for serving numerous fine-tuned models using shared GPU resources. LoRAX stands out from traditional large language model serving methods by its ability to accommodate over a hundred task-specific, fine-tuned models on a single GPU. This capability significantly reduces the cost and complexity of serving fine-tuned models. LoRaX is especially suited for parameter-efficient fine-tuned models, offering a streamlined solution for deployment.</p>
<p>While full fine-tuning with larger models might yield the highest absolute quality, the trade-off in terms of increased costs or serving latency might not justify the marginal gains in performance.</p>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/lorax.png" alt="img"></p>
<p align="center"><i>Serving adapter-based LLMs with LoRAX.</i></p>
<p>Consider the target serving architecture early in the model development process. The type of model you choose may greatly influence how it will be served and should inform how to prioritize experiments.</p>
<h3>10. Experiment broadly, one parameter at a time.</h3>
<p><em><strong>Summary:</strong> Exploration over exploitation: spend most of your time and energy to gain insight into the problem. Change one variable at a time, and try not to rathole.</em></p>
<p>Tips for running lots of experiments at once:</p>
<ul>
<li>Stay organized with model repositories or spreadsheets.</li>
<li>Parallelize but only change one parameter at a time.</li>
<li>Expect some toil and guesswork.</li>
<li>Optimize for iteration speed (simple -> complex, small -> large)</li>
</ul>
<p>The following suggestions came about as we tried to crystalize our own approach to fine-tuning LLMs. This is far from a comprehensive list, but here are some of our favorite ideas for exploration.</p>
<table>
<thead>
<tr>
<th>Category</th>
<th>Idea</th>
<th>Impact to Quality</th>
<th>Impact to Speed</th>
<th>Complexity</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Architecture parameter</td>
<td>Foundation model</td>
<td>★★★★★</td>
<td>★★</td>
<td>★</td>
<td>Try out a few different foundation models and see what happens to your student models performance. Like teachers, different foundation models may be inherently closer to your task than others.</td>
</tr>
<tr>
<td>Architecture parameter</td>
<td>Precision and quantization</td>
<td>★★★★</td>
<td>★★★★</td>
<td>★★</td>
<td>Reducing precision significantly decreases the model's size, enabling it to train with larger batch sizes and thus higher throughput. While quantization can sometimes lead to a slight decrease in model accuracy due to the reduced precision, it's not always the case. In our experiments, oftentimes the trade-off is minimal compared to the gains in speed and size reduction.</td>
</tr>
<tr>
<td>Architecture parameter</td>
<td>Adapter parameters (rank and alpha)</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★</td>
<td>Rank in LoRA determines the size of the low-rank matrices that are used to approximate the full-rank weight matrices in the model. A higher rank can increase the model's capacity to learn complex patterns but at the cost of more parameters to train. Conversely, a lower rank is more parameter-efficient but limits the model's expressiveness.</td>
</tr>
<tr>
<td>Architecture parameter</td>
<td>Base model size</td>
<td>★★★</td>
<td>★★★★★</td>
<td>★</td>
<td>Experiment with different sizes to get a sense of the trade-off between model performance and model size. Some tasks may benefit significantly from larger models due to the task's complexity. However, larger models are more likely to overfit to training data, especially if the dataset is not large or varied enough, or the gains in quality may be marginal. Increasingly, it's</td>
</tr>
<tr>
<td>Architecture parameter</td>
<td>Prompt</td>
<td>★★</td>
<td>★★</td>
<td>★</td>
<td>Prompts have an outsized impact with teacher models, but in supervised fine-tuning (SFT) and the weights of the model are updated directly, wordsmithing the prompt is not as directly impactful to quality.</td>
</tr>
<tr>
<td>Training parameter</td>
<td>Epochs</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★</td>
<td>Simply training a model for longer (more epochs) will often result in a better model.</td>
</tr>
<tr>
<td>Training parameter</td>
<td>Learning rate (LR) and LR schedule</td>
<td>★★★★★</td>
<td>★</td>
<td>★</td>
<td>An optimal learning rate ensures that the model learns efficiently without missing or overshooting the optimal weights. A proper warm-up can improve model training stability and performance while decay helps maintain the balance between learning complex patterns and avoiding overfitting to the training data.</td>
</tr>
<tr>
<td>Training parameter</td>
<td>Max sequence length</td>
<td>★★★</td>
<td>★★★</td>
<td>★</td>
<td>For long-tailed data, consider truncating your data to maximize GPU utilization.</td>
</tr>
<tr>
<td>Training parameter</td>
<td>Batch size</td>
<td>★★★</td>
<td>★★★★★</td>
<td>★</td>
<td>Max out your GPU. Choose the highest batch size that doesn't OOM.</td>
</tr>
<tr>
<td>Training strategy</td>
<td>Curriculum learning</td>
<td>★★★★</td>
<td>★★★</td>
<td>★★★★★</td>
<td>Progressive learning, also known as curriculum learning, is a training strategy where the model is fine-tuned in a series of stages, each with a different kind of training data, typically progressing from more general or noisier data to more specific, high-quality, or in-domain data. Progressive learning mirrors the natural way humans learn: starting from broad concepts and gradually focusing on more specific and complex ideas. Example of progressive learning from <a href="https://arxiv.org/abs/2311.11045">orca-2</a>: <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/curriculum_learning.png" alt="img"></td>
</tr>
<tr>
<td>Training strategy</td>
<td>RLHF/RLAIF/DPO</td>
<td>★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>RLHF/RLHAIF/DPO, also called "preference tuning" where the model undergoes reinforcement learning to align better to human preferences. This was originally popularized by OpenAI, however it's extremely costly, and seems like a last mile optimization. We have yet to speak with a company who has a critical need for this level of optimization. High-level diagram of <a href="https://arxiv.org/abs/2309.00267">RLHF vs. RLAIF</a>: <img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/rlhf.png" alt="img"></td>
</tr>
</tbody>
</table>
<h3>11. Look at the model's individual mistakes.</h3>
<p><em><strong>Summary:</strong> While aggregate metrics and advanced automated evaluation methods provide a broad overview of model performance, manually reviewing examples of your model's outputs brings unparalleled value for a deeper qualitative understanding of model performance.</em></p>
<p>Especially in generative contexts where model performance can't be neatly summarized with a clear-cut metric, taking the time to delve into specific examples of where and how your model makes mistakes is not just a step in the evaluation process; it's a critical component of the model development journey.</p>
<p><strong>Identify Specific Errors:</strong> Only by examining individual examples where the model errs, you can start to categorize and understand the nature of these mistakes. Is the model consistently struggling with certain types of inputs? Are there specific patterns or contexts where errors are more frequent or likely?</p>
<p><strong>Uncover Data Issues:</strong> Often, patterns in mistakes can be traced back to issues in data preparation or inadequate representation in the training set. Identifying these issues early can save significant resources and time that might otherwise be spent on futile parameter optimization. There's nothing more frustrating or wasteful than to spend hundreds of GPU hours optimizing modeling parameters when you uncover an issue with data quality.</p>
<p><img src="https://raw.githubusercontent.com/predibase/llm_distillation_playbook/main/images/llm_loss_curves.png" alt="img"></p>
<p align="center"><i>Loss curves for fine-tuned LLMs will all look like this, yet the qualitative differences between these checkpoints can be substantial.</i></p>
<h3>12. Actually deploy and monitor your models in production.</h3>
<p><em><strong>Summary:</strong> While test sets provide a controlled environment for evaluation, the true test of your model’s effectiveness is how it performs with actual users and real-time inputs. Deploy your model and observe its performance in a real-world setting!</em></p>
<p>Deploy and monitor your models in production… actually. Whether you are a resesarcher, an engineer, or somewhere in between, there's a lot to learn from going through the due dilligence of productionizing your model for real.</p>
<h4>Options for model deployment</h4>
<ul>
<li><strong>Live Experiment and Gradual Rollout:</strong> Begin by directing a small percentage of traffic (e.g., 1%, then 10%) to the student model. Closely monitor changes in key application metrics like latency and user interactions before scaling up.</li>
<li><strong>Dark Launch:</strong> Continue using the teacher model in production but route a portion of traffic to the student model in the background. Compare instances where the student model’s predictions differ from the teacher’s to evaluate the student's quality readiness.</li>
<li><strong>Hybrid Launch:</strong> If the teacher model outperforms the student model, consider a hybrid deployment. The student model can handle simpler, less resource-intensive queries, while the teacher model addresses more complex requests. This approach balances efficiency with quality.</li>
</ul>
<h4>Infrastructure safeguards</h4>
<ul>
<li><strong>Monitor Inputs:</strong> Fine-tuned models, being more specialized, can be sensitive to feature drift.</li>
<li><strong>Monitor Outputs:</strong> Establish failsafe mechanisms to scrutinize generated outputs. LLMs in production are often accompanied by rules-based or model-based systems to identify issues and trigger fallbacks. Be aware that using another LLM for output monitoring can add latency.</li>
<li><strong>Maintain Logs:</strong> Continue logging the inputs and outputs for any production LLMs. Logs will be invaluable for future model refinements or re-distillations.</li>
</ul>
<h2>Contributing</h2>
<p>We'd love to hear your feedback!</p>
<ul>
<li> <p>If you like the playbook, please <a href="https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars#starring-a-repository">leave a star</a>! You can also reach us by pinging the <a href="https://ludwig-ai.slack.com/join/shared_invite/zt-mrxo87w6-DlX5~73T2B4v_g6jj0pJcQ">Ludwig slack</a> or the <a href="https://discord.gg/CBgdrGnZjy">LoRAX Discord</a>, or finding us on LinkedIn. Testimonials help us justify creating more resources like this.</p> </li>
<li> <p>If anything seems incorrect, please file an issue to start a discussion. For questions or other messages where an issue isn't appropriate, please open a new discussion topic on GitHub.</p> </li>
<li> <p>This is a living document. We anticipate making periodic improvements, both small and large. If you’d like to be notified, please watch our repository (see <a href="https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository">instructions</a>).</p> </li>
<li> <p>Are there other best practices missing from this list? Feel free to create a PR! We promise to review your suggestions with expediency.</p> </li>
</ul>
+
+
+ viktoriasemaan/boa303
+ 2023-12-24T01:36:05Z
+ tag:github.com,2023-12-24:/viktoriasemaan/boa303
+
+ <p>repo for demos Unlock insights with AWS GenAI services (re:Invent BOA303)</p><hr><h1>Demos for Unlock insights with AWS GenAI services (re:Invent BOA303)</h1>
<p>This repository is complementary to breakout session on "BOA303 - Unlock insights with AWS GenAI services" at <a href="https://reinvent.awsevents.com/">re:Invent 2023</a></p>
<p>🎥 Watch the session <a href="https://bit.ly/BOA303-reinvent-23">here</a></p>
<p><a href="http://www.youtube.com/watch?v=ZdjFqPwlmLU" title="BOA303"><img src="http://img.youtube.com/vi/ZdjFqPwlmLU/0.jpg" alt=""BOA303""></a></p>
<p>In these demos, you will explore how RAG ( Retrieval-Augmented Generation ) can enhance AI models by leveraging external data sources to provide context-aware answers and unlock insights.</p>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/demo_1_2.gif" width="600">
</div>
<p>Learn 2 ways to use your data with GenAI models:</p>
<p>1️⃣ DEMO 1: <a href="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/#demo-1---rag-approach-with-amazon-kendra">Deploying Llama2 with Sagemaker, CodeWhisperer + Kendra for data retrieval</a></p>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/demo1.gif" width="600">
</div>
<p>2️⃣ DEMO 2: <a href="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/#demo-2---rag-approach-with-vectordb">Using Claude 2 with Bedrock + Vector DB for data retrieval</a></p>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/demo2.gif" width="600">
</div>
<h2>DEMO 1 - RAG approach with Amazon Kendra</h2>
<h3>Prerequisites:</h3>
<ol>
<li> <p>Follow <a href="https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html#studio-updated-launch-prereq">instructions</a> to setup Amazon SageMaker Studio prerequisites</p> </li>
<li> <p>Follow <a href="https://docs.aws.amazon.com/codewhisperer/latest/userguide/sagemaker-setup.html">instructions</a> to enable Amazon CodeWhisperer extension for SageMaker Studio</p> </li>
</ol>
<h3>Setup for Demo 1</h3>
<h4>1. Create S3 Bucket and download data</h4>
<ul>
<li>Open Amazon S3 console. Click <strong>Create a bucket</strong>. Provide a unique name <code>reinvent-demo-yourname</code>. Keep other options as default. Click <strong>Create bucket</strong>.</li>
<li>Go to <a href="https://www.macrotrends.net/countries/USA/united-states/inflation-rate-cpi">https://www.macrotrends.net/countries/USA/united-states/inflation-rate-cpi</a>. Click <strong>download historical data</strong>.</li>
<li>Download Starbucks annual report PDF.</li>
<li>Upload downloaded csv and pdf files into S3 bucket.</li>
</ul>
<h4>2. Amazon Kendra Index & data sources</h4>
<ul>
<li>Open Amazon Kendra console. Click <strong>Create an index</strong>. Provide index name. Under IAM Select <strong>Create a new role (Recommended)</strong>. Enter role name. Click <strong>Next</strong>, then <strong>Next</strong> in the follow-up screens, and Click <strong>Create</strong>.</li>
</ul>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-01.jpg" width="600">
</div>
<ul>
<li>Copy index name and save for future references. Wait for index to become active and click <strong>Add data sources</strong>.</li>
<li>Find Amazon S3 Connector. Click <strong>Add connector</strong>.</li>
</ul>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-02.jpg" width="600">
</div>
<ul>
<li>Provide Data Source name. Click <strong>Next</strong>. Create a new role or select an existing role.</li>
<li>Click <strong>Browse S3</strong> and select the bucket that you created in Step 1. At the bottom select <strong>Frequency Run on demand</strong>. Click <strong>Next</strong>, then <strong>Next</strong> again then <strong>Add data resources</strong>.</li>
</ul>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-03.jpg" width="600">
</div>
<ul>
<li>Once the data source is created, click <strong>Sync Now</strong> button at the top.</li>
<li>Let’s add one more data source. Click on <strong>Data sources</strong> on the left pane then click <strong>Add data source</strong>. Search for Web and pick <strong>Web Crawler V2.0</strong>.</li>
</ul>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-04.jpg" width="600">
</div>
<ul>
<li>Provide data source name and click <strong>Next</strong>. Copy URL from step 1 into <strong>Source URLs</strong>. Select <strong>Create a new role (Recommended)</strong> at the bottom, type name, and click <strong>Next</strong>.</li>
</ul>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-05.jpg" width="600">
</div>
<ul>
<li>Keep default options and select Frequency <strong>Run on demand</strong>. Click <strong>Next</strong>, then <strong>Next</strong> again then <strong>Add data resources</strong>.</li>
<li>Once the data source is created, click <strong>Sync Now</strong> button at the top.</li>
</ul>
<h3>Demo 1 - Part 1: Notebook updates</h3>
<ol>
<li> <p>Open SageMaker Studio and copy <a href="https://github.com/viktoriasemaan/boa303/raw/main/Demo1%20-%20RAG%20with%20SageMaker%20and%20Kendra.ipynb"><code>Demo1 - RAG with SageMaker and Kendra.ipynb</code></a> notebook.</p> </li>
<li> <p>Install dependencies as needed</p> <pre><code class="language-bash">!pip install —upgrade —quiet sagemaker
!pip install langchain
</code></pre> </li>
<li> <p>Update s3_path with path to your bucket created in prerequisites. Update if needed csv file name</p> </li>
</ol>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-06.jpg" width="600">
</div>
<h3>Demo 1 - Part 2: Notebook updates</h3>
<ol>
<li>Copy your SageMaker Endpoint and replace in the code. In SageMaker Console, go to Sidebar > Home > Deployment dropdown > Endpoints — copy the name of the LLM and paste in the 3rd row below</li>
</ol>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-07.jpg" width="600">
</div>
<h3>Demo 1 - Part 3: Notebook updates</h3>
<ol>
<li>Update Kendra IndexID in the code and AWS region.</li>
</ol>
<p>Run your notebook and ask questions! 🚀</p>
<h2>DEMO 2 - RAG approach with VectorDB</h2>
<h3>Prerequisites:</h3>
<ol>
<li> <p>Follow <a href="https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html#studio-updated-launch-prereq">instructions</a> to setup Amazon SageMaker Studio prerequisites</p> </li>
<li> <p>Follow <a href="https://docs.aws.amazon.com/codewhisperer/latest/userguide/sagemaker-setup.html">instructions</a> to enable Amazon CodeWhisperer extension for SageMaker Studio</p> </li>
<li> <p>Follow <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html">instructions</a> to request access to Antropic Claude model inside Amazon Bedrock</p> </li>
<li> <p>Create a free account with <a href="https://www.pinecone.io/">pinecone.io</a> and create index “demoindex”.</p>
<ol>
<li>Click indexes on the left pane then click button Create index.</li>
<li>Give an index the name “demoindex”. Configure dimensions 1536, metric cosine, then click Create index. Save index name and environment name in your notes. We will use it later.</li>
<li>Go to API keys on the left pane and copy API key. Save it. We will use it later.</li>
</ol> </li>
</ol>
<div align="center">
<img src="https://raw.githubusercontent.com/viktoriasemaan/boa303/main/images/image-09.jpg" width="600">
</div>
<h3>Demo 2 - Part 1:Bedrock Configuration</h3>
<ol>
<li> <p>Open SageMaker Studio and copy <a href="https://github.com/viktoriasemaan/boa303/raw/main/Demo2%20-%20RAG%20with%20Bedrock%20and%20Vector%20DB.ipynb"><code>Demo2 - RAG with Bedrock and Vector DB.ipynb</code></a> notebook.</p> </li>
<li> <p>Create a <code>keys.env</code> file and add your Pinecone account information. Save this file in the same folder as your notebooks.</p> <pre><code class="language-env">PINECONE_API_KEY=your_pinecone_API_key
PINECONE_ENVIRONMENT=your_pinecone_env
</code></pre> </li>
<li> <p>Install dependencies as needed</p> <pre><code class="language-bash">!pip install -U \
langchain==0.0.306 \
boto3 \
botocore \
pypdf==3.15.2 \
pinecone-client==2.2.4 \
apache-beam==2.50.0 \
datasets==2.14.5 \
tiktoken==0.4.0 —force-reinstall —quiet
</code></pre> </li>
</ol>
<p>Execute commands in the notebook! 🚀</p>
+
+
+ DAGWorks-Inc/hamilton
+ 2023-12-24T01:36:05Z
+ tag:github.com,2023-12-24:/DAGWorks-Inc/hamilton
+
+ <p>Hamilton helps data scientists and engineers define testable, modular, self-documenting dataflows, that encode lineage and metadata. Runs and scales everywhere python does.</p><hr><div align="center">
<img src="https://github.com/DAGWorks-Inc/hamilton/assets/2328071/feb6abaa-b6d5-4271-a320-0ae4a18d8aa7" width="100">
<h1>Welcome to the official Hamilton Github Repository</h1>
<a href="https://circleci.com/gh/DAGWorks-Inc/hamilton/tree/main" target="_blank"> <img src="https://circleci.com/gh/DAGWorks-Inc/hamilton/tree/main.svg?style=svg" alt="Hamilton CircleCI"> </a>
<a href="https://hamilton.dagworks.io/en/latest/?badge=latest"> <img src="https://readthedocs.org/projects/hamilton/badge/?version=latest" alt="Documentation Status"> </a>
<a href="https://join.slack.com/t/hamilton-opensource/shared_invite/zt-1bjs72asx-wcUTgH7q7QX1igiQ5bbdcg" target="_blank"><img src="https://img.shields.io/badge/Join-Hamilton_Slack-brightgreen?logo=slack" alt="Hamilton Slack"></a>
<a href="https://twitter.com/hamilton_os" target="_blank"><img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social" alt="Twitter"></a>
<br>
<a href="https://www.python.org/downloads/" target="_blank"><img src="https://img.shields.io/badge/python-3.8|%203.9|%203.10|%203.11|%203.12-brightgreen.svg" alt="Python supported"></a>
<a href="https://pypi.org/project/sf-hamilton/" target="_blank"><img src="https://badge.fury.io/py/sf-hamilton.svg?sanitize=true" alt="PyPi Version"></a>
<a href="https://pepy.tech/project/sf-hamilton" target="_blank"><img src="https://pepy.tech/badge/sf-hamilton" alt="Total Downloads"></a>
<br>
<a href="https://anaconda.org/hamilton-opensource/sf-hamilton"> <img src="https://anaconda.org/hamilton-opensource/sf-hamilton/badges/version.svg?sanitize=true"> </a>
<a href="https://anaconda.org/hamilton-opensource/sf-hamilton"> <img src="https://anaconda.org/hamilton-opensource/sf-hamilton/badges/platforms.svg?sanitize=true"> </a>
</div>
<h1>Hamilton</h1>
<p>The general purpose micro-orchestration framework for creating <a href="https://en.wikipedia.org/wiki/Dataflow">dataflows</a> from python functions! That is, your single tool to express things like data, ML, LLM pipelines/workflows, and even web request logic!</p>
<p>Hamilton is a novel paradigm for specifying a flow of delayed execution in python. It works on python objects of any type and dataflows of any complexity. Core to the design of Hamilton is a clear mapping of function name to artifact, allowing you to quickly grok the relationship between the code you write and the data you produce.</p>
<p>This paradigm makes modifications easy to build and track, ensures code is self-documenting, and makes it natural to unit test your data transformations. When connected together, these functions form a <a href="https://en.wikipedia.org/wiki/Directed_acyclic_graph">Directed Acyclic Graph</a> (DAG), which the Hamilton framework can execute, optimize, and report on.</p>
<h2>Problems Hamilton Solves</h2>
<p>✅ Model a dataflow -- If you can model your problem as a DAG in python, Hamilton is the cleanest way to build it.<br> ✅ Unmaintainable spaghetti code -- Hamilton dataflows are unit testable, self-documenting, and provide lineage.<br> ✅ Long iteration/experimentation cycles -- Hamilton provides a clear, quick, and methodical path to debugging/modifying/extending your code.<br> ✅ Reusing code across contexts -- Hamilton encourages code that is independent of infrastructure and can run regardless of execution setting.</p>
<h2>Problems Hamilton Does not Solve</h2>
<p>❌ Provisioning infrastructure -- you want a macro-orchestration system (see airflow, kubeflow, sagemaker, etc...).<br> ❌ Doing your ML for you -- we organize your code, BYOL (bring your own libraries).<br> ❌ Tracking execution + associated artifacts -- Hamilton is lightweight, but if this is important to you see the <a href="https://raw.githubusercontent.com/DAGWorks-Inc/hamilton/main/www.dagworks.io">DAGWorks product</a>.</p>
<p>See the table below for more specifics/how it compares to other common tooling.</p>
<h2>Full Feature Comparison</h2>
<p>Here are common things that Hamilton is compared to, and how Hamilton compares to them.</p>
<table>
<thead>
<tr>
<th>Feature</th>
<th align="center">Hamilton</th>
<th align="center">Macro orchestration systems (e.g. Airflow)</th>
<th align="center">Feast</th>
<th align="center">dbt</th>
<th align="center">Dask</th>
</tr>
</thead>
<tbody>
<tr>
<td>Python 3.8+</td>
<td align="center">✅</td>
<td align="center">✅</td>
<td align="center">✅</td>
<td align="center">✅</td>
<td align="center">✅</td>
</tr>
<tr>
<td>Helps you structure your code base</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">✅</td>
<td align="center">❌</td>
</tr>
<tr>
<td>Code is always unit testable</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
<tr>
<td>Documentation friendly</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
<tr>
<td>Can visualize lineage easily</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">✅</td>
<td align="center">✅</td>
</tr>
<tr>
<td>Is just a library</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">✅</td>
</tr>
<tr>
<td>Runs anywhere python runs</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">✅</td>
</tr>
<tr>
<td>Built for managing python transformations</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
<tr>
<td>Can model GenerativeAI/LLM based workflows</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
<tr>
<td>Replaces macro orchestration systems</td>
<td align="center">❌</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
<tr>
<td>Is a feature store</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
<tr>
<td>Can model transforms at row/column/object/dataset level</td>
<td align="center">✅</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
</tbody>
</table>
<h1>Getting Started</h1>
<p>If you don't want to install anything to try Hamilton, we recommend trying <a href="https://www.tryhamilton.dev/?utm_source=README">www.tryhamilton.dev</a>. Otherwise, here's a quick getting started guide to get you up and running in less than 15 minutes. If you need help join our <a href="https://join.slack.com/t/hamilton-opensource/shared_invite/zt-1bjs72asx-wcUTgH7q7QX1igiQ5bbdcg">slack</a> community to chat/ask Qs/etc. For the latest updates, follow us on <a href="https://twitter.com/hamilton_os">twitter</a>!</p>
<h2>Installation</h2>
<p>Requirements:</p>
<ul>
<li>Python 3.8+</li>
</ul>
<p>To get started, first you need to install hamilton. It is published to pypi under <code>sf-hamilton</code>:</p>
<blockquote>
<p>pip install sf-hamilton</p>
</blockquote>
<p>Note: to use the DAG visualization functionality, you should instead do:</p>
<blockquote>
<p>pip install "sf-hamilton[visualization]"</p>
</blockquote>
<p>While it is installing we encourage you to start on the next section.</p>
<p>Note: the content (i.e. names, function bodies) of our example code snippets are for illustrative purposes only, and don't reflect what we actually do internally.</p>
<h2>Hamilton in <15 minutes</h2>
<p>Hamilton is a new paradigm when it comes to creating, um, dataframes (let's use dataframes as an example, otherwise you can create <em>ANY</em> python object). Rather than thinking about manipulating a central dataframe, as is normal in some data engineering/data science work, you instead think about the column(s) you want to create, and what inputs are required. There is no need for you to think about maintaining this dataframe, meaning you do not need to think about any "glue" code; this is all taken care of by the Hamilton framework.</p>
<p>For example rather than writing the following to manipulate a central dataframe object <code>df</code>:</p>
<pre><code class="language-python">df['col_c'] = df['col_a'] + df['col_b']
</code></pre>
<p>you write</p>
<pre><code class="language-python">def col_c(col_a: pd.Series, col_b: pd.Series) -> pd.Series:
"""Creating column c from summing column a and column b."""
return col_a + col_b
</code></pre>
<p>In diagram form: <img src="https://raw.githubusercontent.com/DAGWorks-Inc/hamilton/main/hamiltondag.png" alt="example"> The Hamilton framework will then be able to build a DAG from this function definition.</p>
<p>So let's create a "Hello World" and start using Hamilton!</p>
<h3>Your first hello world.</h3>
<p>By now, you should have installed Hamilton, so let's write some code.</p>
<ol>
<li>Create a file <code>my_functions.py</code> and add the following functions:</li>
</ol>
<pre><code class="language-python">import pandas as pd
def avg_3wk_spend(spend: pd.Series) -> pd.Series:
"""Rolling 3 week average spend."""
return spend.rolling(3).mean()
def spend_per_signup(spend: pd.Series, signups: pd.Series) -> pd.Series:
"""The cost per signup in relation to spend."""
return spend / signups
</code></pre>
<p>The astute observer will notice we have not defined <code>spend</code> or <code>signups</code> as functions. That is okay, this just means these need to be provided as input when we come to actually wanting to create a dataframe.</p>
<p>Note: functions can take or create scalar values, in addition to any python object type.</p>
<ol start="2">
<li>Create a <code>my_script.py</code> which is where code will live to tell Hamilton what to do:</li>
</ol>
<pre><code class="language-python">import sys
import logging
import importlib
import pandas as pd
from hamilton import driver
logging.basicConfig(stream=sys.stdout)
initial_columns = { # load from actuals or wherever -- this is our initial data we use as input.
# Note: these do not have to be all series, they could be scalar inputs.
'signups': pd.Series([1, 10, 50, 100, 200, 400]),
'spend': pd.Series([10, 10, 20, 40, 40, 50]),
}
# we need to tell hamilton where to load function definitions from
module_name = 'my_functions'
module = importlib.import_module(module_name) # or we could just do `import my_functions`
dr = driver.Driver(initial_columns, module) # can pass in multiple modules
# we need to specify what we want in the final dataframe.
output_columns = [
'spend', # or module.spend
'signups', # or module.signups
'avg_3wk_spend', # or module.avg_3wk_spend
'spend_per_signup', # or module.spend_per_signup
]
# let's create the dataframe!
# if you only did `pip install sf-hamilton` earlier:
df = dr.execute(output_columns)
# else if you did `pip install "sf-hamilton[visualization]"` earlier:
# dr.visualize_execution(output_columns, './my-dag.dot', {})
print(df)
</code></pre>
<ol start="3">
<li>Run my_script.py</li>
</ol>
<blockquote>
<p>python my_script.py</p>
</blockquote>
<p>You should see the following output:</p>
<pre><code> spend signups avg_3wk_spend spend_per_signup
0 10 1 NaN 10.000
1 10 10 NaN 1.000
2 20 50 13.333333 0.400
3 40 100 23.333333 0.400
4 40 200 33.333333 0.200
5 50 400 43.333333 0.125
</code></pre>
<p>You should see the following image if you ran <code>dr.visualize_execution(output_columns, './my-dag.dot', {"format": "png"}, orient="TB")</code>:</p>
<p><img src="https://raw.githubusercontent.com/DAGWorks-Inc/hamilton/main/hello_world_image.png" alt="hello_world_image"> Note: we treat displaying <code>Inputs</code> in a special manner for readability in our visualizations. So you'll likely see input nodes repeated.</p>
<p>Congratulations - you just created your Hamilton dataflow that created a dataframe!</p>
<h2>Example Hamilton Dataflows</h2>
<p>We have a growing list of examples showcasing how one might use Hamilton. You currently have two places to find them:</p>
<ol>
<li>The <a href="https://hub.dagworks.io/">Hamilton Dataflow Hub</a> -- which makes it easy to pull and then modify code.</li>
<li>The <a href="https://github.com/dagworks-inc/hamilton/tree/main/examples"><code>examples/</code></a> folder in this repository.</li>
</ol>
<p>For the Hub, this will contain user contributed dataflows, e.g. text_summarization, forecasting, data processing, that will be continually added to.</p>
<p>For the <a href="https://github.com/dagworks-inc/hamilton/tree/main/examples"><code>examples/</code></a> directory, you'll have to copy/fork the repository to run them. E.g.</p>
<ul>
<li><a href="https://github.com/dagworks-inc/hamilton/tree/main/examples/hello_world">Hello world</a></li>
<li>Scaling on to <a href="https://github.com/dagworks-inc/hamilton/tree/main/examples/ray">Ray</a>, <a href="https://github.com/dagworks-inc/hamilton/tree/main/examples/dask">Dask</a>, or <a href="https://github.com/dagworks-inc/hamilton/tree/main/examples/spark">Pandas on Spark</a></li>
<li>Training <a href="https://github.com/dagworks-inc/hamilton/tree/main/examples/model_examples">a model with scikit-learn</a></li>
<li>Doing <a href="https://github.com/dagworks-inc/hamilton/tree/main/examples/numpy/air-quality-analysis">air quality analysis solely in numpy</a></li>
</ul>
<p>We also have a docker container that contains some of these examples so you can pull that and run them locally. See the <a href="https://github.com/DAGWorks-Inc/hamilton/raw/main/examples/README.md#running-examples-through-a-docker-image">examples folder README</a> for details.</p>
<h1>We forked and lost some stars</h1>
<p>This repository is maintained by the original creators of Hamilton, who have since founded <a href="https://dagworks.io/">DAGWorks inc.</a>, a company largely dedicated to building and maintaining the Hamilton library. We decided to fork the original because Stitch Fix did not want to transfer ownership to us; we had grown the star count in the original repository to 893: <img width="141" alt="Screen Shot 2023-02-23 at 12 58 43 PM" src="https://user-images.githubusercontent.com/2328071/221029806-36a4e088-809b-4b08-9199-2fbf8049be34.png"> before forking.</p>
<p>For the backstory on how Hamilton came about, see the original Stitch Fix <a href="https://multithreaded.stitchfix.com/blog/2021/10/14/functions-dags-hamilton/">blog post!</a>.</p>
<h1>Slack Community</h1>
<p>We have a small but active community on <a href="https://join.slack.com/t/hamilton-opensource/shared_invite/zt-1bjs72asx-wcUTgH7q7QX1igiQ5bbdcg">slack</a>. Come join us!</p>
<h1>License</h1>
<p>Hamilton is released under the <a href="https://github.com/DAGWorks-Inc/hamilton/raw/main/LICENSE.md">BSD 3-Clause Clear License</a>.</p>
<h1>Used internally by:</h1>
<ul>
<li><a href="https://www.stitchfix.com/">Stitch Fix</a></li>
<li><a href="https://github.com/alphagov/govuk-feedback-analysis">UK Government Digital Services</a></li>
<li><a href="https://www.ibm.com/">IBM</a></li>
<li><a href="https://www.britishcycling.org.uk/">British Cycling</a></li>
<li><a href="https://pnnl.gov/">PNNL</a></li>
<li><a href="https://www.ornl.gov/">ORNL</a></li>
<li><a href="https://www.federalreserve.gov/">Federal Reserve Board</a></li>
<li><a href="https://www.jobyaviation.com/">Joby Aviation</a></li>
<li><a href="https://www.two.inc/">Two</a></li>
<li><a href="https://transfix.io/">Transfix</a></li>
<li><a href="https://www.railofy.com">Railofy</a></li>
<li><a href="https://www.habitat.energy/">Habitat Energy</a></li>
<li><a href="https://www.ki-insurance.com/">KI-Insurance</a></li>
<li><a href="https://www.ascena.com/">Ascena Retail</a></li>
<li><a href="https://www.opendoor.com/">Opendoor</a></li>
</ul>
<p>To add your company, make a pull request to add it here.</p>
<h1>Contributing</h1>
<p>We take contributions, large and small. We operate via a <a href="https://github.com/DAGWorks-Inc/hamilton/raw/main/CODE_OF_CONDUCT.md">Code of Conduct</a> and expect anyone contributing to do the same.</p>
<p>To see how you can contribute, please read our <a href="https://github.com/DAGWorks-Inc/hamilton/raw/main/CONTRIBUTING.md">contributing guidelines</a> and then our <a href="https://github.com/DAGWorks-Inc/hamilton/raw/main/developer_setup.md">developer setup guide</a>.</p>
<h1>Blog Posts</h1>
<ul>
<li><a href="https://towardsdatascience.com/lineage-hamilton-in-10-minutes-c2b8a944e2e6">Lineage + Hamilton in 10 minutes</a></li>
<li><a href="https://medium.com/@thijean/the-perks-of-creating-dataflows-with-hamilton-36e8c56dd2a">(Organic Content) The perks of creating dataflows with Hamilton by Thierry Jean</a></li>
<li><a href="https://outerbounds.com/blog/developing-scalable-feature-engineering-dags">Developing Scalable Feature Engineering DAGs with Metaflow & Hamilton</a></li>
<li><a href="https://towardsdatascience.com/tidy-production-pandas-with-hamilton-3b759a2bf562">Tidy Production Pandas with Hamilton</a></li>
<li><a href="https://towardsdatascience.com/functions-dags-introducing-hamilton-a-microframework-for-dataframe-generation-more-8e34b84efc1d">Towards Data Science post on backstory & introduction</a>.</li>
<li><a href="https://medium.com/@stefan.krawczyk/how-to-use-hamilton-with-pandas-in-5-minutes-89f63e5af8f5">How to use Hamilton with Pandas in 5 minutes</a>.</li>
<li><a href="https://towardsdatascience.com/how-to-iterate-with-hamilton-in-a-notebook-8ec0f85851ed">How to iterate with Hamilton in a Notebook</a>.</li>
<li><a href="https://multithreaded.stitchfix.com/blog/2021/10/14/functions-dags-hamilton/">Original Stitch Fix Post</a>.</li>
<li><a href="https://multithreaded.stitchfix.com/blog/2021/10/14/functions-dags-hamilton/">Extension Stitch Fix Post</a>.</li>
</ul>
<h1>Videos of talks</h1>
<ul>
<li><a href="https://www.youtube.com/watch?v=PDGIt37dov8&ab_channel=AICamp">Hamilton: a python micro-framework for data/feature engineering at Stitch Fix - 40 mins</a>: <a href="https://youtu.be/PDGIt37dov8"><img src="https://img.youtube.com/vi/PDGIt37dov8/hqdefault.jpg" alt="Watch the video"></a></li>
<li><a href="https://www.youtube.com/watch?v=m_rjCzxQj4c&ab_channel=Ponder">Hamilton: a python micro-framework for tidy scalable pandas - ~20 mins</a>:</li>
</ul>
<p><a href="https://www.youtube.com/watch?v=m_rjCzxQj4c&ab_channel=Ponder"><img src="https://img.youtube.com/vi/m_rjCzxQj4c/hqdefault.jpg" alt="Watch the video"></a></p>
<h1>Citing Hamilton</h1>
<p>We'd appreciate citing Hamilton by referencing one of the following:</p>
<pre><code>@inproceedings{DBLP:conf/vldb/KrawczykI22,
author = {Stefan Krawczyk and Elijah ben Izzy},
editor = {Satyanarayana R. Valluri and Mohamed Za{\"{\i}}t},
title = {Hamilton: a modular open source declarative paradigm for high level
modeling of dataflows},
booktitle = {1st International Workshop on Composable Data Management Systems,
CDMS@VLDB 2022, Sydney, Australia, September 9, 2022},
year = {2022},
url = {https://cdmsworkshop.github.io/2022/Proceedings/ShortPapers/Paper6\_StefanKrawczyk.pdf},
timestamp = {Wed, 19 Oct 2022 16:20:48 +0200},
biburl = {https://dblp.org/rec/conf/vldb/KrawczykI22.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@inproceedings{CEURWS:conf/vldb/KrawczykIQ22,
author = {Stefan Krawczyk and Elijah ben Izzy and Danielle Quinn},
editor = {Cinzia Cappiello and Sandra Geisler and Maria-Esther Vidal},
title = {Hamilton: enabling software engineering best practices for data transformations via generalized dataflow graphs},
booktitle = {1st International Workshop on Data Ecosystems co-located with 48th International Conference on Very Large Databases (VLDB 2022)},
pages = {41--50},
url = {https://ceur-ws.org/Vol-3306/paper5.pdf},
year = {2022}
}
</code></pre>
<h1>🛣🗺 Roadmap / Things you can do with Hamilton</h1>
<p>Hamilton is an ambitious project to provide a unified way to describe any dataflow, independent of where it runs. You can find currently support integrations and high-level roadmap below. Please reach out via <a href="https://join.slack.com/t/hamilton-opensource/shared_invite/zt-1bjs72asx-wcUTgH7q7QX1igiQ5bbdcg">slack</a> or email (stefan / elijah at dagworks.io) to contribute or share feedback!</p>
<h2>Object types:</h2>
<ul>
<li><input type="checkbox" checked disabled> Any python object type! E.g. Pandas, Spark dataframes, Dask dataframes, Ray datasets, Polars, dicts, lists, primitives, your custom objects, etc.</li>
</ul>
<h2>Workflows:</h2>
<ul>
<li><input type="checkbox" checked disabled> data processing</li>
<li><input type="checkbox" checked disabled> feature engineering</li>
<li><input type="checkbox" checked disabled> model training</li>
<li><input type="checkbox" checked disabled> LLM application workflows</li>
<li><input type="checkbox" checked disabled> all of them together</li>
</ul>
<h2>Data Quality</h2>
<p>See the <a href="https://hamilton.dagworks.io/en/latest/how-tos/run-data-quality-checks.html">data quality</a> docs.</p>
<ul>
<li><input type="checkbox" checked disabled> Ability to define data quality check on an object.</li>
<li><input type="checkbox" checked disabled> Pandera schema integration.</li>
<li><input type="checkbox" checked disabled> Custom object type validators.</li>
<li><input type="checkbox" disabled> Integration with other data quality libraries (e.g. Great Expectations, Deequ, whylogs, etc.)</li>
</ul>
<h2>Online Monitoring</h2>
<ul>
<li><input type="checkbox" disabled> Open telemetry/tracing plugin.</li>
</ul>
<h2>Caching:</h2>
<ul>
<li><input type="checkbox" disabled> Checkpoint caching (e.g. save a function's result to disk, independent of input) - <a href="https://github.com/DAGWorks-Inc/hamilton/pull/195">WIP</a>.</li>
<li><input type="checkbox" disabled> Finergrained caching (e.g. save a function's result to disk, dependent on input).</li>
</ul>
<h2>Execution:</h2>
<ul>
<li><input type="checkbox" checked disabled> Runs anywhere python runs. E.g. airflow, prefect, dagster, kubeflow, sagemaker, jupyter, fastAPI, snowpark, etc.</li>
</ul>
<h2>Backend integrations:</h2>
<p>Specific integrations with other systems where we help you write code that runs on those systems.</p>
<h3>Ray</h3>
<ul>
<li><input type="checkbox" checked disabled> Delegate function execution to Ray.</li>
<li><input type="checkbox" disabled> Function grouping (e.g. fuse multiple functions into a single Ray task)</li>
</ul>
<h3>Dask</h3>
<ul>
<li><input type="checkbox" checked disabled> Delegate function execution to Dask.</li>
<li><input type="checkbox" disabled> Function grouping (e.g. fuse multiple functions into a single Dask task)</li>
</ul>
<h3>Spark</h3>
<ul>
<li><input type="checkbox" checked disabled> Pandas on spark integration (via GraphAdapter)</li>
<li><input type="checkbox" checked disabled> PySpark native UDF map function integration (via GraphAdapter)</li>
<li><input type="checkbox" disabled> PySpark native aggregation function integration</li>
<li><input type="checkbox" disabled> PySpark join, filter, groupby, etc. integration</li>
</ul>
<h3>Snowpark</h3>
<ul>
<li><input type="checkbox" disabled> Packaging functions for Snowpark</li>
</ul>
<h3>LLVMs & related</h3>
<ul>
<li><input type="checkbox" disabled> Numba integration</li>
</ul>
<h3>Custom Backends</h3>
<ul>
<li><input type="checkbox" disabled> Generate code to execute on a custom topology, e.g. microservices, etc.</li>
</ul>
<h2>Integrations with other systems/tools:</h2>
<ul>
<li><input type="checkbox" disabled> Generating Airflow | Prefect | Metaflow | Dagster | Kubeflow Pipelines | Sagemaker Pipelines | etc from Hamilton.</li>
<li><input type="checkbox" disabled> Plugins for common MLOps/DataOps tools: MLFlow, DBT, etc.</li>
</ul>
<h2>Dataflow/DAG Walking:</h2>
<ul>
<li><input type="checkbox" checked disabled> Depth first search traversal</li>
<li><input type="checkbox" checked disabled> Async function support via AsyncDriver</li>
<li><input type="checkbox" checked disabled> Parallel walk over a generator</li>
<li><input type="checkbox" checked disabled> Python multiprocessing execution (still in beta)</li>
<li><input type="checkbox" checked disabled> Python threading support</li>
<li><input type="checkbox" checked disabled> Grouping of nodes into tasks for efficient parallel computation</li>
<li><input type="checkbox" disabled> Breadth first search traversal</li>
<li><input type="checkbox" disabled> Sequential walk over a generator</li>
</ul>
<h2>DAG/Dataflow resolution:</h2>
<ul>
<li><input type="checkbox" checked disabled> At Driver instantiation time, using configuration/modules and <a href="https://hamilton.dagworks.io/en/latest/reference/api-reference/decorators.html#config"><code>@config.when</code></a>.</li>
<li><input type="checkbox" checked disabled> With <a href="https://hamilton.dagworks.io/en/latest/reference/api-reference/decorators.html#resolve"><code>@resolve</code></a> during Driver instantiation time.</li>
</ul>
<h1>Prescribed Development Workflow</h1>
<p>In general we prescribe the following:</p>
<ol>
<li>Ensure you understand <a href="https://github.com/DAGWorks-Inc/hamilton/raw/main/basics.md">Hamilton Basics</a>.</li>
<li>Familiarize yourself with some of the <a href="https://github.com/DAGWorks-Inc/hamilton/raw/main/decorators.md">Hamilton decorators</a>. They will help keep your code DRY.</li>
<li>Start creating Hamilton Functions that represent your work. We suggest grouping them in modules where it makes sense.</li>
<li>Write a simple script so that you can easily run things end to end.</li>
<li>Join our <a href="https://join.slack.com/t/hamilton-opensource/shared_invite/zt-1bjs72asx-wcUTgH7q7QX1igiQ5bbdcg">Slack</a> community to chat/ask Qs/etc.</li>
</ol>
<p>For the backstory on Hamilton we invite you to watch a roughly-9 minute lightning talk on it that we gave at the apply conference: <a href="https://www.youtube.com/watch?v=B5Zp_30Knoo">video</a>, <a href="https://www.slideshare.net/StefanKrawczyk/hamilton-a-micro-framework-for-creating-dataframes">slides</a>.</p>
<h2>PyCharm Tips</h2>
<p>If you're using Hamilton, it's likely that you'll need to migrate some code. Here are some useful tricks we found to speed up that process.</p>
<h3>Live templates</h3>
<p>Live templates are a cool feature and allow you to type in a name which expands into some code.</p>
<p>E.g. For example, we wrote one to make it quick to stub out Hamilton functions: typing <code>graphfunc</code> would turn into -></p>
<pre><code class="language-python">def _(_: pd.Series) -> pd.Series:
""""""
return _
</code></pre>
<p>Where the blanks are where you can tab with the cursor and fill things in. See your pycharm preferences for setting this up.</p>
<h3>Multiple Cursors</h3>
<p>If you are doing a lot of repetitive work, one might consider multiple cursors. Multiple cursors allow you to do things on multiple lines at once.</p>
<p>To use it hit <code>option + mouse click</code> to create multiple cursors. <code>Esc</code> to revert back to a normal mode.</p>
<h1>Usage analytics & data privacy</h1>
<p>By default, when using Hamilton, it collects anonymous usage data to help improve Hamilton and know where to apply development efforts.</p>
<p>We capture three types of events: one when the <code>Driver</code> object is instantiated, one when the <code>execute()</code> call on the <code>Driver</code> object completes, and one for most <code>Driver</code> object function invocations. No user data or potentially sensitive information is or ever will be collected. The captured data is limited to:</p>
<ul>
<li>Operating System and Python version</li>
<li>A persistent UUID to indentify the session, stored in ~/.hamilton.conf.</li>
<li>Error stack trace limited to Hamilton code, if one occurs.</li>
<li>Information on what features you're using from Hamilton: decorators, adapters, result builders.</li>
<li>How Hamilton is being used: number of final nodes in DAG, number of modules, size of objects passed to <code>execute()</code>, the name of the Driver function being invoked.</li>
</ul>
<p>If you're worried, see telemetry.py for details.</p>
<p>If you do not wish to participate, one can opt-out with one of the following methods:</p>
<ol>
<li>Set it to false programmatically in your code before creating a Hamilton driver: <pre><code class="language-python">from hamilton import telemetry
telemetry.disable_telemetry()
</code></pre> </li>
<li>Set the key <code>telemetry_enabled</code> to <code>false</code> in ~/.hamilton.conf under the <code>DEFAULT</code> section: <pre><code>[DEFAULT]
telemetry_enabled = False
</code></pre> </li>
<li>Set HAMILTON_TELEMETRY_ENABLED=false as an environment variable. Either setting it for your shell session: <pre><code class="language-bash">export HAMILTON_TELEMETRY_ENABLED=false
</code></pre> or passing it as part of the run command: <pre><code class="language-bash">HAMILTON_TELEMETRY_ENABLED=false python NAME_OF_MY_DRIVER.py
</code></pre> </li>
</ol>
<h1>Contributors</h1>
<h2>Code Contributors</h2>
<ul>
<li>Stefan Krawczyk (@skrawcz)</li>
<li>Elijah ben Izzy (@elijahbenizzy)</li>
<li>Danielle Quinn (@danfisher-sf)</li>
<li>Rachel Insoft (@rinsoft-sf)</li>
<li>Shelly Jang (@shellyjang)</li>
<li>Vincent Chu (@vslchusf)</li>
<li>Christopher Prohm (@chmp)</li>
<li>James Lamb (@jameslamb)</li>
<li>Avnish Pal (@bovem)</li>
<li>Sarah Haskins (@frenchfrywpepper)</li>
<li>Thierry Jean (@zilto)</li>
<li>Michał Siedlaczek (@elshize)</li>
<li>Benjamin Hack (@benhhack)</li>
<li>Bryan Galindo (@bryangalindo)</li>
<li>Jordan Smith (@JoJo10Smith)</li>
</ul>
<h2>Bug Hunters/Special Mentions</h2>
<ul>
<li>Nils Olsson (@nilsso)</li>
<li>Michał Siedlaczek (@elshize)</li>
<li>Alaa Abedrabbo (@AAbedrabbo)</li>
<li>Shreya Datar (@datarshreya)</li>
<li>Baldo Faieta (@baldofaieta)</li>
<li>Anwar Brini (@AnwarBrini)</li>
<li>Gourav Kumar (@gms101)</li>
<li>Amos Aikman (@amosaikman)</li>
<li>Ankush Kundaliya (@akundaliya)</li>
<li>David Weselowski (@j7zAhU)</li>
<li>Peter Robinson (@Peter4137)</li>
<li>Seth Stokes (@sT0v</li>
<li>Louis Maddox (@lmmx)</li>
<li>Stephen Bias (@s-ducks)</li>
<li>Anup Joseph (@AnupJoseph)</li>
<li>Jan Hurst (@janhurst)</li>
<li>Flavia Santos (@flaviassantos)</li>
</ul>
\ No newline at end of file
diff --git a/jupyter-notebook/weekly/index.xml b/jupyter-notebook/weekly/index.xml
new file mode 100644
index 00000000000..ea56f58027c
--- /dev/null
+++ b/jupyter-notebook/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Jupyter Notebook Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:16Z
+ Weekly Trending of Jupyter Notebook in GitHub
+
+
+ salesforce/LAVIS
+ 2023-12-24T01:53:16Z
+ tag:github.com,2023-12-24:/salesforce/LAVIS
+
+ <p>LAVIS - A One-stop Library for Language-Vision Intelligence</p><hr><p align="center"> <br> <img src="https://raw.githubusercontent.com/salesforce/LAVIS/main/docs/_static/logo_final.png" width="400"> <br> </p>
<p> </p>
<div align="center">
<a href="https://github.com/salesforce/LAVIS/releases"><img alt="Latest Release" src="https://img.shields.io/github/release/salesforce/LAVIS.svg?sanitize=true"></a>
<a href="https://opensource.salesforce.com/LAVIS/index.html"> <img alt="docs" src="https://github.com/salesforce/LAVIS/actions/workflows/docs.yaml/badge.svg?sanitize=true"> </a>
<a href="https://opensource.org/licenses/BSD-3-Clause"> <img alt="license" src="https://img.shields.io/badge/License-BSD_3--Clause-blue.svg?sanitize=true"> </a>
<a href="https://pepy.tech/project/salesforce-lavis"> <img alt="Downloads" src="https://pepy.tech/badge/salesforce-lavis"> </a>
</div>
<div align="center">
<a href="https://opensource.salesforce.com/LAVIS//latest/benchmark.html">Benchmark</a>,
<a href="https://arxiv.org/abs/2209.09019">Technical Report</a>,
<a href="https://opensource.salesforce.com/LAVIS//latest/index.html">Documentation</a>,
<a href="https://github.com/salesforce/LAVIS/tree/main/examples">Jupyter Notebook Examples</a>,
<a href="https://blog.salesforceairesearch.com/lavis-language-vision-library/">Blog</a>
</div>
<h1>LAVIS - A Library for Language-Vision Intelligence</h1>
<h2>What's New: 🎉</h2>
<ul>
<li>[Model Release] November 2023, released implementation of <strong>X-InstructBLIP</strong> <br> <a href="https://arxiv.org/pdf/2311.18799.pdf">Paper</a>, <a href="https://github.com/salesforce/LAVIS/tree/main/projects/xinstructblip">Project Page</a>, <a href="https://artemisp.github.io/X-InstructBLIP-page/">Website</a>, <a href="https://colab.research.google.com/github/salesforce/LAVIS/blob/main/projects/xinstructblip/demo/run_demo.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg?sanitize=true" alt="Open In Colab"></a></li>
</ul>
<blockquote>
<p>A simple, yet effective, cross-modality framework built atop frozen LLMs that allows the integration of various modalities (image, video, audio, 3D) without extensive modality-specific customization.</p>
</blockquote>
<ul>
<li>[Model Release] July 2023, released implementation of <strong>BLIP-Diffusion</strong> <br> <a href="https://arxiv.org/abs/2305.06500">Paper</a>, <a href="https://github.com/salesforce/LAVIS/tree/main/projects/blip-diffusion">Project Page</a>, <a href="https://dxli94.github.io/BLIP-Diffusion-website/">Website</a></li>
</ul>
<blockquote>
<p>A text-to-image generation model that trains 20x than DreamBooth. Also facilitates zero-shot subject-driven generation and editing.</p>
</blockquote>
<ul>
<li>[Model Release] May 2023, released implementation of <strong>InstructBLIP</strong> <br> <a href="https://arxiv.org/abs/2305.06500">Paper</a>, <a href="https://github.com/salesforce/LAVIS/tree/main/projects/instructblip">Project Page</a></li>
</ul>
<blockquote>
<p>A new vision-language instruction-tuning framework using BLIP-2 models, achieving state-of-the-art zero-shot generalization performance on a wide range of vision-language tasks.</p>
</blockquote>
<ul>
<li>[Model Release] Jan 2023, released implementation of <strong>BLIP-2</strong> <br> <a href="https://arxiv.org/abs/2301.12597">Paper</a>, <a href="https://github.com/salesforce/LAVIS/tree/main/projects/blip2">Project Page</a>, <a href="https://colab.research.google.com/github/salesforce/LAVIS/blob/main/examples/blip2_instructed_generation.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg?sanitize=true" alt="Open In Colab"></a></li>
</ul>
<blockquote>
<p>A generic and efficient pre-training strategy that easily harvests development of pretrained vision models and large language models (LLMs) for vision-language pretraining. BLIP-2 beats Flamingo on zero-shot VQAv2 (<strong>65.0</strong> vs <strong>56.3</strong>), establishing new state-of-the-art on zero-shot captioning (on NoCaps <strong>121.6</strong> CIDEr score vs previous best <strong>113.2</strong>). In addition, equipped with powerful LLMs (e.g. OPT, FlanT5), BLIP-2 also unlocks the new <strong>zero-shot instructed vision-to-language generation</strong> capabilities for various interesting applications!</p>
</blockquote>
<ul>
<li>Jan 2023, LAVIS is now available on <a href="https://pypi.org/project/salesforce-lavis/">PyPI</a> for installation!</li>
<li>[Model Release] Dec 2022, released implementation of <strong>Img2LLM-VQA</strong> (<strong>CVPR 2023</strong>, <em>"From Images to Textual Prompts: Zero-shot VQA with Frozen Large Language Models"</em>, by Jiaxian Guo et al) <br> <a href="https://arxiv.org/pdf/2212.10846.pdf">Paper</a>, <a href="https://github.com/salesforce/LAVIS/tree/main/projects/img2llm-vqa">Project Page</a>, <a href="https://colab.research.google.com/github/salesforce/LAVIS/blob/main/projects/img2llm-vqa/img2llm_vqa.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg?sanitize=true" alt="Open In Colab"></a></li>
</ul>
<blockquote>
<p>A plug-and-play module that enables off-the-shelf use of Large Language Models (LLMs) for visual question answering (VQA). Img2LLM-VQA surpasses Flamingo on zero-shot VQA on VQAv2 (61.9 vs 56.3), while in contrast requiring no end-to-end training!</p>
</blockquote>
<ul>
<li>[Model Release] Oct 2022, released implementation of <strong>PNP-VQA</strong> (<strong>EMNLP Findings 2022</strong>, <em>"Plug-and-Play VQA: Zero-shot VQA by Conjoining Large Pretrained Models with Zero Training"</em>, by Anthony T.M.H. et al), <br> <a href="https://arxiv.org/abs/2210.08773">Paper</a>, <a href="https://github.com/salesforce/LAVIS/tree/main/projects/pnp-vqa">Project Page</a>, <a href="https://colab.research.google.com/github/salesforce/LAVIS/blob/main/projects/pnp-vqa/pnp_vqa.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg?sanitize=true" alt="Open In Colab"></a>)</li>
</ul>
<blockquote>
<p>A modular zero-shot VQA framework that requires no PLMs training, achieving SoTA zero-shot VQA performance.</p>
</blockquote>
<h2>Technical Report and Citing LAVIS</h2>
<p>You can find more details in our <a href="https://arxiv.org/abs/2209.09019">technical report</a>.</p>
<p><strong>If you're using LAVIS in your research or applications, please cite it using this BibTeX</strong>:</p>
<pre><code class="language-bibtex">@inproceedings{li-etal-2023-lavis,
title = "{LAVIS}: A One-stop Library for Language-Vision Intelligence",
author = "Li, Dongxu and
Li, Junnan and
Le, Hung and
Wang, Guangsen and
Savarese, Silvio and
Hoi, Steven C.H.",
booktitle = "Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations)",
month = jul,
year = "2023",
address = "Toronto, Canada",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2023.acl-demo.3",
pages = "31--41",
abstract = "We introduce LAVIS, an open-source deep learning library for LAnguage-VISion research and applications. LAVIS aims to serve as a one-stop comprehensive library that brings recent advancements in the language-vision field accessible for researchers and practitioners, as well as fertilizing future research and development. It features a unified interface to easily access state-of-the-art image-language, video-language models and common datasets. LAVIS supports training, evaluation and benchmarking on a rich variety of tasks, including multimodal classification, retrieval, captioning, visual question answering, dialogue and pre-training. In the meantime, the library is also highly extensible and configurable, facilitating future development and customization. In this technical report, we describe design principles, key components and functionalities of the library, and also present benchmarking results across common language-vision tasks.",
}
</code></pre>
<h2>Table of Contents</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#introduction">Introduction</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#installation">Installation</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#getting-started">Getting Started</a>
<ul>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#model-zoo">Model Zoo</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#image-captioning">Image Captioning</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#visual-question-answering-vqa">Visual question answering (VQA)</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#unified-feature-extraction-interface">Unified Feature Extraction Interface</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#load-datasets">Load Datasets</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#jupyter-notebook-examples">Jupyter Notebook Examples</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#resources-and-tools">Resources and Tools</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#documentations">Documentations</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#ethical-and-responsible-use">Ethical and Responsible Use</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#technical-report-and-citing-lavis">Technical Report and Citing LAVIS</a></li>
<li><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/#license">License</a></li>
</ul>
<h2>Introduction</h2>
<p>LAVIS is a Python deep learning library for LAnguage-and-VISion intelligence research and applications. This library aims to provide engineers and researchers with a one-stop solution to rapidly develop models for their specific multimodal scenarios, and benchmark them across standard and customized datasets. It features a unified interface design to access</p>
<ul>
<li><strong>10+</strong> tasks (retrieval, captioning, visual question answering, multimodal classification etc.);</li>
<li><strong>20+</strong> datasets (COCO, Flickr, Nocaps, Conceptual Commons, SBU, etc.);</li>
<li><strong>30+</strong> pretrained weights of state-of-the-art foundation language-vision models and their task-specific adaptations, including <a href="https://arxiv.org/pdf/2107.07651.pdf">ALBEF</a>, <a href="https://arxiv.org/pdf/2201.12086.pdf">BLIP</a>, <a href="https://arxiv.org/pdf/2112.09583.pdf">ALPRO</a>, <a href="https://arxiv.org/pdf/2103.00020.pdf">CLIP</a>.</li>
</ul>
<p align="center"> <br> <img src="https://raw.githubusercontent.com/salesforce/LAVIS/main/assets/demo-6.png"> <br> </p>
<p> </p>
<p>Key features of LAVIS include:</p>
<ul>
<li> <p><strong>Unified and Modular Interface</strong>: facilitating to easily leverage and repurpose existing modules (datasets, models, preprocessors), also to add new modules.</p> </li>
<li> <p><strong>Easy Off-the-shelf Inference and Feature Extraction</strong>: readily available pre-trained models let you take advantage of state-of-the-art multimodal understanding and generation capabilities on your own data.</p> </li>
<li> <p><strong>Reproducible Model Zoo and Training Recipes</strong>: easily replicate and extend state-of-the-art models on existing and new tasks.</p> </li>
<li> <p><strong>Dataset Zoo and Automatic Downloading Tools</strong>: it can be a hassle to prepare the many language-vision datasets. LAVIS provides automatic downloading scripts to help prepare a large variety of datasets and their annotations.</p> </li>
</ul>
<p>The following table shows the supported tasks, datasets and models in our library. This is a continuing effort and we are working on further growing the list.</p>
<table>
<thead>
<tr>
<th align="center">Tasks</th>
<th align="center">Supported Models</th>
<th align="center">Supported Datasets</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">Image-text Pre-training</td>
<td align="center">ALBEF, BLIP</td>
<td align="center">COCO, VisualGenome, SBU ConceptualCaptions</td>
</tr>
<tr>
<td align="center">Image-text Retrieval</td>
<td align="center">ALBEF, BLIP, CLIP</td>
<td align="center">COCO, Flickr30k</td>
</tr>
<tr>
<td align="center">Text-image Retrieval</td>
<td align="center">ALBEF, BLIP, CLIP</td>
<td align="center">COCO, Flickr30k</td>
</tr>
<tr>
<td align="center">Visual Question Answering</td>
<td align="center">ALBEF, BLIP</td>
<td align="center">VQAv2, OKVQA, A-OKVQA</td>
</tr>
<tr>
<td align="center">Image Captioning</td>
<td align="center">BLIP</td>
<td align="center">COCO, NoCaps</td>
</tr>
<tr>
<td align="center">Image Classification</td>
<td align="center">CLIP</td>
<td align="center">ImageNet</td>
</tr>
<tr>
<td align="center">Natural Language Visual Reasoning (NLVR)</td>
<td align="center">ALBEF, BLIP</td>
<td align="center">NLVR2</td>
</tr>
<tr>
<td align="center">Visual Entailment (VE)</td>
<td align="center">ALBEF</td>
<td align="center">SNLI-VE</td>
</tr>
<tr>
<td align="center">Visual Dialogue</td>
<td align="center">BLIP</td>
<td align="center">VisDial</td>
</tr>
<tr>
<td align="center">Video-text Retrieval</td>
<td align="center">BLIP, ALPRO</td>
<td align="center">MSRVTT, DiDeMo</td>
</tr>
<tr>
<td align="center">Text-video Retrieval</td>
<td align="center">BLIP, ALPRO</td>
<td align="center">MSRVTT, DiDeMo</td>
</tr>
<tr>
<td align="center">Video Question Answering (VideoQA)</td>
<td align="center">BLIP, ALPRO</td>
<td align="center">MSRVTT, MSVD</td>
</tr>
<tr>
<td align="center">Video Dialogue</td>
<td align="center">VGD-GPT</td>
<td align="center">AVSD</td>
</tr>
<tr>
<td align="center">Multimodal Feature Extraction</td>
<td align="center">ALBEF, CLIP, BLIP, ALPRO</td>
<td align="center">customized</td>
</tr>
<tr>
<td align="center">Text-to-image Generation</td>
<td align="center">[COMING SOON]</td>
<td align="center"></td>
</tr>
</tbody>
</table>
<h2>Installation</h2>
<ol>
<li>(Optional) Creating conda environment</li>
</ol>
<pre><code class="language-bash">conda create -n lavis python=3.8
conda activate lavis
</code></pre>
<ol start="2">
<li>install from <a href="https://pypi.org/project/salesforce-lavis/">PyPI</a></li>
</ol>
<pre><code class="language-bash">pip install salesforce-lavis
</code></pre>
<ol start="3">
<li>Or, for development, you may build from source</li>
</ol>
<pre><code class="language-bash">git clone https://github.com/salesforce/LAVIS.git
cd LAVIS
pip install -e .
</code></pre>
<h2>Getting Started</h2>
<h3>Model Zoo</h3>
<p>Model zoo summarizes supported models in LAVIS, to view:</p>
<pre><code class="language-python">from lavis.models import model_zoo
print(model_zoo)
# ==================================================
# Architectures Types
# ==================================================
# albef_classification ve
# albef_feature_extractor base
# albef_nlvr nlvr
# albef_pretrain base
# albef_retrieval coco, flickr
# albef_vqa vqav2
# alpro_qa msrvtt, msvd
# alpro_retrieval msrvtt, didemo
# blip_caption base_coco, large_coco
# blip_classification base
# blip_feature_extractor base
# blip_nlvr nlvr
# blip_pretrain base
# blip_retrieval coco, flickr
# blip_vqa vqav2, okvqa, aokvqa
# clip_feature_extractor ViT-B-32, ViT-B-16, ViT-L-14, ViT-L-14-336, RN50
# clip ViT-B-32, ViT-B-16, ViT-L-14, ViT-L-14-336, RN50
# gpt_dialogue base
</code></pre>
<p>Let’s see how to use models in LAVIS to perform inference on example data. We first load a sample image from local.</p>
<pre><code class="language-python">import torch
from PIL import Image
# setup device to use
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# load sample image
raw_image = Image.open("docs/_static/merlion.png").convert("RGB")
</code></pre>
<p>This example image shows <a href="https://en.wikipedia.org/wiki/Merlion">Merlion park</a> (<a href="https://theculturetrip.com/asia/singapore/articles/what-exactly-is-singapores-merlion-anyway/">source</a>), a landmark in Singapore.</p>
<h3>Image Captioning</h3>
<p>In this example, we use the BLIP model to generate a caption for the image. To make inference even easier, we also associate each pre-trained model with its preprocessors (transforms), accessed via <code>load_model_and_preprocess()</code>.</p>
<pre><code class="language-python">import torch
from lavis.models import load_model_and_preprocess
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# loads BLIP caption base model, with finetuned checkpoints on MSCOCO captioning dataset.
# this also loads the associated image processors
model, vis_processors, _ = load_model_and_preprocess(name="blip_caption", model_type="base_coco", is_eval=True, device=device)
# preprocess the image
# vis_processors stores image transforms for "train" and "eval" (validation / testing / inference)
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
# generate caption
model.generate({"image": image})
# ['a large fountain spewing water into the air']
</code></pre>
<h3>Visual question answering (VQA)</h3>
<p>BLIP model is able to answer free-form questions about images in natural language. To access the VQA model, simply replace the <code>name</code> and <code>model_type</code> arguments passed to <code>load_model_and_preprocess()</code>.</p>
<pre><code class="language-python">from lavis.models import load_model_and_preprocess
model, vis_processors, txt_processors = load_model_and_preprocess(name="blip_vqa", model_type="vqav2", is_eval=True, device=device)
# ask a random question.
question = "Which city is this photo taken?"
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
question = txt_processors["eval"](question)
model.predict_answers(samples={"image": image, "text_input": question}, inference_method="generate")
# ['singapore']
</code></pre>
<h3>Unified Feature Extraction Interface</h3>
<p>LAVIS provides a unified interface to extract features from each architecture. To extract features, we load the feature extractor variants of each model. The multimodal feature can be used for multimodal classification. The low-dimensional unimodal features can be used to compute cross-modal similarity.</p>
<pre><code class="language-python">from lavis.models import load_model_and_preprocess
model, vis_processors, txt_processors = load_model_and_preprocess(name="blip_feature_extractor", model_type="base", is_eval=True, device=device)
caption = "a large fountain spewing water into the air"
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
text_input = txt_processors["eval"](caption)
sample = {"image": image, "text_input": [text_input]}
features_multimodal = model.extract_features(sample)
print(features_multimodal.multimodal_embeds.shape)
# torch.Size([1, 12, 768]), use features_multimodal[:,0,:] for multimodal classification tasks
features_image = model.extract_features(sample, mode="image")
features_text = model.extract_features(sample, mode="text")
print(features_image.image_embeds.shape)
# torch.Size([1, 197, 768])
print(features_text.text_embeds.shape)
# torch.Size([1, 12, 768])
# low-dimensional projected features
print(features_image.image_embeds_proj.shape)
# torch.Size([1, 197, 256])
print(features_text.text_embeds_proj.shape)
# torch.Size([1, 12, 256])
similarity = features_image.image_embeds_proj[:,0,:] @ features_text.text_embeds_proj[:,0,:].t()
print(similarity)
# tensor([[0.2622]])
</code></pre>
<h3>Load Datasets</h3>
<p>LAVIS inherently supports a wide variety of common language-vision datasets by providing <a href="https://opensource.salesforce.com/LAVIS//latest/benchmark">automatic download tools</a> to help download and organize these datasets. After downloading, to load the datasets, use the following code:</p>
<pre><code class="language-python">from lavis.datasets.builders import dataset_zoo
dataset_names = dataset_zoo.get_names()
print(dataset_names)
# ['aok_vqa', 'coco_caption', 'coco_retrieval', 'coco_vqa', 'conceptual_caption_12m',
# 'conceptual_caption_3m', 'didemo_retrieval', 'flickr30k', 'imagenet', 'laion2B_multi',
# 'msrvtt_caption', 'msrvtt_qa', 'msrvtt_retrieval', 'msvd_caption', 'msvd_qa', 'nlvr',
# 'nocaps', 'ok_vqa', 'sbu_caption', 'snli_ve', 'vatex_caption', 'vg_caption', 'vg_vqa']
</code></pre>
<p>After downloading the images, we can use <code>load_dataset()</code> to obtain the dataset.</p>
<pre><code class="language-python">from lavis.datasets.builders import load_dataset
coco_dataset = load_dataset("coco_caption")
print(coco_dataset.keys())
# dict_keys(['train', 'val', 'test'])
print(len(coco_dataset["train"]))
# 566747
print(coco_dataset["train"][0])
# {'image': <PIL.Image.Image image mode=RGB size=640x480>,
# 'text_input': 'A woman wearing a net on her head cutting a cake. ',
# 'image_id': 0}
</code></pre>
<p>If you already host a local copy of the dataset, you can pass in the <code>vis_path</code> argument to change the default location to load images.</p>
<pre><code class="language-python">coco_dataset = load_dataset("coco_caption", vis_path=YOUR_LOCAL_PATH)
</code></pre>
<h2>Jupyter Notebook Examples</h2>
<p>See <a href="https://github.com/salesforce/LAVIS/tree/main/examples">examples</a> for more inference examples, e.g. captioning, feature extraction, VQA, GradCam, zeros-shot classification.</p>
<h2>Resources and Tools</h2>
<ul>
<li><strong>Benchmarks</strong>: see <a href="https://opensource.salesforce.com/LAVIS//latest/benchmark">Benchmark</a> for instructions to evaluate and train supported models.</li>
<li><strong>Dataset Download and Browsing</strong>: see <a href="https://opensource.salesforce.com/LAVIS//latest/benchmark">Dataset Download</a> for instructions and automatic tools on download common language-vision datasets.</li>
<li><strong>GUI Demo</strong>: to run the demo locally, run <code>bash run_scripts/run_demo.sh</code> and then follow the instruction on the prompts to view in browser. A web demo is coming soon.</li>
</ul>
<h2>Documentations</h2>
<p>For more details and advanced usages, please refer to <a href="https://opensource.salesforce.com/LAVIS//latest/index.html#">documentation</a>.</p>
<h2>Ethical and Responsible Use</h2>
<p>We note that models in LAVIS provide no guarantees on their multimodal abilities; incorrect or biased predictions may be observed. In particular, the datasets and pretrained models utilized in LAVIS may contain socioeconomic biases which could result in misclassification and other unwanted behaviors such as offensive or inappropriate speech. We strongly recommend that users review the pre-trained models and overall system in LAVIS before practical adoption. We plan to improve the library by investigating and mitigating these potential biases and inappropriate behaviors in the future.</p>
<h2>Contact us</h2>
<p>If you have any questions, comments or suggestions, please do not hesitate to contact us at <a href="mailto:lavis@salesforce.com">lavis@salesforce.com</a>.</p>
<h2>License</h2>
<p><a href="https://raw.githubusercontent.com/salesforce/LAVIS/main/LICENSE.txt">BSD 3-Clause License</a></p>
+
+
+ rahulnyk/knowledge_graph
+ 2023-12-24T01:53:16Z
+ tag:github.com,2023-12-24:/rahulnyk/knowledge_graph
+
+ <p>Convert any text to a graph of knowledge. This can be used for Graph Augmented Generation or Knowledge Graph based QnA</p><hr><h1>Convert any Corpus of Text into a <em>Graph of Knowledge</em></h1>
<p><img src="https://raw.githubusercontent.com/rahulnyk/knowledge_graph/main/assets/KG_banner.png" alt="Knowledge Graph Banner"> <em>A knowledge graph generated using this code</em> ghpages link of this graph: <a href="https://rahulnyk.github.io/knowledge_graph/">https://rahulnyk.github.io/knowledge_graph/</a></p>
<h2>What is a knowledge graph?</h2>
<p>A knowledge graph, also known as a semantic network, represents a network of real-world entities—i.e. objects, events, situations, or concepts—and illustrates the relationship between them. This information is usually stored in a graph database and visualized as a graph structure, prompting the term knowledge “graph.”</p>
<p>Source: <a href="https://www.ibm.com/topics/knowledge-graph">https://www.ibm.com/topics/knowledge-graph</a></p>
<h2>How to create a simple knowledge graph from a body of work?</h2>
<ol>
<li>Clean the text corpus (The body of work).</li>
<li>Extract concepts and entities from the body of work.</li>
<li>Extract relations between the entities.</li>
<li>Convert a graph schema.</li>
<li>Populate nodes (concepts) and edges (relations).</li>
<li>Visualise and Query.</li>
</ol>
<p>Step 6 is purely optional, but it has certain artistic gratification associated with it. Network graphs are beautiful objects (just look at the banner image above, isn't it beautiful?). Fortunately, there are a good number of Python libraries available for generating graph visualisations.</p>
<h2>Why Graph?</h2>
<p>Once the Knowledge Graph (KG) is build, we can use it for many purposes. We can run graph algorithms and calculate centralities of any node, to understand how important a concept (node) is to this body of work. We can calculate communities to bunch the concepts together to better analyse the text. We can understand the connectedness between seemingly disconnected concepts.</p>
<p>The best of all, we can achieve <strong>Graph Retrieval Augmented Generation (GRAG)</strong> and chat with our text in a much more profound way using Graph as a retriever. This is a new and improved version of <strong>Retrieval Augmented Generation (RAG)</strong> where we use a vectory db as a retriever to chat with our documents.</p>
<hr>
<h2>This project</h2>
<p>Here I have created a simple knowledge graph from a PDF document. The process I follow here is very similar to what is outlined in the above sections, with some simplifications.</p>
<p>First I split the entire text into chunks. Then I extract concepts mentioned within each chunk using an LLM. Note that I am not extracting entities using an NER model here. There is a difference between concepts and entities. For example 'Bangalore' is an entity, and 'Pleasant weather in Bangalore' is a concept. In my experience, concepts make more meaningful KG than entities.</p>
<p>I assume that the concepts that are mentioned in the vicinity of each other are related. So every edge in the KG is a text chunk in which the two connected concepts are mentioned.</p>
<p>Once the nodes (concepts) and the edges (text chunks) are calculated, It is easy to create a graph out of them using the libraries mentioned here. All the components I used here are set up locally, so this project can be run very easily on a personal machine. I have adopted a no-GPT approach here to keep things economical. I am using the fantastic Mistral 7B openorca instruct, which crushes this use case wonderfully. The model can be set up locally using Ollama so generating the KG is basically free (No calls to GPT).</p>
<p>To generate a graph this the notebook you have to tweak.</p>
<p><strong><a href="https://github.com/rahulnyk/knowledge_graph/raw/main/extract_graph.ipynb">extract_graph.ipynb</a></strong></p>
<p>The notebook implements the method outlined in the following flowchart.</p>
<img src="https://raw.githubusercontent.com/rahulnyk/knowledge_graph/main/assets/Method.png">
<ol>
<li>Split the corpus of text into chunks. Assign a chunk_id to each of these chunks.</li>
<li>For every text chunk extract concepts and their semantic relationships using an LLM. Let’s assign this relation a weightage of W1. There can be multiple relationships between the same pair of concepts. Every such relation is an edge between a pair of concepts.</li>
<li>Consider that the concepts that occur in the same text chunk are also related by their contextual proximity. Let’s assign this relation a weightage of W2. Note that the same pair of concepts may occur in multiple chunks.</li>
<li>Group similar pairs, sum their weights, and concatenate their relationships. So now we have only one edge between any distinct pair of concepts. The edge has a certain weight and a list of relations as its name.</li>
</ol>
<p>Additional it also calculates the Degree of each node, and Communities of nodes, for sizing and coloring the nodes in the graph respectively.</p>
<p><strong><a href="https://medium.com/towards-data-science/how-to-convert-any-text-into-a-graph-of-concepts-110844f22a1a">Here is a Medium article explaining the method in detail </a></strong></p>
<hr>
<h2>Tech Stack</h2>
<h3>Mistral 7B</h3>
<p><a href="https://mistral.ai/news/announcing-mistral-7b/"><img src="https://mistral.ai/images/logo_hubc88c4ece131b91c7cb753f40e9e1cc5_2589_256x0_resize_q97_h2_lanczos_3.webp" height="50"></a></p>
<p>I am using the <a href="https://huggingface.co/Open-Orca/Mistral-7B-OpenOrca">Mistral 7B Openorca</a> for extracting concepts out of text chunks. It can follow the system prompt instructions very well.</p>
<h3>Ollama</h3>
<p><a href="https://ollama.ai"><img src="https://github.com/jmorganca/ollama/assets/3325447/0d0b44e2-8f4a-4e99-9b52-a5c1c741c8f7 " height="50"></a></p>
<p>Ollama makes it easy to host any model locally. Mistral 7B OpenOrca version is already available with Ollama to use out of the box.</p>
<p>To set up this project, you must install Ollama on your local machine.</p>
<p>Step 1: Install Ollama <a href="https://ollama.ai">https://ollama.ai</a></p>
<p>Step 2: run <code>ollama run zephyr</code> in your terminal. This will pull the zephyr model to your local machine and start the Ollama server.</p>
<h3>Pandas</h3>
<p>dataframes for graph schema (can use a graphdb at a later stage).</p>
<h3>NetworkX</h3>
<p><a href="https://networkx.org"><img src="https://networkx.org/_static/networkx_logo.svg?sanitize=true" height="50"></a><a></a></p>
<p>This is a python library that makes dealing with graphs super easy</p>
<h3>Pyvis</h3>
<p><a href="https://github.com/WestHealth/pyvis/tree/master">Pyvis python library</a> for visualisation. Pyvis generates Javascript Graph visualisations using python, so the final graphs can be hosted on the web. For example the <a href="https://rahulnyk.github.io/knowledge_graph/">github link of this repo</a> is a graph generated by pyvis</p>
<h1>Looking for contributions</h1>
<p>This project needs a lot more work. There are some wonderful ideas suggested by folks on medium and here on Github. If this interests you, Please join hands and lets' build this together. Here are a few suggested imrpovements.</p>
<h3>Back End</h3>
<ul>
<li><input type="checkbox" disabled> <p>Use embeddings to deduplicate semantically similar concepts (<strong>Suggested by William Claude on the <a href="https://medium.com/towards-data-science/how-to-convert-any-text-into-a-graph-of-concepts-110844f22a1a">Medium Article</a></strong>)</p>
<ul>
<li><input type="checkbox" disabled> Avoid having similar concepts written differently by the LLM (eg: "doctor" and "doctors")</li>
<li><input type="checkbox" disabled> Reinforce the clustering of strongly similar concepts (eg: "doctor" and "medical practitioner")?</li>
</ul> </li>
<li><input type="checkbox" disabled> <p>Filter out the redundant, or outlier concepts that may not be useful in understanding the text. For example, generic concepts that occur too often in the text. (<strong>Suggested by Luke Chesley</strong>)</p> </li>
<li><input type="checkbox" disabled> <p>Better implement the concept of contextual proximity to avoide overweighting certain concepts that occur too frequently, or to weed out useless edges. (<strong>Suggested by Luke Chesley</strong>)</p> </li>
</ul>
<h3>Front End</h3>
<ul>
<li><input type="checkbox" disabled> Create a Frontend for rendering Graph of Concepts in a more useful way. for example here is a flow. (<strong>Suggested by David Garcia on the <a href="https://medium.com/towards-data-science/how-to-convert-any-text-into-a-graph-of-concepts-110844f22a1a">Medium Article</a></strong>).
<ol>
<li>Provide a list concept/interest/topics</li>
<li>User selects what they're interested in</li>
<li>This expands to show sub-topics, sub-concepts, sub-x, etc.</li>
<li>This is how you get deep into a specialty</li>
</ol> </li>
</ul>
+
+
+ sugarforever/LangChain-Tutorials
+ 2023-12-24T01:53:16Z
+ tag:github.com,2023-12-24:/sugarforever/LangChain-Tutorials
+
+ <p></p><hr><h1>LangChain Tutorials</h1>
+
+
\ No newline at end of file
diff --git a/kaitai-struct/daily/index.xml b/kaitai-struct/daily/index.xml
index 570cec0bbcd..4980d9b8e88 100644
--- a/kaitai-struct/daily/index.xml
+++ b/kaitai-struct/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Kaitai Struct Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:31:51Z
+ 2023-12-24T01:36:00Z
Daily Trending of Kaitai Struct in GitHub
\ No newline at end of file
diff --git a/kaitai-struct/weekly/index.xml b/kaitai-struct/weekly/index.xml
new file mode 100644
index 00000000000..ce8c945c7b7
--- /dev/null
+++ b/kaitai-struct/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Kaitai Struct Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:11Z
+ Weekly Trending of Kaitai Struct in GitHub
+
+
\ No newline at end of file
diff --git a/kakounescript/daily/index.xml b/kakounescript/daily/index.xml
index 0532f0c3543..2e7223843ed 100644
--- a/kakounescript/daily/index.xml
+++ b/kakounescript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub KakouneScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:07Z
+ 2023-12-24T01:36:15Z
Daily Trending of KakouneScript in GitHub
\ No newline at end of file
diff --git a/kakounescript/weekly/index.xml b/kakounescript/weekly/index.xml
new file mode 100644
index 00000000000..8fb8c038c0a
--- /dev/null
+++ b/kakounescript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub KakouneScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:25Z
+ Weekly Trending of KakouneScript in GitHub
+
+
\ No newline at end of file
diff --git a/kicad-layout/daily/index.xml b/kicad-layout/daily/index.xml
index 3a16c2b8209..af4e2c1bcbe 100644
--- a/kicad-layout/daily/index.xml
+++ b/kicad-layout/daily/index.xml
@@ -1,7 +1,7 @@
GitHub KiCad Layout Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:08Z
+ 2023-12-24T01:36:17Z
Daily Trending of KiCad Layout in GitHub
\ No newline at end of file
diff --git a/kicad-layout/weekly/index.xml b/kicad-layout/weekly/index.xml
new file mode 100644
index 00000000000..8925c4799a8
--- /dev/null
+++ b/kicad-layout/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub KiCad Layout Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:27Z
+ Weekly Trending of KiCad Layout in GitHub
+
+
\ No newline at end of file
diff --git a/kicad-legacy-layout/daily/index.xml b/kicad-legacy-layout/daily/index.xml
index 71c9978e5b1..2f947751390 100644
--- a/kicad-legacy-layout/daily/index.xml
+++ b/kicad-legacy-layout/daily/index.xml
@@ -1,7 +1,7 @@
GitHub KiCad Legacy Layout Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:07Z
+ 2023-12-24T01:36:16Z
Daily Trending of KiCad Legacy Layout in GitHub
\ No newline at end of file
diff --git a/kicad-legacy-layout/weekly/index.xml b/kicad-legacy-layout/weekly/index.xml
new file mode 100644
index 00000000000..134e3be4766
--- /dev/null
+++ b/kicad-legacy-layout/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub KiCad Legacy Layout Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:26Z
+ Weekly Trending of KiCad Legacy Layout in GitHub
+
+
\ No newline at end of file
diff --git a/kicad-schematic/daily/index.xml b/kicad-schematic/daily/index.xml
index 756178d2729..de2aa6af33a 100644
--- a/kicad-schematic/daily/index.xml
+++ b/kicad-schematic/daily/index.xml
@@ -1,7 +1,7 @@
GitHub KiCad Schematic Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:11Z
+ 2023-12-24T01:36:18Z
Daily Trending of KiCad Schematic in GitHub
\ No newline at end of file
diff --git a/kicad-schematic/weekly/index.xml b/kicad-schematic/weekly/index.xml
new file mode 100644
index 00000000000..f7ea5687151
--- /dev/null
+++ b/kicad-schematic/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub KiCad Schematic Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:29Z
+ Weekly Trending of KiCad Schematic in GitHub
+
+
\ No newline at end of file
diff --git a/kit/daily/index.xml b/kit/daily/index.xml
index a596299cdf5..f5136e267ff 100644
--- a/kit/daily/index.xml
+++ b/kit/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Kit Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:12Z
+ 2023-12-24T01:36:21Z
Daily Trending of Kit in GitHub
\ No newline at end of file
diff --git a/kit/weekly/index.xml b/kit/weekly/index.xml
new file mode 100644
index 00000000000..165fcbf7b8e
--- /dev/null
+++ b/kit/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Kit Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:31Z
+ Weekly Trending of Kit in GitHub
+
+
\ No newline at end of file
diff --git a/kotlin/daily/index.xml b/kotlin/daily/index.xml
index 03de5fd2df4..01a5eb224f0 100644
--- a/kotlin/daily/index.xml
+++ b/kotlin/daily/index.xml
@@ -1,21 +1,7 @@
GitHub Kotlin Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:15Z
+ 2023-12-24T01:36:21Z
Daily Trending of Kotlin in GitHub
-
- chouaibMo/ChatGemini
- 2023-12-23T01:32:15Z
- tag:github.com,2023-12-23:/chouaibMo/ChatGemini
-
- <p>A multiplatform chatbot app (Android, iOS and Desktop) built with Compose Multiplatform and powered by Gemini Pro API.</p><hr><h1 align="center"> ChatGEMINI 📲</h1>
<p> <img src="https://raw.githubusercontent.com/chouaibMo/ChatGemini/main/screenshots/cover.png" alt="cover"> </p>
<h2>💡 Description</h2>
<p>A chatbot multiplatform app (Android, iOS and Desktop) built with Compose Multiplatform and powered by <a href="https://ai.google.dev/docs">Gemini Pro API</a>.</p>
<h2>📱 Supported platforms</h2>
<p>this project supports the following platforms:</p>
<ul>
<li>Android</li>
<li>iOS</li>
<li>Desktop (Linux, macOS, Windows)</li>
</ul>
<p>Browser support is not available yet. It will be added in the future. Note: the project is still in development and not all features are available on all platforms.</p>
<h2>⚙️ Before you Start</h2>
<p>Before you run the project, you need to get an API key from <a href="https://ai.google.dev">https://ai.google.dev</a> in order to communicate with the Gemini API. Once the key is obtained, assign it the the constant <code>API_KEY</code> in the <code>GeminiService.kt</code> file:</p>
<pre><code class="language-kotlin">const val API_KEY = "YOUR_API_KEY"
</code></pre>
<h2>🤝 Contribution</h2>
<p>Most of the features are not completed except the chat feature, so anyone can contribute and improve this project.</p>
<h2>💙 Find this repository useful?</h2>
<p>Support it by staring and sharing it <span>⭐</span></p>
<h1>License</h1>
<pre><code class="language-xml">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
http://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.
</code></pre>
-
-
- keepalivedev/KeepAlive
- 2023-12-23T01:32:15Z
- tag:github.com,2023-12-23:/keepalivedev/KeepAlive
-
- <p>Android app to notify others if you haven't used your device in a given period of time.</p><hr><h1>Keep Alive</h1>
<p>Keep Alive will send a custom message via SMS to one or more people if you haven't used your device in a given period of time. Intended to be used as a failsafe for those living alone in case of an accident or other emergency. Once the settings are configured, no further interaction is required.</p>
<p><a href="https://play.google.com/store/apps/details?id=io.keepalive.android"><img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" alt="Get it on Google Play" height="80"></a> <a href="https://f-droid.org/packages/io.keepalive.android/"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80"></a></p>
<h2>How it Works</h2>
<p>Keep Alive uses your device's lock screen to detect activity. If your device hasn't been locked or unlocked within a set period of time, you will be prompted with an 'Are you there?' notification. If this notification is not acknowledged an Alert will be triggered. Based on the configured Emergency Contact Settings, one or more SMS messages and/or a phone call will be placed to notify others that you may be in need of assistance. If enabled, a second SMS will be sent with location information to aid others in locating you.</p>
<h2>Features</h2>
<ul>
<li>100% Device-based, no cloud services or accounts required</li>
<li>Free with no ads or trackers</li>
<li>Minimal Battery Usage</li>
<li>Multiple SMS Recipients</li>
<li>Custom Alert Messages</li>
<li>Optional: Include Location Information in SMS</li>
<li>Optional: Place a phone call with speakerphone enabled</li>
</ul>
<h2>Requirements</h2>
<ul>
<li><strong>Lock Screen</strong> - used to detect when the device was last used</li>
<li><strong>Active SIM</strong> - used to send SMS and place phone calls
<ul>
<li>WiFi calling and messaging will be used if the device supports it</li>
</ul> </li>
</ul>
<h2>Main Settings</h2>
<ul>
<li><strong>Hours of Inactivity Before Prompt</strong>
<ul>
<li>How many hours since your phone was last locked or unlocked before you are prompted with an 'Are you there?' notification</li>
<li>May be delayed up to an hour by the OS if the device has low power or is in DnD mode</li>
<li>Default is 12 hours</li>
</ul> </li>
<li><strong>Minutes to Wait</strong>
<ul>
<li>If the 'Are you there?' prompt is not acknowledged within this time, an Alert will be sent</li>
<li>Will not be delayed</li>
<li>Default is 60 minutes</li>
</ul> </li>
</ul>
<h2>Emergency Contact Settings</h2>
<ul>
<li><strong>SMS Contact(s)</strong>:
<ul>
<li><strong>Phone Number</strong>: the phone number to send the Alert SMS to</li>
<li><strong>Alert Message</strong>: the message that will be sent when an Alert is triggered</li>
<li><strong>Include Location</strong>: if enabled, your location will be included in a second SMS</li>
</ul> </li>
<li><strong>Phone Call (Optional)</strong>:
<ul>
<li><strong>Phone Number</strong>: when an Alert is triggered a phone call will be placed to this number with speakerphone enabled</li>
</ul> </li>
</ul>
<h2>Permissions</h2>
<p>Keep Alive requires the following permissions to operate properly:</p>
<ul>
<li><strong>Usage Stats</strong>: Used to determine when your phone was last used by checking for lock and unlock events</li>
<li><strong>Schedule Exact Alarms</strong>: Needed to ensure that we can set alarms that go off even when the device is idle or in Do-Not-Disturb mode</li>
<li><strong>Send SMS</strong>: Used to send SMS messages to your emergency contact(s)</li>
<li><strong>Send Notifications</strong>: Used to display the 'Are you there?' and 'Alert triggered' notifications</li>
</ul>
<h3>Optional Permissions</h3>
<p>If Include Location is enabled:</p>
<ul>
<li><strong>Precise Location</strong>: Necessary so that we have the most accurate location information to share with your emergency contacts</li>
<li><strong>Background Location</strong>: Necessary to be able to get location information when the device is idle</li>
</ul>
<p>If a Phone Call number is configured:</p>
<ul>
<li><strong>Make and Manage Calls</strong>: Basic permission to make phone calls</li>
<li><strong>Manage Overlays</strong>: Necessary to be able to make phone calls when the device is idle</li>
</ul>
<h2>App Restrictions / App Hibernation</h2>
<p>Android now automatically removes permissions for apps that have not been used recently. Keep Alive, once the settings are configured, does not need any further interaction and may have its permissions revoked, possibly preventing it from sending an Alert. Keep Alive was designed to operate as unobtrusively as possible and, as an alternative to bugging the user to open the app periodically, expects this behavior to be disabled. On the most recent version of Android this is called 'Pause app activity if unused' and can be found on the App Info screen for Keep Alive.</p>
<h2>Why?</h2>
<p>Keep Alive was created after separate incidents with colleagues who lived alone and lost consciousness at home. One was found within 24 hours by a concerned friend doing a welfare check and was saved, albeit not unscathed. The other was not discovered for more than 36 hours and sadly succumbed to his injuries after several days in the ICU. If they had been found even a few hours sooner, things may have turned out differently. I am hoping that this app can help prevent similar tragedies in the future.</p>
<h2>Disclaimer</h2>
<ul>
<li>Not responsible for SMS or phone call charges incurred by the use of the Keep Alive app</li>
<li>Keep Alive is not a substitute for professional healthcare or emergency services. Users should always seek professional advice in situations that require medical attention or emergency services.</li>
<li>The operation of the Keep Alive app is dependent on the device, software, and network connectivity. The developers are not responsible for any failure due to device malfunctions, software incompatibilities, or network issues.</li>
</ul>
-
\ No newline at end of file
diff --git a/kotlin/weekly/index.xml b/kotlin/weekly/index.xml
new file mode 100644
index 00000000000..4567f566287
--- /dev/null
+++ b/kotlin/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Kotlin Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:34Z
+ Weekly Trending of Kotlin in GitHub
+
+
+ google/generative-ai-android
+ 2023-12-24T01:53:34Z
+ tag:github.com,2023-12-24:/google/generative-ai-android
+
+ <p>Google AI SDK for Android</p><hr><h1>Google AI SDK for Android</h1>
<p>The Google AI client SDK for Android enables developers to use Google's state-of-the-art generative AI models (like Gemini) to build AI-powered features and applications. This SDK supports use cases like:</p>
<ul>
<li>Generate text from text-only input</li>
<li>Generate text from text-and-images input (multimodal)</li>
<li>Build multi-turn conversations (chat)</li>
</ul>
<p>For example, with just a few lines of code, you can access Gemini's multimodal capabilities to generate text from text-and-image input:</p>
<pre><code class="language-kotlin">val generativeModel = GenerativeModel(
modelName = "gemini-pro-vision",
apiKey = BuildConfig.apiKey
)
val cookieImage: Bitmap = // ...
val inputContent = content() {
image(cookieImage)
text("Does this look store-bought or homemade?")
}
val response = generativeModel.generateContent(inputContent)
print(response.text)
</code></pre>
<blockquote>
<p>[!NOTE] If you want to access Gemini on-device (Gemini Nano), check out the <a href="https://ai.google.dev/tutorials/android_aicore">Google AI Edge SDK for Android</a>, which is enabled via Android AICore.</p>
</blockquote>
<h2>Try out the sample Android app</h2>
<p>This repository contains a sample app demonstrating how the SDK can access and utilize the Gemini model for various use cases.</p>
<p>To try out the sample app you can directly import the project from Android Studio via <strong>File > New > Import Sample</strong> and searching for <em>Generative AI Sample</em> or follow these steps below:</p>
<ol>
<li> <p>Check out this repository.<br> <code>git clone https://github.com/google/generative-ai-android</code></p> </li>
<li> <p><a href="https://makersuite.google.com/app/apikey">Obtain an API key</a> to use with the Google AI SDKs.</p> </li>
<li> <p>Open and build the sample app in the <code>generativeai-android-sample</code> folder of this repo.</p> </li>
<li> <p>Paste your API key into the <code>apiKey</code> property in the <code>local.properties</code> file.</p> </li>
<li> <p>Run the app.</p> </li>
</ol>
<h2>Installation and usage</h2>
<p>Add the dependency <code>implementation("com.google.ai.client.generativeai:generativeai:<version>"</code>) to your Android project.</p>
<p>For detailed instructions, you can find a <a href="https://ai.google.dev/tutorials/android_quickstart">quickstart</a> for the Google AI client SDK for Android in the Google documentation.</p>
<p>This quickstart describes how to add your API key and the SDK's dependency to your app, initialize the model, and then call the API to access the model. It also describes some additional use cases and features, like streaming, counting tokens, and controlling responses.</p>
<h2>Documentation</h2>
<p>Find complete documentation for the Google AI SDKs and the Gemini model in the Google documentation:<br> <a href="https://ai.google.dev/docs">https://ai.google.dev/docs</a></p>
<h2>Contributing</h2>
<p>See <a href="https://github.com/google/generative-ai-android/raw/main/CONTRIBUTING.md">Contributing</a> for more information on contributing to the Google AI client SDK for Android.</p>
<h2>License</h2>
<p>The contents of this repository are licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.</p>
+
+
+ SagerNet/sing-box-for-android
+ 2023-12-24T01:53:34Z
+ tag:github.com,2023-12-24:/SagerNet/sing-box-for-android
+
+ <p>Experimental Android client for sing-box</p><hr><h1>SFA</h1>
<p>Experimental Android client for sing-box, the universal proxy platform.</p>
<h2>Documentation</h2>
<p><a href="https://sing-box.sagernet.org/installation/clients/sfa/">https://sing-box.sagernet.org/installation/clients/sfa/</a></p>
<h2>License</h2>
<pre><code>Copyright (C) 2022 by nekohasekai <contact-sagernet@sekai.icu>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
In addition, no derivative work may use the name or imply association
with this application without prior consent.
</code></pre>
<p>Under the license, that forks of the app are not allowed to be listed on F-Droid or other app stores under the original name.</p>
+
+
\ No newline at end of file
diff --git a/krl/daily/index.xml b/krl/daily/index.xml
index 91b299d24c8..d82239f61f1 100644
--- a/krl/daily/index.xml
+++ b/krl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub KRL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:23Z
+ 2023-12-24T01:36:27Z
Daily Trending of KRL in GitHub
\ No newline at end of file
diff --git a/krl/weekly/index.xml b/krl/weekly/index.xml
new file mode 100644
index 00000000000..b800527c7dd
--- /dev/null
+++ b/krl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub KRL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:40Z
+ Weekly Trending of KRL in GitHub
+
+
\ No newline at end of file
diff --git a/kusto/daily/index.xml b/kusto/daily/index.xml
index 19d6ddd19df..8fb6be7a59a 100644
--- a/kusto/daily/index.xml
+++ b/kusto/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Kusto Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:24Z
+ 2023-12-24T01:36:29Z
Daily Trending of Kusto in GitHub
\ No newline at end of file
diff --git a/kusto/weekly/index.xml b/kusto/weekly/index.xml
new file mode 100644
index 00000000000..10cc5bbdbb5
--- /dev/null
+++ b/kusto/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Kusto Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:42Z
+ Weekly Trending of Kusto in GitHub
+
+
\ No newline at end of file
diff --git a/kvlang/daily/index.xml b/kvlang/daily/index.xml
index 002785d55b9..d125afe47e9 100644
--- a/kvlang/daily/index.xml
+++ b/kvlang/daily/index.xml
@@ -1,7 +1,7 @@
GitHub kvlang Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:24Z
+ 2023-12-24T01:36:29Z
Daily Trending of kvlang in GitHub
\ No newline at end of file
diff --git a/kvlang/weekly/index.xml b/kvlang/weekly/index.xml
new file mode 100644
index 00000000000..627626abd54
--- /dev/null
+++ b/kvlang/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub kvlang Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:41Z
+ Weekly Trending of kvlang in GitHub
+
+
\ No newline at end of file
diff --git a/labview/daily/index.xml b/labview/daily/index.xml
index 84473525f93..e7a2495a7b6 100644
--- a/labview/daily/index.xml
+++ b/labview/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LabVIEW Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:22Z
+ 2023-12-24T01:36:28Z
Daily Trending of LabVIEW in GitHub
\ No newline at end of file
diff --git a/labview/weekly/index.xml b/labview/weekly/index.xml
new file mode 100644
index 00000000000..bded31885ef
--- /dev/null
+++ b/labview/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LabVIEW Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:42Z
+ Weekly Trending of LabVIEW in GitHub
+
+
\ No newline at end of file
diff --git a/lark/daily/index.xml b/lark/daily/index.xml
index ac22e4b415e..93876df0958 100644
--- a/lark/daily/index.xml
+++ b/lark/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Lark Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:27Z
+ 2023-12-24T01:36:30Z
Daily Trending of Lark in GitHub
\ No newline at end of file
diff --git a/lark/weekly/index.xml b/lark/weekly/index.xml
new file mode 100644
index 00000000000..9f04b7066c4
--- /dev/null
+++ b/lark/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Lark Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:44Z
+ Weekly Trending of Lark in GitHub
+
+
\ No newline at end of file
diff --git a/lasso/daily/index.xml b/lasso/daily/index.xml
index 9c1c941fda3..877e17f0ceb 100644
--- a/lasso/daily/index.xml
+++ b/lasso/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Lasso Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:26Z
+ 2023-12-24T01:36:32Z
Daily Trending of Lasso in GitHub
\ No newline at end of file
diff --git a/lasso/weekly/index.xml b/lasso/weekly/index.xml
new file mode 100644
index 00000000000..052933e1ab0
--- /dev/null
+++ b/lasso/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Lasso Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:46Z
+ Weekly Trending of Lasso in GitHub
+
+
\ No newline at end of file
diff --git a/latte/daily/index.xml b/latte/daily/index.xml
index dad7b6d3fcf..09001a7b656 100644
--- a/latte/daily/index.xml
+++ b/latte/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Latte Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:26Z
+ 2023-12-24T01:36:31Z
Daily Trending of Latte in GitHub
\ No newline at end of file
diff --git a/latte/weekly/index.xml b/latte/weekly/index.xml
new file mode 100644
index 00000000000..3a1f9f2a023
--- /dev/null
+++ b/latte/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Latte Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:44Z
+ Weekly Trending of Latte in GitHub
+
+
\ No newline at end of file
diff --git a/lean/daily/index.xml b/lean/daily/index.xml
index 4be10e4e130..cc5288f64ce 100644
--- a/lean/daily/index.xml
+++ b/lean/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Lean Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:28Z
+ 2023-12-24T01:36:33Z
Daily Trending of Lean in GitHub
-
- leanprover-community/lean-graph
- 2023-12-23T01:32:28Z
- tag:github.com,2023-12-23:/leanprover-community/lean-graph
-
- <p></p><hr>
-
\ No newline at end of file
diff --git a/lean/weekly/index.xml b/lean/weekly/index.xml
new file mode 100644
index 00000000000..7c6605336b5
--- /dev/null
+++ b/lean/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Lean Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:46Z
+ Weekly Trending of Lean in GitHub
+
+
\ No newline at end of file
diff --git a/less/daily/index.xml b/less/daily/index.xml
index 550178778be..2caa98f735c 100644
--- a/less/daily/index.xml
+++ b/less/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Less Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:32Z
+ 2023-12-24T01:36:36Z
Daily Trending of Less in GitHub
\ No newline at end of file
diff --git a/less/weekly/index.xml b/less/weekly/index.xml
new file mode 100644
index 00000000000..043e8da61a3
--- /dev/null
+++ b/less/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Less Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:51Z
+ Weekly Trending of Less in GitHub
+
+
\ No newline at end of file
diff --git a/lex/daily/index.xml b/lex/daily/index.xml
index 152e7120e24..90597ede929 100644
--- a/lex/daily/index.xml
+++ b/lex/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Lex Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:30Z
+ 2023-12-24T01:36:35Z
Daily Trending of Lex in GitHub
\ No newline at end of file
diff --git a/lex/weekly/index.xml b/lex/weekly/index.xml
new file mode 100644
index 00000000000..1a661934a74
--- /dev/null
+++ b/lex/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Lex Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:50Z
+ Weekly Trending of Lex in GitHub
+
+
\ No newline at end of file
diff --git a/lfe/daily/index.xml b/lfe/daily/index.xml
index cb5cfa04c0c..b3f7b169de4 100644
--- a/lfe/daily/index.xml
+++ b/lfe/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LFE Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:30Z
+ 2023-12-24T01:36:34Z
Daily Trending of LFE in GitHub
\ No newline at end of file
diff --git a/lfe/weekly/index.xml b/lfe/weekly/index.xml
new file mode 100644
index 00000000000..e35f5749341
--- /dev/null
+++ b/lfe/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LFE Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:49Z
+ Weekly Trending of LFE in GitHub
+
+
\ No newline at end of file
diff --git a/ligolang/daily/index.xml b/ligolang/daily/index.xml
index 5d2239769b4..28443445a63 100644
--- a/ligolang/daily/index.xml
+++ b/ligolang/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LigoLANG Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:33Z
+ 2023-12-24T01:36:38Z
Daily Trending of LigoLANG in GitHub
\ No newline at end of file
diff --git a/ligolang/weekly/index.xml b/ligolang/weekly/index.xml
new file mode 100644
index 00000000000..80f602d8309
--- /dev/null
+++ b/ligolang/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LigoLANG Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:53Z
+ Weekly Trending of LigoLANG in GitHub
+
+
\ No newline at end of file
diff --git a/lilypond/daily/index.xml b/lilypond/daily/index.xml
index 26c2910d2a7..f5afdc24197 100644
--- a/lilypond/daily/index.xml
+++ b/lilypond/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LilyPond Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:34Z
+ 2023-12-24T01:36:39Z
Daily Trending of LilyPond in GitHub
\ No newline at end of file
diff --git a/lilypond/weekly/index.xml b/lilypond/weekly/index.xml
new file mode 100644
index 00000000000..29fb50821dd
--- /dev/null
+++ b/lilypond/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LilyPond Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:54Z
+ Weekly Trending of LilyPond in GitHub
+
+
\ No newline at end of file
diff --git a/limbo/daily/index.xml b/limbo/daily/index.xml
index 993534f314d..02e3399432d 100644
--- a/limbo/daily/index.xml
+++ b/limbo/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Limbo Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:35Z
+ 2023-12-24T01:36:39Z
Daily Trending of Limbo in GitHub
\ No newline at end of file
diff --git a/limbo/weekly/index.xml b/limbo/weekly/index.xml
new file mode 100644
index 00000000000..feaeaad6570
--- /dev/null
+++ b/limbo/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Limbo Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:52Z
+ Weekly Trending of Limbo in GitHub
+
+
\ No newline at end of file
diff --git a/linker-script/daily/index.xml b/linker-script/daily/index.xml
index 0dbe55dde40..6e233206da9 100644
--- a/linker-script/daily/index.xml
+++ b/linker-script/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Linker Script Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:36Z
+ 2023-12-24T01:36:37Z
Daily Trending of Linker Script in GitHub
\ No newline at end of file
diff --git a/linker-script/weekly/index.xml b/linker-script/weekly/index.xml
new file mode 100644
index 00000000000..fa8570d07c1
--- /dev/null
+++ b/linker-script/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Linker Script Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:55Z
+ Weekly Trending of Linker Script in GitHub
+
+
\ No newline at end of file
diff --git a/linux-kernel-module/daily/index.xml b/linux-kernel-module/daily/index.xml
index 08511171a65..a2b08400fd0 100644
--- a/linux-kernel-module/daily/index.xml
+++ b/linux-kernel-module/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Linux Kernel Module Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:37Z
+ 2023-12-24T01:36:43Z
Daily Trending of Linux Kernel Module in GitHub
\ No newline at end of file
diff --git a/linux-kernel-module/weekly/index.xml b/linux-kernel-module/weekly/index.xml
new file mode 100644
index 00000000000..f0c69cbd2a1
--- /dev/null
+++ b/linux-kernel-module/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Linux Kernel Module Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:56Z
+ Weekly Trending of Linux Kernel Module in GitHub
+
+
\ No newline at end of file
diff --git a/liquid/daily/index.xml b/liquid/daily/index.xml
index f6a601b54d8..6c3c218bea4 100644
--- a/liquid/daily/index.xml
+++ b/liquid/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Liquid Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:40Z
+ 2023-12-24T01:36:41Z
Daily Trending of Liquid in GitHub
\ No newline at end of file
diff --git a/liquid/weekly/index.xml b/liquid/weekly/index.xml
new file mode 100644
index 00000000000..a8214082b05
--- /dev/null
+++ b/liquid/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Liquid Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:58Z
+ Weekly Trending of Liquid in GitHub
+
+
\ No newline at end of file
diff --git a/literate-agda/daily/index.xml b/literate-agda/daily/index.xml
index 7e469c2c71f..767ca4c491e 100644
--- a/literate-agda/daily/index.xml
+++ b/literate-agda/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Literate Agda Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:39Z
+ 2023-12-24T01:36:41Z
Daily Trending of Literate Agda in GitHub
\ No newline at end of file
diff --git a/literate-agda/weekly/index.xml b/literate-agda/weekly/index.xml
new file mode 100644
index 00000000000..fbbfdf09b11
--- /dev/null
+++ b/literate-agda/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Literate Agda Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:59Z
+ Weekly Trending of Literate Agda in GitHub
+
+
\ No newline at end of file
diff --git a/literate-coffeescript/daily/index.xml b/literate-coffeescript/daily/index.xml
index d3579e9d850..f5f957788ea 100644
--- a/literate-coffeescript/daily/index.xml
+++ b/literate-coffeescript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Literate CoffeeScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:38Z
+ 2023-12-24T01:36:42Z
Daily Trending of Literate CoffeeScript in GitHub
\ No newline at end of file
diff --git a/literate-coffeescript/weekly/index.xml b/literate-coffeescript/weekly/index.xml
new file mode 100644
index 00000000000..ea968ebd98b
--- /dev/null
+++ b/literate-coffeescript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Literate CoffeeScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:53:57Z
+ Weekly Trending of Literate CoffeeScript in GitHub
+
+
\ No newline at end of file
diff --git a/literate-haskell/daily/index.xml b/literate-haskell/daily/index.xml
index e5e237e1e71..3a254645c69 100644
--- a/literate-haskell/daily/index.xml
+++ b/literate-haskell/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Literate Haskell Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:42Z
+ 2023-12-24T01:36:44Z
Daily Trending of Literate Haskell in GitHub
\ No newline at end of file
diff --git a/literate-haskell/weekly/index.xml b/literate-haskell/weekly/index.xml
new file mode 100644
index 00000000000..25223ee6a57
--- /dev/null
+++ b/literate-haskell/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Literate Haskell Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:00Z
+ Weekly Trending of Literate Haskell in GitHub
+
+
\ No newline at end of file
diff --git a/livescript/daily/index.xml b/livescript/daily/index.xml
index c300d2416de..e7d78e0b343 100644
--- a/livescript/daily/index.xml
+++ b/livescript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LiveScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:41Z
+ 2023-12-24T01:36:46Z
Daily Trending of LiveScript in GitHub
\ No newline at end of file
diff --git a/livescript/weekly/index.xml b/livescript/weekly/index.xml
new file mode 100644
index 00000000000..60910249be1
--- /dev/null
+++ b/livescript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LiveScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:01Z
+ Weekly Trending of LiveScript in GitHub
+
+
\ No newline at end of file
diff --git a/llvm/daily/index.xml b/llvm/daily/index.xml
index 0ec2a32a55d..a3085b067f1 100644
--- a/llvm/daily/index.xml
+++ b/llvm/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LLVM Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:44Z
+ 2023-12-24T01:36:45Z
Daily Trending of LLVM in GitHub
\ No newline at end of file
diff --git a/llvm/weekly/index.xml b/llvm/weekly/index.xml
new file mode 100644
index 00000000000..911787479fb
--- /dev/null
+++ b/llvm/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LLVM Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:02Z
+ Weekly Trending of LLVM in GitHub
+
+
\ No newline at end of file
diff --git a/logos/daily/index.xml b/logos/daily/index.xml
index a57b0f80a09..3da1a08f678 100644
--- a/logos/daily/index.xml
+++ b/logos/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Logos Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:43Z
+ 2023-12-24T01:36:46Z
Daily Trending of Logos in GitHub
-
- beeper/phone-registration-provider
- 2023-12-23T01:32:43Z
- tag:github.com,2023-12-23:/beeper/phone-registration-provider
-
- <p>A small service that generates iMessage registration data on a jailbroken iPhone</p><hr>
-
\ No newline at end of file
diff --git a/logos/weekly/index.xml b/logos/weekly/index.xml
new file mode 100644
index 00000000000..7e91576698c
--- /dev/null
+++ b/logos/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Logos Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:03Z
+ Weekly Trending of Logos in GitHub
+
+
\ No newline at end of file
diff --git a/logtalk/daily/index.xml b/logtalk/daily/index.xml
index 01ac3a3c375..8174c902e3e 100644
--- a/logtalk/daily/index.xml
+++ b/logtalk/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Logtalk Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:46Z
+ 2023-12-24T01:36:47Z
Daily Trending of Logtalk in GitHub
\ No newline at end of file
diff --git a/logtalk/weekly/index.xml b/logtalk/weekly/index.xml
new file mode 100644
index 00000000000..b70949d7af1
--- /dev/null
+++ b/logtalk/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Logtalk Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:07Z
+ Weekly Trending of Logtalk in GitHub
+
+
\ No newline at end of file
diff --git a/lolcode/daily/index.xml b/lolcode/daily/index.xml
index ea2733bbebc..03184920418 100644
--- a/lolcode/daily/index.xml
+++ b/lolcode/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LOLCODE Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:45Z
+ 2023-12-24T01:36:48Z
Daily Trending of LOLCODE in GitHub
\ No newline at end of file
diff --git a/lolcode/weekly/index.xml b/lolcode/weekly/index.xml
new file mode 100644
index 00000000000..f12ecae2e5e
--- /dev/null
+++ b/lolcode/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LOLCODE Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:05Z
+ Weekly Trending of LOLCODE in GitHub
+
+
\ No newline at end of file
diff --git a/lookml/daily/index.xml b/lookml/daily/index.xml
index 4e14d3568cc..5de0c6de23d 100644
--- a/lookml/daily/index.xml
+++ b/lookml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LookML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:48Z
+ 2023-12-24T01:36:50Z
Daily Trending of LookML in GitHub
\ No newline at end of file
diff --git a/lookml/weekly/index.xml b/lookml/weekly/index.xml
new file mode 100644
index 00000000000..8126302eacf
--- /dev/null
+++ b/lookml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LookML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:06Z
+ Weekly Trending of LookML in GitHub
+
+
\ No newline at end of file
diff --git a/loomscript/daily/index.xml b/loomscript/daily/index.xml
index 78297fd9c98..f4b8f32087b 100644
--- a/loomscript/daily/index.xml
+++ b/loomscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LoomScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:47Z
+ 2023-12-24T01:36:49Z
Daily Trending of LoomScript in GitHub
\ No newline at end of file
diff --git a/loomscript/weekly/index.xml b/loomscript/weekly/index.xml
new file mode 100644
index 00000000000..7b906b4e7e6
--- /dev/null
+++ b/loomscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LoomScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:04Z
+ Weekly Trending of LoomScript in GitHub
+
+
\ No newline at end of file
diff --git a/lsl/daily/index.xml b/lsl/daily/index.xml
index adee71a2c1a..261168edcd7 100644
--- a/lsl/daily/index.xml
+++ b/lsl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LSL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:50Z
+ 2023-12-24T01:36:51Z
Daily Trending of LSL in GitHub
\ No newline at end of file
diff --git a/lsl/weekly/index.xml b/lsl/weekly/index.xml
new file mode 100644
index 00000000000..98a8122cfb0
--- /dev/null
+++ b/lsl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LSL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:08Z
+ Weekly Trending of LSL in GitHub
+
+
\ No newline at end of file
diff --git a/ltspice-symbol/daily/index.xml b/ltspice-symbol/daily/index.xml
index 1bc857255d6..e7189bebe57 100644
--- a/ltspice-symbol/daily/index.xml
+++ b/ltspice-symbol/daily/index.xml
@@ -1,7 +1,7 @@
GitHub LTspice Symbol Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:49Z
+ 2023-12-24T01:36:51Z
Daily Trending of LTspice Symbol in GitHub
\ No newline at end of file
diff --git a/ltspice-symbol/weekly/index.xml b/ltspice-symbol/weekly/index.xml
new file mode 100644
index 00000000000..390a26e09cd
--- /dev/null
+++ b/ltspice-symbol/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub LTspice Symbol Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:09Z
+ Weekly Trending of LTspice Symbol in GitHub
+
+
\ No newline at end of file
diff --git a/m/daily/index.xml b/m/daily/index.xml
index a93a2bab5f1..c441b0e3417 100644
--- a/m/daily/index.xml
+++ b/m/daily/index.xml
@@ -1,7 +1,7 @@
GitHub M Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:32:50Z
+ 2023-12-24T01:36:52Z
Daily Trending of M in GitHub
\ No newline at end of file
diff --git a/m/weekly/index.xml b/m/weekly/index.xml
new file mode 100644
index 00000000000..c3b47261224
--- /dev/null
+++ b/m/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub M Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:09Z
+ Weekly Trending of M in GitHub
+
+
\ No newline at end of file
diff --git a/m4/daily/index.xml b/m4/daily/index.xml
index 47576306d74..6b546f7c4c5 100644
--- a/m4/daily/index.xml
+++ b/m4/daily/index.xml
@@ -1,7 +1,7 @@
GitHub M4 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:08Z
+ 2023-12-24T01:37:04Z
Daily Trending of M4 in GitHub
\ No newline at end of file
diff --git a/m4/weekly/index.xml b/m4/weekly/index.xml
new file mode 100644
index 00000000000..b2ec3929ee6
--- /dev/null
+++ b/m4/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub M4 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:25Z
+ Weekly Trending of M4 in GitHub
+
+
\ No newline at end of file
diff --git a/m4sugar/daily/index.xml b/m4sugar/daily/index.xml
index 974f3ee042e..7d8cef84c03 100644
--- a/m4sugar/daily/index.xml
+++ b/m4sugar/daily/index.xml
@@ -1,7 +1,7 @@
GitHub M4Sugar Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:07Z
+ 2023-12-24T01:37:03Z
Daily Trending of M4Sugar in GitHub
\ No newline at end of file
diff --git a/m4sugar/weekly/index.xml b/m4sugar/weekly/index.xml
new file mode 100644
index 00000000000..f53b9de3b4f
--- /dev/null
+++ b/m4sugar/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub M4Sugar Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:26Z
+ Weekly Trending of M4Sugar in GitHub
+
+
\ No newline at end of file
diff --git a/macaulay2/daily/index.xml b/macaulay2/daily/index.xml
index 99530b3c851..e234f65b004 100644
--- a/macaulay2/daily/index.xml
+++ b/macaulay2/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Macaulay2 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:07Z
+ 2023-12-24T01:37:02Z
Daily Trending of Macaulay2 in GitHub
\ No newline at end of file
diff --git a/macaulay2/weekly/index.xml b/macaulay2/weekly/index.xml
new file mode 100644
index 00000000000..c148881214b
--- /dev/null
+++ b/macaulay2/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Macaulay2 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:24Z
+ Weekly Trending of Macaulay2 in GitHub
+
+
\ No newline at end of file
diff --git a/makefile/daily/index.xml b/makefile/daily/index.xml
index 2167f8e5809..cf17b667c50 100644
--- a/makefile/daily/index.xml
+++ b/makefile/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Makefile Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:11Z
+ 2023-12-24T01:37:06Z
Daily Trending of Makefile in GitHub
\ No newline at end of file
diff --git a/makefile/weekly/index.xml b/makefile/weekly/index.xml
new file mode 100644
index 00000000000..7afd19831c7
--- /dev/null
+++ b/makefile/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Makefile Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:28Z
+ Weekly Trending of Makefile in GitHub
+
+
+ marcpaterno/spack_retreat
+ 2023-12-24T01:54:28Z
+ tag:github.com,2023-12-24:/marcpaterno/spack_retreat
+
+ <p>Working repo for spack retreat</p><hr>
+
+
\ No newline at end of file
diff --git a/mako/daily/index.xml b/mako/daily/index.xml
index 8f9617d307e..b95ae98b46c 100644
--- a/mako/daily/index.xml
+++ b/mako/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Mako Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:14Z
+ 2023-12-24T01:37:07Z
Daily Trending of Mako in GitHub
\ No newline at end of file
diff --git a/mako/weekly/index.xml b/mako/weekly/index.xml
new file mode 100644
index 00000000000..fcf43b3a010
--- /dev/null
+++ b/mako/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Mako Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:30Z
+ Weekly Trending of Mako in GitHub
+
+
\ No newline at end of file
diff --git a/markdown/daily/index.xml b/markdown/daily/index.xml
index 281d6f58c39..427546ea065 100644
--- a/markdown/daily/index.xml
+++ b/markdown/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Markdown Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:16Z
+ 2023-12-24T01:37:10Z
Daily Trending of Markdown in GitHub
\ No newline at end of file
diff --git a/markdown/weekly/index.xml b/markdown/weekly/index.xml
new file mode 100644
index 00000000000..1975a3c843f
--- /dev/null
+++ b/markdown/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Markdown Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:33Z
+ Weekly Trending of Markdown in GitHub
+
+
\ No newline at end of file
diff --git a/marko/daily/index.xml b/marko/daily/index.xml
index a1ad4f6327f..0dd9daf8689 100644
--- a/marko/daily/index.xml
+++ b/marko/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Marko Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:13Z
+ 2023-12-24T01:37:08Z
Daily Trending of Marko in GitHub
\ No newline at end of file
diff --git a/marko/weekly/index.xml b/marko/weekly/index.xml
new file mode 100644
index 00000000000..a7dbd9f5ae7
--- /dev/null
+++ b/marko/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Marko Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:31Z
+ Weekly Trending of Marko in GitHub
+
+
\ No newline at end of file
diff --git a/mask/daily/index.xml b/mask/daily/index.xml
index 2c5136d7776..8da1a4bf6df 100644
--- a/mask/daily/index.xml
+++ b/mask/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Mask Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:12Z
+ 2023-12-24T01:37:09Z
Daily Trending of Mask in GitHub
\ No newline at end of file
diff --git a/mask/weekly/index.xml b/mask/weekly/index.xml
new file mode 100644
index 00000000000..34256460510
--- /dev/null
+++ b/mask/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Mask Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:29Z
+ Weekly Trending of Mask in GitHub
+
+
\ No newline at end of file
diff --git a/mathematica/daily/index.xml b/mathematica/daily/index.xml
index 4da57c70f67..6d44d40d001 100644
--- a/mathematica/daily/index.xml
+++ b/mathematica/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Mathematica Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:19Z
+ 2023-12-24T01:37:12Z
Daily Trending of Mathematica in GitHub
\ No newline at end of file
diff --git a/mathematica/weekly/index.xml b/mathematica/weekly/index.xml
new file mode 100644
index 00000000000..b2b2895b7be
--- /dev/null
+++ b/mathematica/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Mathematica Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:36Z
+ Weekly Trending of Mathematica in GitHub
+
+
\ No newline at end of file
diff --git a/matlab/daily/index.xml b/matlab/daily/index.xml
index 2d302a367f2..4b55dc05ff9 100644
--- a/matlab/daily/index.xml
+++ b/matlab/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MATLAB Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:21Z
+ 2023-12-24T01:37:14Z
Daily Trending of MATLAB in GitHub
\ No newline at end of file
diff --git a/matlab/weekly/index.xml b/matlab/weekly/index.xml
new file mode 100644
index 00000000000..b4e672b7380
--- /dev/null
+++ b/matlab/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub MATLAB Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:38Z
+ Weekly Trending of MATLAB in GitHub
+
+
+ iconokat/Worm-Analysis
+ 2023-12-24T01:54:38Z
+ tag:github.com,2023-12-24:/iconokat/Worm-Analysis
+
+ <p>Codes that I use to analyze and transform data from C. elegans</p><hr>
+
+
\ No newline at end of file
diff --git a/maven-pom/daily/index.xml b/maven-pom/daily/index.xml
index 38c603d556d..802a92f303c 100644
--- a/maven-pom/daily/index.xml
+++ b/maven-pom/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Maven POM Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:19Z
+ 2023-12-24T01:37:11Z
Daily Trending of Maven POM in GitHub
\ No newline at end of file
diff --git a/maven-pom/weekly/index.xml b/maven-pom/weekly/index.xml
new file mode 100644
index 00000000000..a05c6aed9dd
--- /dev/null
+++ b/maven-pom/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Maven POM Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:34Z
+ Weekly Trending of Maven POM in GitHub
+
+
\ No newline at end of file
diff --git a/max/daily/index.xml b/max/daily/index.xml
index e55f6616955..a473746e5a6 100644
--- a/max/daily/index.xml
+++ b/max/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Max Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:17Z
+ 2023-12-24T01:37:13Z
Daily Trending of Max in GitHub
\ No newline at end of file
diff --git a/max/weekly/index.xml b/max/weekly/index.xml
new file mode 100644
index 00000000000..7e851e90c61
--- /dev/null
+++ b/max/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Max Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:36Z
+ Weekly Trending of Max in GitHub
+
+
\ No newline at end of file
diff --git a/maxscript/daily/index.xml b/maxscript/daily/index.xml
index 4865f237785..d81b358b20b 100644
--- a/maxscript/daily/index.xml
+++ b/maxscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MAXScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:23Z
+ 2023-12-24T01:37:15Z
Daily Trending of MAXScript in GitHub
\ No newline at end of file
diff --git a/maxscript/weekly/index.xml b/maxscript/weekly/index.xml
new file mode 100644
index 00000000000..bc44557f118
--- /dev/null
+++ b/maxscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MAXScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:39Z
+ Weekly Trending of MAXScript in GitHub
+
+
\ No newline at end of file
diff --git a/mcfunction/daily/index.xml b/mcfunction/daily/index.xml
index fedabd46dbe..309742aa9f3 100644
--- a/mcfunction/daily/index.xml
+++ b/mcfunction/daily/index.xml
@@ -1,7 +1,7 @@
GitHub mcfunction Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:22Z
+ 2023-12-24T01:37:16Z
Daily Trending of mcfunction in GitHub
\ No newline at end of file
diff --git a/mcfunction/weekly/index.xml b/mcfunction/weekly/index.xml
new file mode 100644
index 00000000000..4e8f35b3b62
--- /dev/null
+++ b/mcfunction/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub mcfunction Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:40Z
+ Weekly Trending of mcfunction in GitHub
+
+
\ No newline at end of file
diff --git a/mercury/daily/index.xml b/mercury/daily/index.xml
index 67d333b0204..a83da225dda 100644
--- a/mercury/daily/index.xml
+++ b/mercury/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Mercury Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:28Z
+ 2023-12-24T01:37:20Z
Daily Trending of Mercury in GitHub
\ No newline at end of file
diff --git a/mercury/weekly/index.xml b/mercury/weekly/index.xml
new file mode 100644
index 00000000000..67faf3fe258
--- /dev/null
+++ b/mercury/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Mercury Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:46Z
+ Weekly Trending of Mercury in GitHub
+
+
\ No newline at end of file
diff --git a/meson/daily/index.xml b/meson/daily/index.xml
index 946287848a9..244ce37f229 100644
--- a/meson/daily/index.xml
+++ b/meson/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Meson Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:30Z
+ 2023-12-24T01:37:20Z
Daily Trending of Meson in GitHub
\ No newline at end of file
diff --git a/meson/weekly/index.xml b/meson/weekly/index.xml
new file mode 100644
index 00000000000..a2744b5e67d
--- /dev/null
+++ b/meson/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Meson Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:47Z
+ Weekly Trending of Meson in GitHub
+
+
\ No newline at end of file
diff --git a/metal/daily/index.xml b/metal/daily/index.xml
index 9b60da5b6d5..ece0aa9c67d 100644
--- a/metal/daily/index.xml
+++ b/metal/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Metal Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:27Z
+ 2023-12-24T01:37:22Z
Daily Trending of Metal in GitHub
\ No newline at end of file
diff --git a/metal/weekly/index.xml b/metal/weekly/index.xml
new file mode 100644
index 00000000000..4b8a5618a43
--- /dev/null
+++ b/metal/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Metal Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:48Z
+ Weekly Trending of Metal in GitHub
+
+
\ No newline at end of file
diff --git a/microsoft-developer-studio-project/daily/index.xml b/microsoft-developer-studio-project/daily/index.xml
index de5a50d4f0f..759e4411d47 100644
--- a/microsoft-developer-studio-project/daily/index.xml
+++ b/microsoft-developer-studio-project/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Microsoft Developer Studio Project Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:32Z
+ 2023-12-24T01:37:23Z
Daily Trending of Microsoft Developer Studio Project in GitHub
\ No newline at end of file
diff --git a/microsoft-developer-studio-project/weekly/index.xml b/microsoft-developer-studio-project/weekly/index.xml
new file mode 100644
index 00000000000..5a1c73d7302
--- /dev/null
+++ b/microsoft-developer-studio-project/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Microsoft Developer Studio Project Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:49Z
+ Weekly Trending of Microsoft Developer Studio Project in GitHub
+
+
\ No newline at end of file
diff --git a/microsoft-visual-studio-solution/daily/index.xml b/microsoft-visual-studio-solution/daily/index.xml
index 24bc07543ee..9fbc9d328b0 100644
--- a/microsoft-visual-studio-solution/daily/index.xml
+++ b/microsoft-visual-studio-solution/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Microsoft Visual Studio Solution Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:31Z
+ 2023-12-24T01:37:24Z
Daily Trending of Microsoft Visual Studio Solution in GitHub
\ No newline at end of file
diff --git a/microsoft-visual-studio-solution/weekly/index.xml b/microsoft-visual-studio-solution/weekly/index.xml
new file mode 100644
index 00000000000..2067ee8c5ed
--- /dev/null
+++ b/microsoft-visual-studio-solution/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Microsoft Visual Studio Solution Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:51Z
+ Weekly Trending of Microsoft Visual Studio Solution in GitHub
+
+
\ No newline at end of file
diff --git a/minid/daily/index.xml b/minid/daily/index.xml
index dab742e7f80..44606cb04d8 100644
--- a/minid/daily/index.xml
+++ b/minid/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MiniD Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:33Z
+ 2023-12-24T01:37:24Z
Daily Trending of MiniD in GitHub
\ No newline at end of file
diff --git a/minid/weekly/index.xml b/minid/weekly/index.xml
new file mode 100644
index 00000000000..a67969188bc
--- /dev/null
+++ b/minid/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MiniD Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:50Z
+ Weekly Trending of MiniD in GitHub
+
+
\ No newline at end of file
diff --git a/mint/daily/index.xml b/mint/daily/index.xml
index 7584b1fea7e..a2bf0d9fdc8 100644
--- a/mint/daily/index.xml
+++ b/mint/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Mint Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:36Z
+ 2023-12-24T01:37:26Z
Daily Trending of Mint in GitHub
\ No newline at end of file
diff --git a/mint/weekly/index.xml b/mint/weekly/index.xml
new file mode 100644
index 00000000000..29cebbfd57c
--- /dev/null
+++ b/mint/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Mint Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:52Z
+ Weekly Trending of Mint in GitHub
+
+
\ No newline at end of file
diff --git a/mirah/daily/index.xml b/mirah/daily/index.xml
index 9d6f91ef7a4..b306894e0af 100644
--- a/mirah/daily/index.xml
+++ b/mirah/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Mirah Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:35Z
+ 2023-12-24T01:37:27Z
Daily Trending of Mirah in GitHub
\ No newline at end of file
diff --git a/mirah/weekly/index.xml b/mirah/weekly/index.xml
new file mode 100644
index 00000000000..7b1b71f137c
--- /dev/null
+++ b/mirah/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Mirah Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:53Z
+ Weekly Trending of Mirah in GitHub
+
+
\ No newline at end of file
diff --git a/mirc-script/daily/index.xml b/mirc-script/daily/index.xml
index 074671dc653..3376fecfb0e 100644
--- a/mirc-script/daily/index.xml
+++ b/mirc-script/daily/index.xml
@@ -1,7 +1,7 @@
GitHub mIRC Script Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:36Z
+ 2023-12-24T01:37:28Z
Daily Trending of mIRC Script in GitHub
\ No newline at end of file
diff --git a/mirc-script/weekly/index.xml b/mirc-script/weekly/index.xml
new file mode 100644
index 00000000000..25c6d916bfd
--- /dev/null
+++ b/mirc-script/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub mIRC Script Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:55Z
+ Weekly Trending of mIRC Script in GitHub
+
+
\ No newline at end of file
diff --git a/mlir/daily/index.xml b/mlir/daily/index.xml
index 58adfe4ca70..2938b9c9ce5 100644
--- a/mlir/daily/index.xml
+++ b/mlir/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MLIR Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:37Z
+ 2023-12-24T01:37:28Z
Daily Trending of MLIR in GitHub
\ No newline at end of file
diff --git a/mlir/weekly/index.xml b/mlir/weekly/index.xml
new file mode 100644
index 00000000000..335dc48e35c
--- /dev/null
+++ b/mlir/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MLIR Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:54Z
+ Weekly Trending of MLIR in GitHub
+
+
\ No newline at end of file
diff --git a/modelica/daily/index.xml b/modelica/daily/index.xml
index 1e8173c669c..2f6046ec225 100644
--- a/modelica/daily/index.xml
+++ b/modelica/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Modelica Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:41Z
+ 2023-12-24T01:37:30Z
Daily Trending of Modelica in GitHub
\ No newline at end of file
diff --git a/modelica/weekly/index.xml b/modelica/weekly/index.xml
new file mode 100644
index 00000000000..a3aa8f76594
--- /dev/null
+++ b/modelica/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Modelica Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:58Z
+ Weekly Trending of Modelica in GitHub
+
+
\ No newline at end of file
diff --git a/modula-2/daily/index.xml b/modula-2/daily/index.xml
index 23885a435d9..58d242d8d18 100644
--- a/modula-2/daily/index.xml
+++ b/modula-2/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Modula-2 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:40Z
+ 2023-12-24T01:37:31Z
Daily Trending of Modula-2 in GitHub
\ No newline at end of file
diff --git a/modula-2/weekly/index.xml b/modula-2/weekly/index.xml
new file mode 100644
index 00000000000..49d58ea903a
--- /dev/null
+++ b/modula-2/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Modula-2 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:57Z
+ Weekly Trending of Modula-2 in GitHub
+
+
\ No newline at end of file
diff --git a/modula-3/daily/index.xml b/modula-3/daily/index.xml
index 1e5a8f9a89e..101bd07b13f 100644
--- a/modula-3/daily/index.xml
+++ b/modula-3/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Modula-3 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:39Z
+ 2023-12-24T01:37:32Z
Daily Trending of Modula-3 in GitHub
\ No newline at end of file
diff --git a/modula-3/weekly/index.xml b/modula-3/weekly/index.xml
new file mode 100644
index 00000000000..eb604b1f8c4
--- /dev/null
+++ b/modula-3/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Modula-3 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:57Z
+ Weekly Trending of Modula-3 in GitHub
+
+
\ No newline at end of file
diff --git a/module-management-system/daily/index.xml b/module-management-system/daily/index.xml
index b375be3d1be..0cfbaaab3b9 100644
--- a/module-management-system/daily/index.xml
+++ b/module-management-system/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Module Management System Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:38Z
+ 2023-12-24T01:37:30Z
Daily Trending of Module Management System in GitHub
\ No newline at end of file
diff --git a/module-management-system/weekly/index.xml b/module-management-system/weekly/index.xml
new file mode 100644
index 00000000000..5308de9233e
--- /dev/null
+++ b/module-management-system/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Module Management System Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:54:56Z
+ Weekly Trending of Module Management System in GitHub
+
+
\ No newline at end of file
diff --git a/monkey-c/daily/index.xml b/monkey-c/daily/index.xml
index 888e24809a7..128d57dde52 100644
--- a/monkey-c/daily/index.xml
+++ b/monkey-c/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Monkey C Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:43Z
+ 2023-12-24T01:37:34Z
Daily Trending of Monkey C in GitHub
\ No newline at end of file
diff --git a/monkey-c/weekly/index.xml b/monkey-c/weekly/index.xml
new file mode 100644
index 00000000000..634492bda78
--- /dev/null
+++ b/monkey-c/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Monkey C Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:00Z
+ Weekly Trending of Monkey C in GitHub
+
+
\ No newline at end of file
diff --git a/monkey/daily/index.xml b/monkey/daily/index.xml
index 726404c3029..2eb5b5dee75 100644
--- a/monkey/daily/index.xml
+++ b/monkey/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Monkey Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:44Z
+ 2023-12-24T01:37:33Z
Daily Trending of Monkey in GitHub
\ No newline at end of file
diff --git a/monkey/weekly/index.xml b/monkey/weekly/index.xml
new file mode 100644
index 00000000000..5ea4c8f915f
--- /dev/null
+++ b/monkey/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Monkey Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:00Z
+ Weekly Trending of Monkey in GitHub
+
+
\ No newline at end of file
diff --git a/moocode/daily/index.xml b/moocode/daily/index.xml
index 99e698556ef..5adf2acf893 100644
--- a/moocode/daily/index.xml
+++ b/moocode/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Moocode Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:45Z
+ 2023-12-24T01:37:33Z
Daily Trending of Moocode in GitHub
\ No newline at end of file
diff --git a/moocode/weekly/index.xml b/moocode/weekly/index.xml
new file mode 100644
index 00000000000..fed47585f36
--- /dev/null
+++ b/moocode/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Moocode Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:02Z
+ Weekly Trending of Moocode in GitHub
+
+
\ No newline at end of file
diff --git a/moonscript/daily/index.xml b/moonscript/daily/index.xml
index 5059aa717fb..2db2590b828 100644
--- a/moonscript/daily/index.xml
+++ b/moonscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MoonScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:42Z
+ 2023-12-24T01:37:35Z
Daily Trending of MoonScript in GitHub
\ No newline at end of file
diff --git a/moonscript/weekly/index.xml b/moonscript/weekly/index.xml
new file mode 100644
index 00000000000..c6ed63bfe53
--- /dev/null
+++ b/moonscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MoonScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:01Z
+ Weekly Trending of MoonScript in GitHub
+
+
\ No newline at end of file
diff --git a/motoko/daily/index.xml b/motoko/daily/index.xml
index 147c84ea8a9..396bb0f0aec 100644
--- a/motoko/daily/index.xml
+++ b/motoko/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Motoko Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:47Z
+ 2023-12-24T01:37:36Z
Daily Trending of Motoko in GitHub
\ No newline at end of file
diff --git a/motoko/weekly/index.xml b/motoko/weekly/index.xml
new file mode 100644
index 00000000000..3f0a30de6d5
--- /dev/null
+++ b/motoko/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Motoko Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:04Z
+ Weekly Trending of Motoko in GitHub
+
+
\ No newline at end of file
diff --git a/motorola-68k-assembly/daily/index.xml b/motorola-68k-assembly/daily/index.xml
index 0c0e16aa884..aea163c0dc5 100644
--- a/motorola-68k-assembly/daily/index.xml
+++ b/motorola-68k-assembly/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Motorola 68K Assembly Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:46Z
+ 2023-12-24T01:37:37Z
Daily Trending of Motorola 68K Assembly in GitHub
\ No newline at end of file
diff --git a/motorola-68k-assembly/weekly/index.xml b/motorola-68k-assembly/weekly/index.xml
new file mode 100644
index 00000000000..91198e2373c
--- /dev/null
+++ b/motorola-68k-assembly/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Motorola 68K Assembly Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:06Z
+ Weekly Trending of Motorola 68K Assembly in GitHub
+
+
\ No newline at end of file
diff --git a/mql4/daily/index.xml b/mql4/daily/index.xml
index 267421dccba..c545efc8219 100644
--- a/mql4/daily/index.xml
+++ b/mql4/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MQL4 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:47Z
+ 2023-12-24T01:37:37Z
Daily Trending of MQL4 in GitHub
\ No newline at end of file
diff --git a/mql4/weekly/index.xml b/mql4/weekly/index.xml
new file mode 100644
index 00000000000..95100f69f66
--- /dev/null
+++ b/mql4/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MQL4 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:04Z
+ Weekly Trending of MQL4 in GitHub
+
+
\ No newline at end of file
diff --git a/mql5/daily/index.xml b/mql5/daily/index.xml
index 533c35ea09b..76ed550dced 100644
--- a/mql5/daily/index.xml
+++ b/mql5/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MQL5 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:50Z
+ 2023-12-24T01:37:41Z
Daily Trending of MQL5 in GitHub
\ No newline at end of file
diff --git a/mql5/weekly/index.xml b/mql5/weekly/index.xml
new file mode 100644
index 00000000000..633c02f6a38
--- /dev/null
+++ b/mql5/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MQL5 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:07Z
+ Weekly Trending of MQL5 in GitHub
+
+
\ No newline at end of file
diff --git a/mtml/daily/index.xml b/mtml/daily/index.xml
index 98f123b55a1..e25e8ef9348 100644
--- a/mtml/daily/index.xml
+++ b/mtml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MTML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:49Z
+ 2023-12-24T01:37:41Z
Daily Trending of MTML in GitHub
\ No newline at end of file
diff --git a/mtml/weekly/index.xml b/mtml/weekly/index.xml
new file mode 100644
index 00000000000..75d430e374a
--- /dev/null
+++ b/mtml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MTML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:10Z
+ Weekly Trending of MTML in GitHub
+
+
\ No newline at end of file
diff --git a/muf/daily/index.xml b/muf/daily/index.xml
index 0ad1a528058..510d775c885 100644
--- a/muf/daily/index.xml
+++ b/muf/daily/index.xml
@@ -1,7 +1,7 @@
GitHub MUF Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:51Z
+ 2023-12-24T01:37:39Z
Daily Trending of MUF in GitHub
\ No newline at end of file
diff --git a/muf/weekly/index.xml b/muf/weekly/index.xml
new file mode 100644
index 00000000000..c34f1acc2eb
--- /dev/null
+++ b/muf/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub MUF Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:09Z
+ Weekly Trending of MUF in GitHub
+
+
\ No newline at end of file
diff --git a/mupad/daily/index.xml b/mupad/daily/index.xml
index c4568a3c96f..3af447ba612 100644
--- a/mupad/daily/index.xml
+++ b/mupad/daily/index.xml
@@ -1,7 +1,7 @@
GitHub mupad Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:52Z
+ 2023-12-24T01:37:40Z
Daily Trending of mupad in GitHub
\ No newline at end of file
diff --git a/mupad/weekly/index.xml b/mupad/weekly/index.xml
new file mode 100644
index 00000000000..915b575e350
--- /dev/null
+++ b/mupad/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub mupad Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:08Z
+ Weekly Trending of mupad in GitHub
+
+
\ No newline at end of file
diff --git a/muse/daily/index.xml b/muse/daily/index.xml
index 0009acf25b2..d00801bc921 100644
--- a/muse/daily/index.xml
+++ b/muse/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Muse Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:53Z
+ 2023-12-24T01:37:42Z
Daily Trending of Muse in GitHub
\ No newline at end of file
diff --git a/muse/weekly/index.xml b/muse/weekly/index.xml
new file mode 100644
index 00000000000..604b8289e9a
--- /dev/null
+++ b/muse/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Muse Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:11Z
+ Weekly Trending of Muse in GitHub
+
+
\ No newline at end of file
diff --git a/mustache/daily/index.xml b/mustache/daily/index.xml
index 8e8ae43b0ee..6ad3153614f 100644
--- a/mustache/daily/index.xml
+++ b/mustache/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Mustache Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:58Z
+ 2023-12-24T01:37:45Z
Daily Trending of Mustache in GitHub
\ No newline at end of file
diff --git a/mustache/weekly/index.xml b/mustache/weekly/index.xml
new file mode 100644
index 00000000000..1e37d342af7
--- /dev/null
+++ b/mustache/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Mustache Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:15Z
+ Weekly Trending of Mustache in GitHub
+
+
\ No newline at end of file
diff --git a/myghty/daily/index.xml b/myghty/daily/index.xml
index 24496cba7f2..5f4f68fa9a4 100644
--- a/myghty/daily/index.xml
+++ b/myghty/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Myghty Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:54Z
+ 2023-12-24T01:37:44Z
Daily Trending of Myghty in GitHub
\ No newline at end of file
diff --git a/myghty/weekly/index.xml b/myghty/weekly/index.xml
new file mode 100644
index 00000000000..94be259a74f
--- /dev/null
+++ b/myghty/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Myghty Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:13Z
+ Weekly Trending of Myghty in GitHub
+
+
\ No newline at end of file
diff --git a/nanorc/daily/index.xml b/nanorc/daily/index.xml
index 66bbdf09996..f7afdaba301 100644
--- a/nanorc/daily/index.xml
+++ b/nanorc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub nanorc Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:55Z
+ 2023-12-24T01:37:43Z
Daily Trending of nanorc in GitHub
\ No newline at end of file
diff --git a/nanorc/weekly/index.xml b/nanorc/weekly/index.xml
new file mode 100644
index 00000000000..92e511c53f0
--- /dev/null
+++ b/nanorc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub nanorc Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:12Z
+ Weekly Trending of nanorc in GitHub
+
+
\ No newline at end of file
diff --git a/nasl/daily/index.xml b/nasl/daily/index.xml
index 73b96ccacc5..8bcf01da728 100644
--- a/nasl/daily/index.xml
+++ b/nasl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NASL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:00Z
+ 2023-12-24T01:37:49Z
Daily Trending of NASL in GitHub
\ No newline at end of file
diff --git a/nasl/weekly/index.xml b/nasl/weekly/index.xml
new file mode 100644
index 00000000000..9ab05c0b059
--- /dev/null
+++ b/nasl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NASL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:19Z
+ Weekly Trending of NASL in GitHub
+
+
\ No newline at end of file
diff --git a/ncl/daily/index.xml b/ncl/daily/index.xml
index 34c8a4861c4..d73244a3d11 100644
--- a/ncl/daily/index.xml
+++ b/ncl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NCL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:33:59Z
+ 2023-12-24T01:37:47Z
Daily Trending of NCL in GitHub
\ No newline at end of file
diff --git a/ncl/weekly/index.xml b/ncl/weekly/index.xml
new file mode 100644
index 00000000000..6bce09ee4cb
--- /dev/null
+++ b/ncl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NCL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:18Z
+ Weekly Trending of NCL in GitHub
+
+
\ No newline at end of file
diff --git a/nearley/daily/index.xml b/nearley/daily/index.xml
index ecbfb1396d6..3a5b5b1d9d3 100644
--- a/nearley/daily/index.xml
+++ b/nearley/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nearley Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:01Z
+ 2023-12-24T01:37:46Z
Daily Trending of Nearley in GitHub
\ No newline at end of file
diff --git a/nearley/weekly/index.xml b/nearley/weekly/index.xml
new file mode 100644
index 00000000000..df2f9bca552
--- /dev/null
+++ b/nearley/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nearley Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:17Z
+ Weekly Trending of Nearley in GitHub
+
+
\ No newline at end of file
diff --git a/nemerle/daily/index.xml b/nemerle/daily/index.xml
index 9ba01315e84..2320581dbe2 100644
--- a/nemerle/daily/index.xml
+++ b/nemerle/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nemerle Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:06Z
+ 2023-12-24T01:37:50Z
Daily Trending of Nemerle in GitHub
\ No newline at end of file
diff --git a/nemerle/weekly/index.xml b/nemerle/weekly/index.xml
new file mode 100644
index 00000000000..d99df4aee8c
--- /dev/null
+++ b/nemerle/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nemerle Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:21Z
+ Weekly Trending of Nemerle in GitHub
+
+
\ No newline at end of file
diff --git a/neon/daily/index.xml b/neon/daily/index.xml
index ac48f672144..86b1e383989 100644
--- a/neon/daily/index.xml
+++ b/neon/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NEON Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:05Z
+ 2023-12-24T01:37:51Z
Daily Trending of NEON in GitHub
\ No newline at end of file
diff --git a/neon/weekly/index.xml b/neon/weekly/index.xml
new file mode 100644
index 00000000000..e65d309b67c
--- /dev/null
+++ b/neon/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NEON Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:23Z
+ Weekly Trending of NEON in GitHub
+
+
\ No newline at end of file
diff --git a/nesc/daily/index.xml b/nesc/daily/index.xml
index f3e7f3a7f6d..107efcea81b 100644
--- a/nesc/daily/index.xml
+++ b/nesc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub nesC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:04Z
+ 2023-12-24T01:37:52Z
Daily Trending of nesC in GitHub
\ No newline at end of file
diff --git a/nesc/weekly/index.xml b/nesc/weekly/index.xml
new file mode 100644
index 00000000000..62584a5d818
--- /dev/null
+++ b/nesc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub nesC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:24Z
+ Weekly Trending of nesC in GitHub
+
+
\ No newline at end of file
diff --git a/netlinx+erb/daily/index.xml b/netlinx+erb/daily/index.xml
index 66b41e6bf67..2744cc28b83 100644
--- a/netlinx+erb/daily/index.xml
+++ b/netlinx+erb/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NetLinx+ERB Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:08Z
+ 2023-12-24T01:37:55Z
Daily Trending of NetLinx+ERB in GitHub
\ No newline at end of file
diff --git a/netlinx+erb/weekly/index.xml b/netlinx+erb/weekly/index.xml
new file mode 100644
index 00000000000..bf4ed668a13
--- /dev/null
+++ b/netlinx+erb/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NetLinx+ERB Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:25Z
+ Weekly Trending of NetLinx+ERB in GitHub
+
+
\ No newline at end of file
diff --git a/netlinx/daily/index.xml b/netlinx/daily/index.xml
index af9a63b51f9..e5bfeefb2ba 100644
--- a/netlinx/daily/index.xml
+++ b/netlinx/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NetLinx Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:03Z
+ 2023-12-24T01:37:51Z
Daily Trending of NetLinx in GitHub
\ No newline at end of file
diff --git a/netlinx/weekly/index.xml b/netlinx/weekly/index.xml
new file mode 100644
index 00000000000..4cc3e4bae2c
--- /dev/null
+++ b/netlinx/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NetLinx Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:22Z
+ Weekly Trending of NetLinx in GitHub
+
+
\ No newline at end of file
diff --git a/netlogo/daily/index.xml b/netlogo/daily/index.xml
index e3967441d2b..2586962e535 100644
--- a/netlogo/daily/index.xml
+++ b/netlogo/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NetLogo Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:08Z
+ 2023-12-24T01:37:54Z
Daily Trending of NetLogo in GitHub
\ No newline at end of file
diff --git a/netlogo/weekly/index.xml b/netlogo/weekly/index.xml
new file mode 100644
index 00000000000..e3ef8f5f08e
--- /dev/null
+++ b/netlogo/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NetLogo Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:27Z
+ Weekly Trending of NetLogo in GitHub
+
+
\ No newline at end of file
diff --git a/newlisp/daily/index.xml b/newlisp/daily/index.xml
index 52d7dd9faba..a106b79c7e4 100644
--- a/newlisp/daily/index.xml
+++ b/newlisp/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NewLisp Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:07Z
+ 2023-12-24T01:37:54Z
Daily Trending of NewLisp in GitHub
\ No newline at end of file
diff --git a/newlisp/weekly/index.xml b/newlisp/weekly/index.xml
new file mode 100644
index 00000000000..40b4d395b9e
--- /dev/null
+++ b/newlisp/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NewLisp Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:26Z
+ Weekly Trending of NewLisp in GitHub
+
+
\ No newline at end of file
diff --git a/nextflow/daily/index.xml b/nextflow/daily/index.xml
index 0fb8a088936..92880b86761 100644
--- a/nextflow/daily/index.xml
+++ b/nextflow/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nextflow Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:09Z
+ 2023-12-24T01:37:56Z
Daily Trending of Nextflow in GitHub
\ No newline at end of file
diff --git a/nextflow/weekly/index.xml b/nextflow/weekly/index.xml
new file mode 100644
index 00000000000..6969eb4770b
--- /dev/null
+++ b/nextflow/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Nextflow Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:29Z
+ Weekly Trending of Nextflow in GitHub
+
+
+ nf-core/pixelator
+ 2023-12-24T01:55:29Z
+ tag:github.com,2023-12-24:/nf-core/pixelator
+
+ <p>Pipeline to generate Molecular Pixelation data with Pixelator (Pixelgen Technologies AB)</p><hr>
+
+
+ nf-core/fetchngs
+ 2023-12-24T01:55:29Z
+ tag:github.com,2023-12-24:/nf-core/fetchngs
+
+ <p>Pipeline to fetch metadata and raw FastQ files from public and private databases</p><hr>
+
+
+ nf-core/isoseq
+ 2023-12-24T01:55:29Z
+ tag:github.com,2023-12-24:/nf-core/isoseq
+
+ <p>Genome annotation with PacBio Iso-Seq. Takes raw subreads as input, generate Full Length Non Chemiric (FLNC) sequences and produce a bed annotation.</p><hr>
+
+
\ No newline at end of file
diff --git a/nginx/daily/index.xml b/nginx/daily/index.xml
index 485f171f62a..e55ed4d5068 100644
--- a/nginx/daily/index.xml
+++ b/nginx/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nginx Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:11Z
+ 2023-12-24T01:37:58Z
Daily Trending of Nginx in GitHub
\ No newline at end of file
diff --git a/nginx/weekly/index.xml b/nginx/weekly/index.xml
new file mode 100644
index 00000000000..f207a5d442d
--- /dev/null
+++ b/nginx/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nginx Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:30Z
+ Weekly Trending of Nginx in GitHub
+
+
\ No newline at end of file
diff --git a/nim/daily/index.xml b/nim/daily/index.xml
index fb59008e185..9c2e5edff37 100644
--- a/nim/daily/index.xml
+++ b/nim/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nim Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:12Z
+ 2023-12-24T01:38:03Z
Daily Trending of Nim in GitHub
\ No newline at end of file
diff --git a/nim/weekly/index.xml b/nim/weekly/index.xml
new file mode 100644
index 00000000000..d1fc397fb9a
--- /dev/null
+++ b/nim/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nim Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:31Z
+ Weekly Trending of Nim in GitHub
+
+
\ No newline at end of file
diff --git a/ninja/daily/index.xml b/ninja/daily/index.xml
index 0804070eabd..341ffcfefda 100644
--- a/ninja/daily/index.xml
+++ b/ninja/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ninja Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:14Z
+ 2023-12-24T01:37:59Z
Daily Trending of Ninja in GitHub
\ No newline at end of file
diff --git a/ninja/weekly/index.xml b/ninja/weekly/index.xml
new file mode 100644
index 00000000000..389ecbed30f
--- /dev/null
+++ b/ninja/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ninja Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:33Z
+ Weekly Trending of Ninja in GitHub
+
+
\ No newline at end of file
diff --git a/nit/daily/index.xml b/nit/daily/index.xml
index e96b8630333..1932a442410 100644
--- a/nit/daily/index.xml
+++ b/nit/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nit Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:13Z
+ 2023-12-24T01:38:01Z
Daily Trending of Nit in GitHub
\ No newline at end of file
diff --git a/nit/weekly/index.xml b/nit/weekly/index.xml
new file mode 100644
index 00000000000..8a597d2e7fb
--- /dev/null
+++ b/nit/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nit Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:32Z
+ Weekly Trending of Nit in GitHub
+
+
\ No newline at end of file
diff --git a/nix/daily/index.xml b/nix/daily/index.xml
index 6522cf08a11..0ce02200f45 100644
--- a/nix/daily/index.xml
+++ b/nix/daily/index.xml
@@ -1,14 +1,21 @@
GitHub Nix Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:19Z
+ 2023-12-24T01:38:08Z
Daily Trending of Nix in GitHub
- mlyxshi/flake
- 2023-12-23T01:34:19Z
- tag:github.com,2023-12-23:/mlyxshi/flake
-
- <p></p><hr>
+ danth/stylix
+ 2023-12-24T01:38:08Z
+ tag:github.com,2023-12-24:/danth/stylix
+
+ <p>System-wide colorscheming and typography for NixOS</p><hr>
+
+
+ nix-community/nix-direnv
+ 2023-12-24T01:38:08Z
+ tag:github.com,2023-12-24:/nix-community/nix-direnv
+
+ <p>A fast, persistent use_nix/use_flake implementation for direnv [maintainer=@Mic92 / @bbenne10]</p><hr>
\ No newline at end of file
diff --git a/nix/weekly/index.xml b/nix/weekly/index.xml
new file mode 100644
index 00000000000..db263aa4c38
--- /dev/null
+++ b/nix/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nix Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:39Z
+ Weekly Trending of Nix in GitHub
+
+
\ No newline at end of file
diff --git a/nl/daily/index.xml b/nl/daily/index.xml
index f7969231673..93be54c5b58 100644
--- a/nl/daily/index.xml
+++ b/nl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:15Z
+ 2023-12-24T01:38:04Z
Daily Trending of NL in GitHub
\ No newline at end of file
diff --git a/nl/weekly/index.xml b/nl/weekly/index.xml
new file mode 100644
index 00000000000..479a6700f80
--- /dev/null
+++ b/nl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:36Z
+ Weekly Trending of NL in GitHub
+
+
\ No newline at end of file
diff --git a/npm-config/daily/index.xml b/npm-config/daily/index.xml
index a9ac6edff38..73765ffad9d 100644
--- a/npm-config/daily/index.xml
+++ b/npm-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NPM Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:16Z
+ 2023-12-24T01:38:06Z
Daily Trending of NPM Config in GitHub
\ No newline at end of file
diff --git a/npm-config/weekly/index.xml b/npm-config/weekly/index.xml
new file mode 100644
index 00000000000..64c7e468fd7
--- /dev/null
+++ b/npm-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NPM Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:37Z
+ Weekly Trending of NPM Config in GitHub
+
+
\ No newline at end of file
diff --git a/nsis/daily/index.xml b/nsis/daily/index.xml
index fe348da0d52..1485f83dbd8 100644
--- a/nsis/daily/index.xml
+++ b/nsis/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NSIS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:17Z
+ 2023-12-24T01:38:05Z
Daily Trending of NSIS in GitHub
\ No newline at end of file
diff --git a/nsis/weekly/index.xml b/nsis/weekly/index.xml
new file mode 100644
index 00000000000..40dfc3fbf17
--- /dev/null
+++ b/nsis/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NSIS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:35Z
+ Weekly Trending of NSIS in GitHub
+
+
\ No newline at end of file
diff --git a/nu/daily/index.xml b/nu/daily/index.xml
index 7a148ff8ea5..d904120f465 100644
--- a/nu/daily/index.xml
+++ b/nu/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nu Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:21Z
+ 2023-12-24T01:38:09Z
Daily Trending of Nu in GitHub
\ No newline at end of file
diff --git a/nu/weekly/index.xml b/nu/weekly/index.xml
new file mode 100644
index 00000000000..595bd401e74
--- /dev/null
+++ b/nu/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nu Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:40Z
+ Weekly Trending of Nu in GitHub
+
+
\ No newline at end of file
diff --git a/numpy/daily/index.xml b/numpy/daily/index.xml
index f98d3f03779..1c002affcd8 100644
--- a/numpy/daily/index.xml
+++ b/numpy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NumPy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:22Z
+ 2023-12-24T01:38:10Z
Daily Trending of NumPy in GitHub
\ No newline at end of file
diff --git a/numpy/weekly/index.xml b/numpy/weekly/index.xml
new file mode 100644
index 00000000000..932b14104ca
--- /dev/null
+++ b/numpy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NumPy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:41Z
+ Weekly Trending of NumPy in GitHub
+
+
\ No newline at end of file
diff --git a/nunjucks/daily/index.xml b/nunjucks/daily/index.xml
index 3071db8f55d..de3148a8dbf 100644
--- a/nunjucks/daily/index.xml
+++ b/nunjucks/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Nunjucks Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:20Z
+ 2023-12-24T01:38:11Z
Daily Trending of Nunjucks in GitHub
\ No newline at end of file
diff --git a/nunjucks/weekly/index.xml b/nunjucks/weekly/index.xml
new file mode 100644
index 00000000000..b271e3d8aa8
--- /dev/null
+++ b/nunjucks/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Nunjucks Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:43Z
+ Weekly Trending of Nunjucks in GitHub
+
+
\ No newline at end of file
diff --git a/nwscript/daily/index.xml b/nwscript/daily/index.xml
index e6cbb3f1836..144497bb848 100644
--- a/nwscript/daily/index.xml
+++ b/nwscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub NWScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:25Z
+ 2023-12-24T01:38:13Z
Daily Trending of NWScript in GitHub
\ No newline at end of file
diff --git a/nwscript/weekly/index.xml b/nwscript/weekly/index.xml
new file mode 100644
index 00000000000..795b9ba9dbd
--- /dev/null
+++ b/nwscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub NWScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:44Z
+ Weekly Trending of NWScript in GitHub
+
+
\ No newline at end of file
diff --git a/objdump/daily/index.xml b/objdump/daily/index.xml
index 8076009b6ab..dcd21d053d9 100644
--- a/objdump/daily/index.xml
+++ b/objdump/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ObjDump Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:27Z
+ 2023-12-24T01:38:17Z
Daily Trending of ObjDump in GitHub
\ No newline at end of file
diff --git a/objdump/weekly/index.xml b/objdump/weekly/index.xml
new file mode 100644
index 00000000000..02d71fcd976
--- /dev/null
+++ b/objdump/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ObjDump Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:50Z
+ Weekly Trending of ObjDump in GitHub
+
+
\ No newline at end of file
diff --git a/object-data-instance-notation/daily/index.xml b/object-data-instance-notation/daily/index.xml
index d86920713ea..81de266f775 100644
--- a/object-data-instance-notation/daily/index.xml
+++ b/object-data-instance-notation/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Object Data Instance Notation Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:29Z
+ 2023-12-24T01:38:18Z
Daily Trending of Object Data Instance Notation in GitHub
\ No newline at end of file
diff --git a/object-data-instance-notation/weekly/index.xml b/object-data-instance-notation/weekly/index.xml
new file mode 100644
index 00000000000..0e7858adc42
--- /dev/null
+++ b/object-data-instance-notation/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Object Data Instance Notation Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:49Z
+ Weekly Trending of Object Data Instance Notation in GitHub
+
+
\ No newline at end of file
diff --git a/objective-c++/daily/index.xml b/objective-c++/daily/index.xml
index 004766a4056..f62fba951dc 100644
--- a/objective-c++/daily/index.xml
+++ b/objective-c++/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Objective-C++ Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:48Z
+ 2023-12-24T01:38:29Z
Daily Trending of Objective-C++ in GitHub
\ No newline at end of file
diff --git a/objective-c++/weekly/index.xml b/objective-c++/weekly/index.xml
new file mode 100644
index 00000000000..fe0377ce4b7
--- /dev/null
+++ b/objective-c++/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Objective-C++ Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:05Z
+ Weekly Trending of Objective-C++ in GitHub
+
+
+ dongyuwei/hallelujahIM
+ 2023-12-24T01:56:05Z
+ tag:github.com,2023-12-24:/dongyuwei/hallelujahIM
+
+ <p>hallelujahIM(哈利路亚 英文输入法) is an intelligent English input method with auto-suggestions and spell check features.</p><hr>
+
+
\ No newline at end of file
diff --git a/objective-c/daily/index.xml b/objective-c/daily/index.xml
index 9214961bf68..136b62db8ba 100644
--- a/objective-c/daily/index.xml
+++ b/objective-c/daily/index.xml
@@ -1,7 +1,21 @@
GitHub Objective-C Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:32Z
+ 2023-12-24T01:38:21Z
Daily Trending of Objective-C in GitHub
+
+ volcengine/TTSDK-iOS
+ 2023-12-24T01:38:21Z
+ tag:github.com,2023-12-24:/volcengine/TTSDK-iOS
+
+ <p></p><hr><h2>TTSDK</h2>
<p><strong>iOS</strong> demo project for <a href="https://github.com/volcengine/volcengine-specs/tree/master/TTSDK">TTSDK</a>.</p>
<h2>Download</h2>
<pre><code>$ brew install git-lfs
$ git lfs install
$ git lfs clone https://github.com/volcengine/TTSDK-iOS.git
</code></pre>
<h2>Before Run</h2>
<pre><code>$ cd TTSDK-iOS/TTSDKDemo
$ pod install --repo-update
$ open TTSDKDemo.xcworkspace
</code></pre>
+
+
+ volcengine/veGame
+ 2023-12-24T01:38:21Z
+ tag:github.com,2023-12-24:/volcengine/veGame
+
+ <p>veGame sample code (for Android, iOS, and Web/H5)</p><hr><h1>veGame 介绍</h1>
<p>火山引擎云游戏结合云计算和超低延迟音视频传输技术、灵活的资源调度方案、多终端跨平台适配的 SDK 和 OpenAPI 接口,为客户提供全方位整体云游戏技术解决方案。</p>
<p>开发者无需适配不同的软硬件平台,即可将游戏部署到服务端提供云游戏服务。本仓库提供 Android、iOS、Web/H5 客户端 Quick Start Demo 工程文件下载,帮助开发者快速搭建示例,体验云游戏服务。</p>
<h2>接入文档</h2>
<p>如果查看页面时显示页面不存在,可能是因为你没有权限,请参考 <a href="https://www.volcengine.com/docs/6512/75577">开通云游戏服务</a> 说明文档,获取相关权限。</p>
<table>
<thead>
<tr>
<th><strong>平台</strong></th>
<th><strong>SDK 下载</strong></th>
<th><strong>SDK 接口文档</strong></th>
<th><strong>OpenAPI 参考文档</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Android</td>
<td><a href="https://www.volcengine.com/docs/6512/75594">下载</a></td>
<td><a href="https://www.volcengine.com/docs/6512/75595">文档</a></td>
<td><a href="https://www.volcengine.com/docs/6512/75581">文档</a></td>
</tr>
<tr>
<td>iOS</td>
<td><a href="https://www.volcengine.com/docs/6512/75594">下载</a></td>
<td><a href="https://www.volcengine.com/docs/6512/75596">文档</a></td>
<td><a href="https://www.volcengine.com/docs/6512/75581">文档</a></td>
</tr>
<tr>
<td>Web/H5</td>
<td><a href="https://www.volcengine.com/docs/6512/75594">下载</a></td>
<td><a href="https://www.volcengine.com/docs/6512/75597">文档</a></td>
<td><a href="https://www.volcengine.com/docs/6512/75581">文档</a></td>
</tr>
</tbody>
</table>
<h2>联系我们</h2>
<p>如果您遇到任何问题,可通过火山引擎 <a href="https://www.volcengine.com/product/veGame">云游戏产品主页</a> 获取帮助,我们会竭力为您提供帮助。</p>
+
\ No newline at end of file
diff --git a/objective-c/weekly/index.xml b/objective-c/weekly/index.xml
new file mode 100644
index 00000000000..6cf3b36e3ea
--- /dev/null
+++ b/objective-c/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Objective-C Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:55:53Z
+ Weekly Trending of Objective-C in GitHub
+
+
+ Tencent/vap
+ 2023-12-24T01:55:53Z
+ tag:github.com,2023-12-24:/Tencent/vap
+
+ <p>VAP是企鹅电竞开发,用于播放特效动画的实现方案。具有高压缩率、硬件解码等优点。同时支持 iOS,Android,Web 平台。</p><hr><h1>VAP</h1>
<p><a href="http://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat" alt="License"></a></p>
<p>简体中文 | <a href="https://raw.githubusercontent.com/Tencent/vap/master/README_en.md">English</a></p>
<p>VAP(Video Animation Player)是企鹅电竞开发,用于播放酷炫动画的实现方案。</p>
<ul>
<li>相比Webp, Apng动图方案,具有高压缩率(素材更小)、硬件解码(解码更快)的优点</li>
<li>相比Lottie,能实现更复杂的动画效果(比如粒子特效)</li>
</ul>
<p>项目详细介绍请参考 <a href="https://raw.githubusercontent.com/Tencent/vap/master/Introduction.md">Introduction.md</a></p>
<p>特效展示:</p>
<p><a href="https://egame.qq.com/vap">展示主页</a></p>
<p><img src="https://raw.githubusercontent.com/Tencent/vap/master/images/anim1.gif" alt=""></p>
<p>而且VAP还能在动画中融入自定义的属性(比如用户名称, 头像)</p>
<p><img src="https://raw.githubusercontent.com/Tencent/vap/master/images/anim2.gif" alt=""></p>
<h2>性能简述</h2>
<table>
<thead>
<tr>
<th>-</th>
<th>文件大小</th>
<th>解码方式</th>
<th>特效支持</th>
</tr>
</thead>
<tbody>
<tr>
<td>Lottie</td>
<td>无法导出</td>
<td>软解</td>
<td>无粒子特效</td>
</tr>
<tr>
<td>GIF</td>
<td>4.6M</td>
<td>软解</td>
<td>只支持8位色彩</td>
</tr>
<tr>
<td>Apng</td>
<td>10.6M</td>
<td>软解</td>
<td>全支持</td>
</tr>
<tr>
<td>Webp</td>
<td>9.2M</td>
<td>软解</td>
<td>全支持</td>
</tr>
<tr>
<td>mp4</td>
<td>1.5M</td>
<td>硬解</td>
<td>无透明背景</td>
</tr>
<tr>
<td>VAP</td>
<td><em><strong>1.5M</strong></em></td>
<td><em><strong>硬解</strong></em></td>
<td><em><strong>全支持</strong></em></td>
</tr>
</tbody>
</table>
<p>实验参数参考 <a href="https://raw.githubusercontent.com/Tencent/vap/master/Introduction.md">Introduction.md</a></p>
<h2>平台支持</h2>
<p>支持:<a href="https://raw.githubusercontent.com/Tencent/vap/master/Android">Android</a>, <a href="https://raw.githubusercontent.com/Tencent/vap/master/iOS">iOS</a>, <a href="https://raw.githubusercontent.com/Tencent/vap/master/web">web</a>. 接入说明在对应平台目录中</p>
<p>素材制作工具:<a href="https://raw.githubusercontent.com/Tencent/vap/master/tool">VapTool</a> (工具使用说明在tool目录下)</p>
<p>播放预览工具:<a href="https://github.com/Tencent/vap/releases/download/VapPreview1.2.0/vap-player_mac_1.2.0.zip">Mac</a>, <a href="https://github.com/Tencent/vap/releases/download/VapPreview1.2.0/vap-player_1.2.0.exe">Windows</a></p>
<h2>已接入APP</h2>
<p><img src="https://github.com/Tencent/vap/assets/3285051/3e5c9ce1-f654-413e-8c5e-ecb2088ed3fe" alt="app"></p>
<h2>FAQ</h2>
<p><a href="https://github.com/Tencent/vap/wiki/FAQ">常见问题解答</a></p>
<h2>License</h2>
<p>VAP is under the MIT license. See the <a href="https://raw.githubusercontent.com/Tencent/vap/master/LICENSE.txt">LICENSE</a> file for details.</p>
+
+
+ clee/mobilepushr
+ 2023-12-24T01:55:53Z
+ tag:github.com,2023-12-24:/clee/mobilepushr
+
+ <p>Native iPhone app to push pictures to Flickr</p><hr>
+
+
+ pinterest/PINOperation
+ 2023-12-24T01:55:53Z
+ tag:github.com,2023-12-24:/pinterest/PINOperation
+
+ <p></p><hr><h1>PINOperation</h1>
<p><a href="http://cocoadocs.org/docsets/PINOperation/"><img src="https://img.shields.io/cocoapods/v/PINOperation.svg?sanitize=true" alt="CocoaPods"></a> <a href="https://github.com/Carthage/Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage compatible"></a> <a href="https://github.com/pinterest/PINOperation/actions?query=workflow%3ACI+branch%3Amaster"><img src="https://github.com/pinterest/PINOperation/workflows/CI/badge.svg?sanitize=true" alt="Build status"></a></p>
<h2>Fast, concurrency-limited task queue for iOS and macOS.</h2>
<h2>Installation</h2>
<h3>Manually</h3>
<p><a href="https://github.com/pinterest/PINOperation/tags">Download the latest tag</a> and drag the <code>PINOperation</code> folder into your Xcode project.</p>
<p>Install the docs by double clicking the <code>.docset</code> file under <code>docs/</code>, or view them online at <a href="http://cocoadocs.org/docsets/PINOperation/">cocoadocs.org</a></p>
<h3>Git Submodule</h3>
<pre><code>git submodule add https://github.com/pinterest/PINOperation.git
git submodule update --init
</code></pre>
<h3>CocoaPods</h3>
<p>Add <a href="http://cocoapods.org/?q=name%3APINOperation">PINOperation</a> to your <code>Podfile</code> and run <code>pod install</code>.</p>
<h3>Carthage</h3>
<p>Add the following line to your <code>Cartfile</code> and run <code>carthage update --platform ios</code>. Then follow <a href="https://github.com/carthage/carthage#adding-frameworks-to-unit-tests-or-a-framework">this instruction of Carthage</a> to embed the framework.</p>
<p><code>github "pinterest/PINOperation"</code></p>
<h2>Requirements</h2>
<p><strong>PINOperation</strong> requires iOS 8.0, tvOS 9.0, macOS 10.8 or watchOS 2.0 and greater.</p>
<h2>Contact</h2>
<p><a href="mailto:garrett@pinterest.com">Garrett Moon</a></p>
<h2>License</h2>
<p>Copyright 2013 Tumblr, Inc. Copyright 2015 Pinterest, Inc.</p>
<p>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 <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p>
<p>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. <a href="https://raw.githubusercontent.com/pinterest/PINOperation/master/LICENSE.txt">See the License</a> for the specific language governing permissions and limitations under the License.</p>
+
+
\ No newline at end of file
diff --git a/objective-j/daily/index.xml b/objective-j/daily/index.xml
index 4cf8e74ab03..b8c60fff0db 100644
--- a/objective-j/daily/index.xml
+++ b/objective-j/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Objective-J Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:45Z
+ 2023-12-24T01:38:28Z
Daily Trending of Objective-J in GitHub
\ No newline at end of file
diff --git a/objective-j/weekly/index.xml b/objective-j/weekly/index.xml
new file mode 100644
index 00000000000..ac4f86ad9f2
--- /dev/null
+++ b/objective-j/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Objective-J Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:05Z
+ Weekly Trending of Objective-J in GitHub
+
+
\ No newline at end of file
diff --git a/objectscript/daily/index.xml b/objectscript/daily/index.xml
index 8ce946d95a9..766750495ed 100644
--- a/objectscript/daily/index.xml
+++ b/objectscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ObjectScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:44Z
+ 2023-12-24T01:38:30Z
Daily Trending of ObjectScript in GitHub
\ No newline at end of file
diff --git a/objectscript/weekly/index.xml b/objectscript/weekly/index.xml
new file mode 100644
index 00000000000..f0c7e83a911
--- /dev/null
+++ b/objectscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ObjectScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:03Z
+ Weekly Trending of ObjectScript in GitHub
+
+
\ No newline at end of file
diff --git a/ocaml/daily/index.xml b/ocaml/daily/index.xml
index fdc928c6c44..b15d58e21b7 100644
--- a/ocaml/daily/index.xml
+++ b/ocaml/daily/index.xml
@@ -1,7 +1,14 @@
GitHub OCaml Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:47Z
+ 2023-12-24T01:38:32Z
Daily Trending of OCaml in GitHub
+
+ leostera/colors
+ 2023-12-24T01:38:32Z
+ tag:github.com,2023-12-24:/leostera/colors
+
+ <p>A pure OCaml library for manipulating colors in different color spaces.</p><hr>
+
\ No newline at end of file
diff --git a/ocaml/weekly/index.xml b/ocaml/weekly/index.xml
new file mode 100644
index 00000000000..b516149e965
--- /dev/null
+++ b/ocaml/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub OCaml Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:07Z
+ Weekly Trending of OCaml in GitHub
+
+
+ leostera/minttea
+ 2023-12-24T01:56:07Z
+ tag:github.com,2023-12-24:/leostera/minttea
+
+ <p>A little TUI framework for OCaml</p><hr>
+
+
+ arthurdarcet/TIPE
+ 2023-12-24T01:56:07Z
+ tag:github.com,2023-12-24:/arthurdarcet/TIPE
+
+ <p>Image compression using Huffman and PCA</p><hr>
+
+
\ No newline at end of file
diff --git a/odin/daily/index.xml b/odin/daily/index.xml
index c6e663a781f..8813736b437 100644
--- a/odin/daily/index.xml
+++ b/odin/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Odin Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:49Z
+ 2023-12-24T01:38:34Z
Daily Trending of Odin in GitHub
\ No newline at end of file
diff --git a/odin/weekly/index.xml b/odin/weekly/index.xml
new file mode 100644
index 00000000000..a02f522a52f
--- /dev/null
+++ b/odin/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Odin Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:09Z
+ Weekly Trending of Odin in GitHub
+
+
\ No newline at end of file
diff --git a/omgrofl/daily/index.xml b/omgrofl/daily/index.xml
index ac31c5d6e75..0b9e6981844 100644
--- a/omgrofl/daily/index.xml
+++ b/omgrofl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Omgrofl Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:52Z
+ 2023-12-24T01:38:34Z
Daily Trending of Omgrofl in GitHub
\ No newline at end of file
diff --git a/omgrofl/weekly/index.xml b/omgrofl/weekly/index.xml
new file mode 100644
index 00000000000..a8a00af90cb
--- /dev/null
+++ b/omgrofl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Omgrofl Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:09Z
+ Weekly Trending of Omgrofl in GitHub
+
+
\ No newline at end of file
diff --git a/ooc/daily/index.xml b/ooc/daily/index.xml
index 7070a22031a..7a61875bd9e 100644
--- a/ooc/daily/index.xml
+++ b/ooc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ooc Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:51Z
+ 2023-12-24T01:38:33Z
Daily Trending of ooc in GitHub
\ No newline at end of file
diff --git a/ooc/weekly/index.xml b/ooc/weekly/index.xml
new file mode 100644
index 00000000000..480d96516f7
--- /dev/null
+++ b/ooc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ooc Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:11Z
+ Weekly Trending of ooc in GitHub
+
+
\ No newline at end of file
diff --git a/opa/daily/index.xml b/opa/daily/index.xml
index 42e14df0dcd..94e7a05ca18 100644
--- a/opa/daily/index.xml
+++ b/opa/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Opa Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:50Z
+ 2023-12-24T01:38:35Z
Daily Trending of Opa in GitHub
\ No newline at end of file
diff --git a/opa/weekly/index.xml b/opa/weekly/index.xml
new file mode 100644
index 00000000000..cf6e63497c7
--- /dev/null
+++ b/opa/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Opa Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:10Z
+ Weekly Trending of Opa in GitHub
+
+
\ No newline at end of file
diff --git a/opal/daily/index.xml b/opal/daily/index.xml
index 4720b2a51af..052374c85e4 100644
--- a/opal/daily/index.xml
+++ b/opal/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Opal Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:53Z
+ 2023-12-24T01:38:37Z
Daily Trending of Opal in GitHub
\ No newline at end of file
diff --git a/opal/weekly/index.xml b/opal/weekly/index.xml
new file mode 100644
index 00000000000..0b460ca20e8
--- /dev/null
+++ b/opal/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Opal Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:12Z
+ Weekly Trending of Opal in GitHub
+
+
\ No newline at end of file
diff --git a/open-policy-agent/daily/index.xml b/open-policy-agent/daily/index.xml
index 491f6a3e8de..6c7e0470ee1 100644
--- a/open-policy-agent/daily/index.xml
+++ b/open-policy-agent/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Open Policy Agent Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:56Z
+ 2023-12-24T01:38:38Z
Daily Trending of Open Policy Agent in GitHub
\ No newline at end of file
diff --git a/open-policy-agent/weekly/index.xml b/open-policy-agent/weekly/index.xml
new file mode 100644
index 00000000000..800f6aca481
--- /dev/null
+++ b/open-policy-agent/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Open Policy Agent Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:15Z
+ Weekly Trending of Open Policy Agent in GitHub
+
+
+ cisagov/ScubaGoggles
+ 2023-12-24T01:56:15Z
+ tag:github.com,2023-12-24:/cisagov/ScubaGoggles
+
+ <p>SCuBA Security Configuration Baselines and assessment tool for Google Workspace</p><hr>
+
+
\ No newline at end of file
diff --git a/opencl/daily/index.xml b/opencl/daily/index.xml
index 44f36be89ce..868ac44bbef 100644
--- a/opencl/daily/index.xml
+++ b/opencl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub OpenCL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:57Z
+ 2023-12-24T01:38:41Z
Daily Trending of OpenCL in GitHub
\ No newline at end of file
diff --git a/opencl/weekly/index.xml b/opencl/weekly/index.xml
new file mode 100644
index 00000000000..2ca652bcded
--- /dev/null
+++ b/opencl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub OpenCL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:17Z
+ Weekly Trending of OpenCL in GitHub
+
+
\ No newline at end of file
diff --git a/openedge-abl/daily/index.xml b/openedge-abl/daily/index.xml
index ef81ec8e385..5a4e4e65eb6 100644
--- a/openedge-abl/daily/index.xml
+++ b/openedge-abl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub OpenEdge ABL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:59Z
+ 2023-12-24T01:38:40Z
Daily Trending of OpenEdge ABL in GitHub
\ No newline at end of file
diff --git a/openedge-abl/weekly/index.xml b/openedge-abl/weekly/index.xml
new file mode 100644
index 00000000000..14d45f080cf
--- /dev/null
+++ b/openedge-abl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub OpenEdge ABL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:18Z
+ Weekly Trending of OpenEdge ABL in GitHub
+
+
\ No newline at end of file
diff --git a/openqasm/daily/index.xml b/openqasm/daily/index.xml
index c16d2e09d94..8185d6ae297 100644
--- a/openqasm/daily/index.xml
+++ b/openqasm/daily/index.xml
@@ -1,7 +1,7 @@
GitHub OpenQASM Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:34:58Z
+ 2023-12-24T01:38:41Z
Daily Trending of OpenQASM in GitHub
\ No newline at end of file
diff --git a/openqasm/weekly/index.xml b/openqasm/weekly/index.xml
new file mode 100644
index 00000000000..8aab51f038a
--- /dev/null
+++ b/openqasm/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub OpenQASM Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:19Z
+ Weekly Trending of OpenQASM in GitHub
+
+
\ No newline at end of file
diff --git a/openrc-runscript/daily/index.xml b/openrc-runscript/daily/index.xml
index 1b3a828d256..a14831eda17 100644
--- a/openrc-runscript/daily/index.xml
+++ b/openrc-runscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub OpenRC runscript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:00Z
+ 2023-12-24T01:38:42Z
Daily Trending of OpenRC runscript in GitHub
\ No newline at end of file
diff --git a/openrc-runscript/weekly/index.xml b/openrc-runscript/weekly/index.xml
new file mode 100644
index 00000000000..424b5424420
--- /dev/null
+++ b/openrc-runscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub OpenRC runscript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:17Z
+ Weekly Trending of OpenRC runscript in GitHub
+
+
\ No newline at end of file
diff --git a/openscad/daily/index.xml b/openscad/daily/index.xml
index adedd3a3f5f..487d7f4b547 100644
--- a/openscad/daily/index.xml
+++ b/openscad/daily/index.xml
@@ -1,7 +1,7 @@
GitHub OpenSCAD Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:03Z
+ 2023-12-24T01:38:44Z
Daily Trending of OpenSCAD in GitHub
\ No newline at end of file
diff --git a/openscad/weekly/index.xml b/openscad/weekly/index.xml
new file mode 100644
index 00000000000..03197b1d465
--- /dev/null
+++ b/openscad/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub OpenSCAD Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:21Z
+ Weekly Trending of OpenSCAD in GitHub
+
+
\ No newline at end of file
diff --git a/openstep-property-list/daily/index.xml b/openstep-property-list/daily/index.xml
index ffa774ba5d3..71c1dbb76e4 100644
--- a/openstep-property-list/daily/index.xml
+++ b/openstep-property-list/daily/index.xml
@@ -1,7 +1,7 @@
GitHub OpenStep Property List Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:01Z
+ 2023-12-24T01:38:46Z
Daily Trending of OpenStep Property List in GitHub
\ No newline at end of file
diff --git a/openstep-property-list/weekly/index.xml b/openstep-property-list/weekly/index.xml
new file mode 100644
index 00000000000..12c8baad3f8
--- /dev/null
+++ b/openstep-property-list/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub OpenStep Property List Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:20Z
+ Weekly Trending of OpenStep Property List in GitHub
+
+
\ No newline at end of file
diff --git a/opentype-feature-file/daily/index.xml b/opentype-feature-file/daily/index.xml
index 93ce498c867..3364ced0122 100644
--- a/opentype-feature-file/daily/index.xml
+++ b/opentype-feature-file/daily/index.xml
@@ -1,7 +1,7 @@
GitHub OpenType Feature File Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:02Z
+ 2023-12-24T01:38:43Z
Daily Trending of OpenType Feature File in GitHub
\ No newline at end of file
diff --git a/opentype-feature-file/weekly/index.xml b/opentype-feature-file/weekly/index.xml
new file mode 100644
index 00000000000..a413ba61adb
--- /dev/null
+++ b/opentype-feature-file/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub OpenType Feature File Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:22Z
+ Weekly Trending of OpenType Feature File in GitHub
+
+
\ No newline at end of file
diff --git a/org/daily/index.xml b/org/daily/index.xml
index c284cef2ea2..7aed6a0efbe 100644
--- a/org/daily/index.xml
+++ b/org/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Org Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:06Z
+ 2023-12-24T01:38:47Z
Daily Trending of Org in GitHub
\ No newline at end of file
diff --git a/org/weekly/index.xml b/org/weekly/index.xml
new file mode 100644
index 00000000000..2c55317465e
--- /dev/null
+++ b/org/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Org Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:24Z
+ Weekly Trending of Org in GitHub
+
+
\ No newline at end of file
diff --git a/ox/daily/index.xml b/ox/daily/index.xml
index 6ce18209cbc..112cb1af581 100644
--- a/ox/daily/index.xml
+++ b/ox/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ox Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:05Z
+ 2023-12-24T01:38:48Z
Daily Trending of Ox in GitHub
\ No newline at end of file
diff --git a/ox/weekly/index.xml b/ox/weekly/index.xml
new file mode 100644
index 00000000000..104290b85b7
--- /dev/null
+++ b/ox/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ox Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:25Z
+ Weekly Trending of Ox in GitHub
+
+
\ No newline at end of file
diff --git a/oxygene/daily/index.xml b/oxygene/daily/index.xml
index 087ea64f5eb..939f311e43a 100644
--- a/oxygene/daily/index.xml
+++ b/oxygene/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Oxygene Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:06Z
+ 2023-12-24T01:38:48Z
Daily Trending of Oxygene in GitHub
\ No newline at end of file
diff --git a/oxygene/weekly/index.xml b/oxygene/weekly/index.xml
new file mode 100644
index 00000000000..f9dd381d996
--- /dev/null
+++ b/oxygene/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Oxygene Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:26Z
+ Weekly Trending of Oxygene in GitHub
+
+
\ No newline at end of file
diff --git a/oz/daily/index.xml b/oz/daily/index.xml
index dc3c28e0fa7..aa98533b631 100644
--- a/oz/daily/index.xml
+++ b/oz/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Oz Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:07Z
+ 2023-12-24T01:38:49Z
Daily Trending of Oz in GitHub
\ No newline at end of file
diff --git a/oz/weekly/index.xml b/oz/weekly/index.xml
new file mode 100644
index 00000000000..190e6ed164a
--- /dev/null
+++ b/oz/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Oz Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:26Z
+ Weekly Trending of Oz in GitHub
+
+
\ No newline at end of file
diff --git a/p4/daily/index.xml b/p4/daily/index.xml
index 182de103e54..88775c8a045 100644
--- a/p4/daily/index.xml
+++ b/p4/daily/index.xml
@@ -1,7 +1,7 @@
GitHub P4 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:09Z
+ 2023-12-24T01:38:51Z
Daily Trending of P4 in GitHub
\ No newline at end of file
diff --git a/p4/weekly/index.xml b/p4/weekly/index.xml
new file mode 100644
index 00000000000..af2e09f4126
--- /dev/null
+++ b/p4/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub P4 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:27Z
+ Weekly Trending of P4 in GitHub
+
+
\ No newline at end of file
diff --git a/pan/daily/index.xml b/pan/daily/index.xml
index e49f9bf0f51..28b5fa42e6f 100644
--- a/pan/daily/index.xml
+++ b/pan/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pan Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:10Z
+ 2023-12-24T01:38:52Z
Daily Trending of Pan in GitHub
\ No newline at end of file
diff --git a/pan/weekly/index.xml b/pan/weekly/index.xml
new file mode 100644
index 00000000000..c6635617377
--- /dev/null
+++ b/pan/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pan Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:30Z
+ Weekly Trending of Pan in GitHub
+
+
\ No newline at end of file
diff --git a/papyrus/daily/index.xml b/papyrus/daily/index.xml
index 3badfcfc738..3a0f6862baf 100644
--- a/papyrus/daily/index.xml
+++ b/papyrus/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Papyrus Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:11Z
+ 2023-12-24T01:38:50Z
Daily Trending of Papyrus in GitHub
\ No newline at end of file
diff --git a/papyrus/weekly/index.xml b/papyrus/weekly/index.xml
new file mode 100644
index 00000000000..969fd96f0c4
--- /dev/null
+++ b/papyrus/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Papyrus Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:28Z
+ Weekly Trending of Papyrus in GitHub
+
+
\ No newline at end of file
diff --git a/parrot-assembly/daily/index.xml b/parrot-assembly/daily/index.xml
index 97fd3446141..b5af6865504 100644
--- a/parrot-assembly/daily/index.xml
+++ b/parrot-assembly/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Parrot Assembly Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:12Z
+ 2023-12-24T01:38:54Z
Daily Trending of Parrot Assembly in GitHub
\ No newline at end of file
diff --git a/parrot-assembly/weekly/index.xml b/parrot-assembly/weekly/index.xml
new file mode 100644
index 00000000000..f3d7f5f8671
--- /dev/null
+++ b/parrot-assembly/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Parrot Assembly Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:33Z
+ Weekly Trending of Parrot Assembly in GitHub
+
+
\ No newline at end of file
diff --git a/parrot-internal-representation/daily/index.xml b/parrot-internal-representation/daily/index.xml
index df4626be99b..c1300584ec9 100644
--- a/parrot-internal-representation/daily/index.xml
+++ b/parrot-internal-representation/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Parrot Internal Representation Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:13Z
+ 2023-12-24T01:38:55Z
Daily Trending of Parrot Internal Representation in GitHub
\ No newline at end of file
diff --git a/parrot-internal-representation/weekly/index.xml b/parrot-internal-representation/weekly/index.xml
new file mode 100644
index 00000000000..77c3fabd6d5
--- /dev/null
+++ b/parrot-internal-representation/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Parrot Internal Representation Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:32Z
+ Weekly Trending of Parrot Internal Representation in GitHub
+
+
\ No newline at end of file
diff --git a/parrot/daily/index.xml b/parrot/daily/index.xml
index 594d9ab3e69..23546fc3064 100644
--- a/parrot/daily/index.xml
+++ b/parrot/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Parrot Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:14Z
+ 2023-12-24T01:38:54Z
Daily Trending of Parrot in GitHub
\ No newline at end of file
diff --git a/parrot/weekly/index.xml b/parrot/weekly/index.xml
new file mode 100644
index 00000000000..f88db72548c
--- /dev/null
+++ b/parrot/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Parrot Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:31Z
+ Weekly Trending of Parrot in GitHub
+
+
\ No newline at end of file
diff --git a/pascal/daily/index.xml b/pascal/daily/index.xml
index 830a41ca92a..dfa4a7bcaf7 100644
--- a/pascal/daily/index.xml
+++ b/pascal/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Pascal Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:16Z
+ 2023-12-24T01:38:56Z
Daily Trending of Pascal in GitHub
-
- FrankBijnen/ExifToolGui
- 2023-12-23T01:35:16Z
- tag:github.com,2023-12-23:/FrankBijnen/ExifToolGui
-
- <p>A GUI for ExifTool</p><hr>
-
\ No newline at end of file
diff --git a/pascal/weekly/index.xml b/pascal/weekly/index.xml
new file mode 100644
index 00000000000..6b82a06d411
--- /dev/null
+++ b/pascal/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Pascal Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:34Z
+ Weekly Trending of Pascal in GitHub
+
+
+ RomanYankovsky/ndyacclex
+ 2023-12-24T01:56:34Z
+ tag:github.com,2023-12-24:/RomanYankovsky/ndyacclex
+
+ <p>Parser generator toolset for Delphi (Yacc & Lex)</p><hr>
+
+
\ No newline at end of file
diff --git a/pawn/daily/index.xml b/pawn/daily/index.xml
index 6f07c40583b..f778c3897e7 100644
--- a/pawn/daily/index.xml
+++ b/pawn/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pawn Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:19Z
+ 2023-12-24T01:38:58Z
Daily Trending of Pawn in GitHub
\ No newline at end of file
diff --git a/pawn/weekly/index.xml b/pawn/weekly/index.xml
new file mode 100644
index 00000000000..1aaaa217b4d
--- /dev/null
+++ b/pawn/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pawn Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:35Z
+ Weekly Trending of Pawn in GitHub
+
+
\ No newline at end of file
diff --git a/peg.js/daily/index.xml b/peg.js/daily/index.xml
index 9b46644a5a4..e7e9494f69c 100644
--- a/peg.js/daily/index.xml
+++ b/peg.js/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PEG.js Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:18Z
+ 2023-12-24T01:38:58Z
Daily Trending of PEG.js in GitHub
\ No newline at end of file
diff --git a/peg.js/weekly/index.xml b/peg.js/weekly/index.xml
new file mode 100644
index 00000000000..d12e422583d
--- /dev/null
+++ b/peg.js/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PEG.js Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:37Z
+ Weekly Trending of PEG.js in GitHub
+
+
\ No newline at end of file
diff --git a/pep8/daily/index.xml b/pep8/daily/index.xml
index 4543fbfbb65..9a91cbfacfe 100644
--- a/pep8/daily/index.xml
+++ b/pep8/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pep8 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:20Z
+ 2023-12-24T01:38:59Z
Daily Trending of Pep8 in GitHub
\ No newline at end of file
diff --git a/pep8/weekly/index.xml b/pep8/weekly/index.xml
new file mode 100644
index 00000000000..a60a0af5103
--- /dev/null
+++ b/pep8/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pep8 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:37Z
+ Weekly Trending of Pep8 in GitHub
+
+
\ No newline at end of file
diff --git a/perl/daily/index.xml b/perl/daily/index.xml
index 009e01a126c..69c6a94c012 100644
--- a/perl/daily/index.xml
+++ b/perl/daily/index.xml
@@ -1,21 +1,7 @@
GitHub Perl Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:33Z
+ 2023-12-24T01:39:17Z
Daily Trending of Perl in GitHub
-
- jevinskie/llvm-etc
- 2023-12-23T01:35:33Z
- tag:github.com,2023-12-23:/jevinskie/llvm-etc
-
- <p>Various files that I use while working with LLVM</p><hr>
-
-
- mshinall/resize-images
- 2023-12-23T01:35:33Z
- tag:github.com,2023-12-23:/mshinall/resize-images
-
- <p></p><hr><h1>resize-images</h1>
<p>Use ImageMagick identify and convert to bulk resize one or more images to a different size. You need to have ImageMagick installed.</p>
-
\ No newline at end of file
diff --git a/perl/weekly/index.xml b/perl/weekly/index.xml
new file mode 100644
index 00000000000..ffa99ecfaa6
--- /dev/null
+++ b/perl/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Perl Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:44Z
+ Weekly Trending of Perl in GitHub
+
+
+ bmartins/CTT
+ 2023-12-24T01:56:44Z
+ tag:github.com,2023-12-24:/bmartins/CTT
+
+ <p></p><hr><p>CTT - Perl package to query CTT (Portuguese Post Office)</p>
+
+
+ bkendzior/cowfiles
+ 2023-12-24T01:56:44Z
+ tag:github.com,2023-12-24:/bkendzior/cowfiles
+
+ <p>ASCII cowfiles for cowsay</p><hr><h1>cowfiles</h1>
<p>Additional ASCII cowfiles for <a href="http://en.wikipedia.org/wiki/Cowsay">cowsay</a>.</p>
<h2>Installation</h2>
<p>First, download and install <code>cowsay</code>.</p>
<ul>
<li>OSX: <code>brew install cowsay</code></li>
<li>GNU/Linux:
<ul>
<li>Debian based distros (Ubuntu): <code>sudo apt-get install cowsay</code></li>
<li>Arch based distros: <code>pacman -S cowsay</code></li>
<li>RHEL/CentOS based distros: <code>dnf install cowsay</code></li>
<li>OpenSUSE: <code>zypper install cowsay</code></li>
</ul> </li>
</ul>
<p>Next, you need to place the cowfiles somewhere that <code>cowsay</code> can locate them. I recommend creating a <code>.cowsay</code> folder under your home directory. Clone the contents of this repo in that folder:</p>
<pre><code>git clone https://github.com/bkendzior/cowfiles.git ~/.cowsay
</code></pre>
<p>Now, add the new folder to your $COWPATH environment variable. Append this line to your shell's configuration file (.bashrc, .zshrc, .cshrc).</p>
<pre><code>COWPATH="$COWPATH:$HOME/.cowsay/cowfiles"
</code></pre>
<h2>As MOTD</h2>
<p>If you have <a href="http://en.wikipedia.org/wiki/Fortune_(Unix)"><code>fortune</code></a> installed, here is a simple bash function that you can place in your shell's appropriate dotfile (bashrc, zshrc, cshrc) that will give you a useful quip from a funky cow whenever you open a new terminal session.</p>
<pre><code class="language-bash"># Cow-spoken fortunes every time you open a terminal
function cowsayfortune {
NUMOFCOWS=`cowsay -l | tail -n +2 | wc -w`
WHICHCOW=$((RANDOM%$NUMOFCOWS+1))
THISCOW=`cowsay -l | tail -n +2 | sed -e 's/\ /\'$'\n/g' | sed $WHICHCOW'q;d'`
#echo "Selected cow: ${THISCOW}, from ${WHICHCOW}"
fortune | cowsay -f $THISCOW -W 100
}
cowsayfortune
</code></pre>
+
+
+ brucemiller/LaTeXML
+ 2023-12-24T01:56:44Z
+ tag:github.com,2023-12-24:/brucemiller/LaTeXML
+
+ <p>LaTeXML: a TeX and LaTeX to XML/HTML/ePub/MathML translator.</p><hr><p>=pod</p>
<p>=head1 L<LaTeXML|<a href="http://dlmf.nist.gov/LaTeXML/%3E">http://dlmf.nist.gov/LaTeXML/></a></p>
<p>=for html <a href="https://github.com/brucemiller/LaTeXML/actions?query=workflow%3ACI"><img src="https://github.com/brucemiller/LaTeXML/workflows/CI/badge.svg?sanitize=true"></a> <a href="https://raw.githubusercontent.com/brucemiller/LaTeXML/master/LICENSE"><img src="https://camo.githubusercontent.com/60ffad3138b8c6d483ff061480f4bb50f27be37a/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4343302d626c75652e737667" alt="license" data-canonical-src="http://img.shields.io/badge/license-CC0-blue.svg" style="max-width:100%;"></a> <a href="https://metacpan.org/release/LaTeXML"><img src="https://badge.fury.io/pl/LaTeXML.svg?sanitize=true" alt="CPAN version" height="18"></a></p>
<p>LaTeXML is a TeX & LaTeX to XML, HTML, MathML, ePub, JATS, ... converter.</p>
<p>See the included L<Manual|<a href="http://dlmf.nist.gov/LaTeXML/manual.pdf%3E">http://dlmf.nist.gov/LaTeXML/manual.pdf></a> for documentation.</p>
<p>The official project home page is at L<a href="http://dlmf.nist.gov/LaTeXML/">http://dlmf.nist.gov/LaTeXML/</a>.</p>
<p>LaTeXML development is currently hosted on L<GitHub|<a href="https://github.com/brucemiller/LaTeXML%3E">https://github.com/brucemiller/LaTeXML></a>, where you can retrieve and browse the current source, along with an L<Issue tracker|<a href="https://github.com/brucemiller/LaTeXML/issues%3E">https://github.com/brucemiller/LaTeXML/issues></a> and L<Wiki|<a href="https://github.com/brucemiller/LaTeXML/wiki%3E">https://github.com/brucemiller/LaTeXML/wiki></a>.</p>
<p>For general discussion feel free to join the L<mailing list|<a href="http://lists.informatik.uni-erlangen.de/mailman/listinfo/latexml%3E">http://lists.informatik.uni-erlangen.de/mailman/listinfo/latexml></a>.</p>
<p>=head1 L<LICENSE|<a href="http://dlmf.nist.gov/LaTeXML/notices.html%3E">http://dlmf.nist.gov/LaTeXML/notices.html></a></p>
<p>See the L<LICENSE|<a href="https://github.com/brucemiller/LaTeXML/raw/master/LICENSE%3E">https://github.com/brucemiller/LaTeXML/blob/master/LICENSE></a> file for copyright and licensing information.</p>
<p>=head1 L<AUTHOR|<a href="https://www.nist.gov/people/bruce-r-miller%3E">https://www.nist.gov/people/bruce-r-miller></a></p>
<p>Bruce R. Miller, L<a href="mailto:bruce.miller@nist.gov">mailto:bruce.miller@nist.gov</a>, Deyan Ginev, L<a href="mailto:deyan.ginev@gmail.com">mailto:deyan.ginev@gmail.com</a>.</p>
<p>=cut</p>
+
+
\ No newline at end of file
diff --git a/php/daily/index.xml b/php/daily/index.xml
index 8e97c8a4aa1..38846bcc761 100644
--- a/php/daily/index.xml
+++ b/php/daily/index.xml
@@ -1,28 +1,7 @@
GitHub PHP Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:28Z
+ 2023-12-24T01:39:06Z
Daily Trending of PHP in GitHub
-
- nafiesl/uptime-monitor
- 2023-12-23T01:35:28Z
- tag:github.com,2023-12-23:/nafiesl/uptime-monitor
-
- <p>A self-hosted web monitoring tool, built with laravel</p><hr><h1>Uptime Monitor</h1>
<p>Uptime Monitor is a self-hosted web monitoring tool, built with laravel.</p>
<h2>Features</h2>
<ul>
<li>Monitor your web uptime per minutes (or any time interval)</li>
<li>Record response time on each web</li>
<li>Show uptime badges in 3 colors: green for up, yellow for warning, red for down, based on response time</li>
<li>Send telegram notification when you site down for 5 minutes (based on check periode)</li>
</ul>
<h2>Why I need this?</h2>
<ul>
<li>Open-source, modify as you need</li>
<li>Self-hosted, deploy on your own server</li>
<li>Store and control your monitoring logs yourself</li>
<li>Let you know when your websites are down</li>
<li>For freelancer/agency, increase your client's trust because you monitor their website</li>
</ul>
<h2>How to Install</h2>
<h3>Server Requirements</h3>
<p>This application can be installed on local server and online server with these specifications:</p>
<ol>
<li>PHP 8.1 (and meet <a href="https://laravel.com/docs/10.x/deployment#server-requirements">Laravel 10.x requirements</a>).</li>
<li>MySQL or MariaDB Database.</li>
<li>SQLite (for automated testing).</li>
</ol>
<h3>Installation Steps</h3>
<ol>
<li>Clone repository: <code>git clone https://github.com/nafiesl/uptime-monitor.git</code></li>
<li><code>$ cd uptime-monitor</code></li>
<li>Install PHP dependencies: <code>$ composer install</code></li>
<li>Install javscript dependencies: <code>$ npm install</code></li>
<li>Copy <code>.env.example</code> to <code>.env</code>: <code>$ cp .env.example .env</code></li>
<li>Generate application key: <code>$ php artisan key:generate</code></li>
<li>Create a MySQL or MariaDB database.</li>
<li>Configure database and environment variables <code>.env</code>. <pre><code>APP_URL=http://localhost:8000
APP_TIMEZOME="Asia/Jakarta"
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
TELEGRAM_NOTIFER_TOKEN=
</code></pre> </li>
<li>Run database migration: <code>$ php artisan migrate --seed</code></li>
<li>Build assets: <code>$ npm run build</code></li>
<li>Run task scheduler: <code>$ php artisan schedule:work</code></li>
<li>Start server in a separeted terminal tab: <code>$ php artisan serve</code></li>
<li>Open the web app: <a href="http://localhost:8000">http://localhost:8000</a>.</li>
<li>Login using default user credential:
<ul>
<li>Email: <code>admin@example.net</code></li>
<li>Password: <code>password</code></li>
</ul> </li>
<li>Go to <strong>Customer Site</strong> menu.</li>
<li>Add some new customer sites (name and URL).</li>
<li>After adding customer sites, go to <strong>Dashboard</strong></li>
<li>Click <strong>Start Monitoring</strong> to update the uptime badge per minute.</li>
</ol>
<h3>Telegram Notifier Setup</h3>
<p>In order to get notified in Telegram when the customer sites are down, we need to use a Telegram Bot and a Chat ID</p>
<ol>
<li>Create a Telegram Bot (<a href="https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a#create-a-telegram-bot-and-get-a-bot-token">how to</a>)</li>
<li>Get a Chat ID of the Telegram Bot (<a href="https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a#get-chat-id-for-a-private-chat">how to</a>)</li>
<li>Update <code>.env</code> file, set <code>TELEGRAM_NOTIFER_TOKEN=your_telegram_bot_token</code></li>
<li>Set our Chat ID in the Profile Page.
<ul>
<li>Go to User Profile -> Click Edit Profile</li>
<li>Fill the Telegram Chat ID field with <code>your_chat_id</code></li>
<li>Click Update Profile</li>
</ul> </li>
<li>By default, we will have <strong>5 minutes</strong> inteval when the customer sites are down. But we can change the interval per customer sites.
<ul>
<li>Go to Customer Site menu</li>
<li>Select one of the customer site and click Edit link</li>
<li>Set the Notify User Interval field, between 0 to 60.</li>
<li>Set the Notify User Interval field to 0 if you don't want to get notified.</li>
</ul> </li>
</ol>
<h2>Screenshot</h2>
<h4>Dashboard</h4>
<p><img src="https://github.com/nafiesl/uptime-monitor/assets/8721551/7b115df3-f2c0-467e-ba1e-b488c0452bc1" alt="screen_2023-12-20_004"></p>
<h4>Dashboard in mobile device</h4>
<p><img src="https://github.com/nafiesl/uptime-monitor/assets/8721551/11173d6f-437d-49b0-a509-2ddeb7e69b7e" alt="screen_2023-12-20_009"></p>
<h4>Monitoring graph on customer site detail</h4>
<p><img src="https://github.com/nafiesl/uptime-monitor/assets/8721551/4f412aaf-8848-484b-8ad8-a625898ea187" alt="screen_2023-12-20_005"></p>
<h4>Monitoring log tab on customer site detail</h4>
<p><img src="https://github.com/nafiesl/uptime-monitor/assets/8721551/2cbbda3c-a13c-4818-8ab7-25ca0ad04b53" alt="screen_2023-12-20_006"></p>
<h4>User profile menu</h4>
<p><img src="https://github.com/nafiesl/uptime-monitor/assets/8721551/6f352dc4-bfbe-4b1a-8d0e-ee5df4e97ca1" alt="screen_2023-12-20_007"></p>
<h4>Telegram notification sample</h4>
<p><img src="https://github.com/nafiesl/uptime-monitor/assets/8721551/15ebca99-d920-4764-a567-06e2e1b748df" alt="screen_2023-12-20_008"></p>
<h2>Lisensi</h2>
<p>Uptime Monitor project is an open-sourced software licensed under the <a href="https://raw.githubusercontent.com/nafiesl/uptime-monitor/master/LICENSE">Lisensi MIT</a>.</p>
-
-
- Log1x/filament-starter
- 2023-12-23T01:35:28Z
- tag:github.com,2023-12-23:/Log1x/filament-starter
-
- <p>My preferred starting point for TALL stack projects using Filament. ⚡</p><hr><h1>Filament Starter</h1>
<p>This is my preferred starting point to quickly bootstrap <a href="https://tallstack.dev/">TALL stack</a> projects utilizing <a href="https://filamentphp.com/">Filament</a> for the admin panel.</p>
<p><img src="https://i.imgur.com/AxerbeO.png" alt="Screenshot"></p>
<h2>Features</h2>
<ul>
<li>🚀 Quick, clean starting point with an example <strong>Post</strong> model and resource.</li>
<li>🧑💻 Fully pre-configured and <a href="https://raw.githubusercontent.com/Log1x/filament-starter/main/#plugins-used">customized</a> Filament panel with best practices in place.</li>
<li>🎨 Clean, minimally styled frontend powered by Livewire.</li>
<li>💄 TailwindCSS and Vite ready for immediate use.</li>
<li>👷 Pre-bundled Livewire and Alpine for easy extendability.</li>
<li>⚡️ SPA-ready in both Filament and the frontend.</li>
<li>🔨 GitHub Actions workflows for Pint with pre-configured Dependabot for dependencies.</li>
<li>🔍️ Easy programmatic SEO using <a href="https://github.com/romanzipp/Laravel-SEO">romanzipp/laravel-seo</a>.</li>
<li>📝 Automatic sitemap generation using <a href="https://github.com/spatie/laravel-sitemap">spatie/laravel-sitemap</a>.</li>
</ul>
<h2>Requirements</h2>
<p>Make sure all dependencies have been installed before moving on:</p>
<ul>
<li><a href="https://secure.php.net/manual/en/install.php">PHP</a> >= 8.1</li>
<li><a href="https://getcomposer.org/download/">Composer</a></li>
<li><a href="http://nodejs.org/">Node.js</a> >= 18</li>
<li><a href="https://yarnpkg.com/en/docs/install">Yarn</a></li>
</ul>
<h2>Getting Started</h2>
<p>Start by cloning the Filament Starter repository and initializing the <code>.env</code> file:</p>
<pre><code class="language-sh">git clone --depth=1 git@github.com:log1x/filament-starter.git
cd filament-starter
cp .env.example .env
composer install
php artisan key:generate
</code></pre>
<p>After <code>.env</code> is configured, you can proceed to migrate & seed the database:</p>
<pre><code class="language-sh">php artisan migrate:fresh --seed
</code></pre>
<p>Once the database is seeded, you can login at <code>/admin</code> using the default admin user:</p>
<pre><code class="language-yaml">Username: admin
Password: admin
</code></pre>
<h3>Build Assets</h3>
<p>The project assets are compiled using Vite. This can be done by installing the dependencies and running the build command with Yarn.</p>
<pre><code class="language-sh">yarn install
yarn build
</code></pre>
<h2>Plugins Used</h2>
<p>The following <a href="https://filamentphp.com/plugins">Filament plugins</a> come fully implemented and configured out of the box:</p>
<table>
<thead>
<tr>
<th align="left"><strong>Plugin</strong></th>
<th align="left"><strong>Description</strong></th>
<th align="left"><strong>Author</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><a href="https://github.com/awcodes/filament-curator">Curator</a></td>
<td align="left">A beautiful media library.</td>
<td align="left"><a href="https://github.com/awcodes">awcodes</a></td>
</tr>
<tr>
<td align="left"><a href="https://github.com/awcodes/filament-gravatar">Gravatar</a></td>
<td align="left">Easy avatar integration powered by Gravatar.</td>
<td align="left"><a href="https://github.com/awcodes">awcodes</a></td>
</tr>
<tr>
<td align="left"><a href="https://github.com/bezhansalleh/filament-exceptions">Exceptions</a></td>
<td align="left">A simple but powerful Exception viewer.</td>
<td align="left"><a href="https://github.com/bezhansalleh">bezhansalleh</a></td>
</tr>
<tr>
<td align="left"><a href="https://github.com/croustibat/filament-jobs-monitor">Jobs Monitor</a></td>
<td align="left">Easily monitor background jobs and their progress.</td>
<td align="left"><a href="https://github.com/croustibat">croustibat</a></td>
</tr>
<tr>
<td align="left"><a href="https://github.com/jeffgreco13/filament-breezy">Breezy</a></td>
<td align="left">Customizable user profile pages and 2FA support.</td>
<td align="left"><a href="https://github.com/jeffgreco13">jeffgreco13</a></td>
</tr>
<tr>
<td align="left"><a href="https://github.com/pboivin/filament-peek">Peek</a></td>
<td align="left">Quick & efficient front-end previews of resources.</td>
<td align="left"><a href="https://github.com/pboivin">pboivin</a></td>
</tr>
<tr>
<td align="left"><a href="https://github.com/z3d0x/filament-logger">Logger</a></td>
<td align="left">Zero-config resource activity logging.</td>
<td align="left"><a href="https://github.com/z3d0x">z3d0x</a></td>
</tr>
</tbody>
</table>
<h2>Bug Reports</h2>
<p>If you discover a bug in Filament Starter, please <a href="https://github.com/log1x/filament-starter/issues">open an issue</a>.</p>
<h2>Contributing</h2>
<p>Contributing whether it be through PRs, reporting an issue, or suggesting an idea is encouraged and appreciated.</p>
<h2>License</h2>
<p>Filament Starter is provided under the <a href="https://raw.githubusercontent.com/Log1x/filament-starter/main/LICENSE.md">MIT License</a>.</p>
-
-
- yebekhe/TVC
- 2023-12-23T01:35:28Z
- tag:github.com,2023-12-23:/yebekhe/TVC
-
- <p></p><hr><h1>V2ray Collector</h1>
<p align="center"> <img src="https://img.shields.io/github/languages/top/yebekhe/TVC?color=5D6D7E" alt="Github Top Language"> <img src="https://img.shields.io/github/license/yebekhe/TVC?color=5D6D7E" alt="GitHub license"> <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/yebekhe/TVC"> <img alt="GitHub commit activity (branch)" src="https://img.shields.io/github/commit-activity/t/yebekhe/TVC"> </p>
<p align="center"> <b>This project is intended for educational purposes only. Any other use of it, including commercial, personal, or non-educational use, is not accepted!</b> </p>
<p align="center">This is a PHP script that collects V2Ray Configs from various Channels and saves them to different Subscription files based on their protocol type (SHADOWSOCKS, VLESS, VMESS, TROJAN, TUIC and HYSTERIA2).</p>
<h2>Instructions & Usage</h2>
<p>To use this project, simply import the subscription links into your preferred client. Ensure that your client supports at least SHADOWSOCKS, VLESS, VMESS, TROJAN, TUIC and HYSTERIA2.</p>
<p>You can access the project's subscription links through our Telegram bot: <a href="https://t.me/V2rayCollectorBot">TVC BOT</a> or use Tables bellow.</p>
<table>
<thead>
<tr>
<th>Core</th>
<th>Mix</th>
</tr>
</thead>
<tbody>
<tr>
<td>Xray</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/mix">Group Mix Link</a></td>
</tr>
<tr>
<td>Xray (Base64)</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/mix">Group Mix Link</a></td>
</tr>
<tr>
<td>Singbox</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/mix.json">Group Mix Link</a></td>
</tr>
<tr>
<td>Clash</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/clash/mix">Group Mix Link</a></td>
</tr>
<tr>
<td>Clash.Meta</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/meta/mix">Group Mix Link</a></td>
</tr>
<tr>
<td>Surfboard</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/surfboard/mix">Group Mix Link</a></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Core</th>
<th>VMess</th>
<th>VLess</th>
<th>Reality</th>
<th>Trojan</th>
<th>Shadowsocks</th>
<th>Tuic</th>
<th>Hysteria2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Xray</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/vmess">VMess Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/vless">VLess Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/reality">Reality Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/trojan">Trojan Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/ss">Shadowsocks Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/tuic">Tuic Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/normal/hy2">Hysteria2 Link</a></td>
</tr>
<tr>
<td>Xray (Base64)</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/vmess">VMess Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/vless">VLess Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/reality">Reality Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/trojan">Trojan Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/ss">Shadowsocks Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/tuic">Tuic Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/xray/base64/hy2">Hysteria2 Link</a></td>
</tr>
<tr>
<td>Singbox</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/vmess.json">VMess Link</a></td>
<td><a href="hhttps://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/vless.json">VLess Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/reality.json">Reality Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/trojan.json">Trojan Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/ss.json">Shadowsocks Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/tuic.json">Tuic Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/singbox/hy3.json">Hysteria2 Link</a></td>
</tr>
<tr>
<td>Clash</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/clash/vmess">VMess Link</a></td>
<td>VLess Not Supported</td>
<td>Reality Not Supported</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/clash/trojan">Trojan Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/clash/ss">Shadowsocks Link</a></td>
<td>Tuic Not Supported</td>
<td>Hysteria2 Not Supported</td>
</tr>
<tr>
<td>Clash.Meta</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/meta/vmess">VMess Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/meta/vless">VLess Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/meta/reality">Reality Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/meta/trojan">Trojan Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/meta/ss">Shadowsocks Link</a></td>
<td>Tuic Not Supported</td>
<td>Hysteria2 Not Supported</td>
</tr>
<tr>
<td>Surfboard</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/surfboard/vmess">VMess Link</a></td>
<td>VLess Not Supported</td>
<td>Reality Not Supported</td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/surfboard/trojan">Trojan Link</a></td>
<td><a href="https://raw.githubusercontent.com/yebekhe/TVC/main/subscriptions/surfboard/ss">Shadowsocks Link</a></td>
<td>Tuic Not Supported</td>
<td>Hysteria2 Not Supported</td>
</tr>
</tbody>
</table>
<h2>Node Sources</h2>
<p>This project currently utilizes Channels as the source of v2ray nodes.</p>
<p>You can access the Channels list through our Telegram bot: <a href="https://t.me/V2rayCollectorBot">TVC BOT</a>.</p>
<h2>Contribution</h2>
<p>If you have a Channel and you want to add it to this project or you know Channels that can be used in this project, you can ask for addition in the Issues section or in our <a href="https://t.me/V2rayCollectorGroup">Telegram group</a>.</p>
<h2>License</h2>
<p>This project is licensed under the AGPL-3.0 license - see the LICENSE file for details.</p>
-
\ No newline at end of file
diff --git a/php/weekly/index.xml b/php/weekly/index.xml
new file mode 100644
index 00000000000..9855e343c75
--- /dev/null
+++ b/php/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub PHP Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:51Z
+ Weekly Trending of PHP in GitHub
+
+
+ rajkumardusad/IP-Tracer
+ 2023-12-24T01:56:51Z
+ tag:github.com,2023-12-24:/rajkumardusad/IP-Tracer
+
+ <p>Track any ip address with IP-Tracer. IP-Tracer is developed for Linux and Termux. you can retrieve any ip address information using IP-Tracer.</p><hr><h2>What is IP-Tracer ?</h2>
<p>IP-Tracer is used to track an ip address. IP-Tracer is developed for Termux and Linux based systems. you can easily retrieve ip address information using IP-Tracer. IP-Tracer use ip-api to track ip address.</p>
<p align="center"> <img width="47%" src="https://raw.githubusercontent.com/rajkumardusad/IP-Tracer/master/src/Screenshot_2018-08-06-15-32-17-1.png"> <img width="40%" src="https://raw.githubusercontent.com/rajkumardusad/IP-Tracer/master/src/Screenshot_2020-05-17-20-52-59-1.png"> </p>
<h2>How to install IP-Tracer ?</h2>
<ul>
<li> <p><code>apt update</code></p> </li>
<li> <p><code>apt install git -y</code></p> </li>
<li> <p><code>git clone https://github.com/rajkumardusad/IP-Tracer.git</code></p> </li>
<li> <p><code>cd IP-Tracer</code></p> </li>
<li> <p><code>chmod +x install</code></p> </li>
<li> <p><code>sh install</code> or <code>./install</code></p> </li>
</ul>
<h2>How to use IP-Tracer</h2>
<ul>
<li> <p><code>trace -m</code> to track your own ip address.</p> </li>
<li> <p><code>trace -t target-ip</code> to track other's ip address for example <code>ip-tracer -t 127.0.0.1</code></p> </li>
<li> <p><code>trace</code> for more information.</p> </li>
</ul>
<p><strong>OR</strong></p>
<ul>
<li> <p><code>ip-tracer -m</code> to track your own ip address.</p> </li>
<li> <p><code>ip-tracer -t target-ip</code> to track other's ip address for example <code>ip-tracer -t 127.0.0.1</code></p> </li>
<li> <p><code>ip-tracer</code> for more information.</p> </li>
</ul>
+
+
+ krayin/laravel-crm
+ 2023-12-24T01:56:51Z
+ tag:github.com,2023-12-24:/krayin/laravel-crm
+
+ <p>Free & Opensource Laravel CRM solution for SMEs and Enterprises for complete customer lifecycle management.</p><hr><p align="center"> <a href="http://krayincrm.com"><img src="https://bagisto.com/wp-content/uploads/2021/06/bagisto-logo.png" alt="Total Downloads"></a> </p>
<p align="center"> <a href="https://packagist.org/packages/krayin/laravel-crm"><img src="https://poser.pugx.org/krayin/laravel-crm/d/total.svg?sanitize=true" alt="Total Downloads"></a> <a href="https://packagist.org/packages/krayin/laravel-crm"><img src="https://poser.pugx.org/krayin/laravel-crm/v/stable.svg?sanitize=true" alt="Latest Stable Version"></a> <a href="https://packagist.org/packages/krayin/laravel-crm"><img src="https://poser.pugx.org/krayin/laravel-crm/license.svg?sanitize=true" alt="License"></a> </p>
<h2>Topics</h2>
<ol>
<li><a href="https://raw.githubusercontent.com/krayin/laravel-crm/master/#introduction">Introduction</a></li>
<li><a href="https://raw.githubusercontent.com/krayin/laravel-crm/master/#documentation">Documentation</a></li>
<li><a href="https://raw.githubusercontent.com/krayin/laravel-crm/master/#requirements">Requirements</a></li>
<li><a href="https://raw.githubusercontent.com/krayin/laravel-crm/master/#installation-and-configuration">Installation & Configuration</a></li>
<li><a href="https://raw.githubusercontent.com/krayin/laravel-crm/master/#license">License</a></li>
<li><a href="https://raw.githubusercontent.com/krayin/laravel-crm/master/#security-vulnerabilities">Security Vulnerabilities</a></li>
</ol>
<h3>Introduction</h3>
<p><a href="https://krayincrm.com">Krayin CRM</a> is a hand tailored CRM framework built on some of the hottest opensource technologies such as <a href="https://laravel.com">Laravel</a> (a <a href="https://secure.php.net/">PHP</a> framework) and <a href="https://vuejs.org">Vue.js</a> a progressive Javascript framework.</p>
<p><strong>Free & Opensource Laravel CRM solution for SMEs and Enterprises for complete customer lifecycle management.</strong></p>
<p><strong>Read our documentation: <a href="https://devdocs.krayincrm.com/">Krayin CRM Docs</a></strong></p>
<p><strong>We also have a forum for any type of concerns, feature requests, or discussions. Please visit: <a href="https://forums.krayincrm.com/">Krayin CRM Forums</a></strong></p>
<h1>Visit our live <a href="https://demo.krayincrm.com">Demo</a></h1>
<p>It packs in lots of features that will allow your E-Commerce business to scale in no time:</p>
<ul>
<li>Descriptive and Simple Admin Panel.</li>
<li>Admin Dashboard.</li>
<li>Custom Attributes.</li>
<li>Built on Modular Approach.</li>
<li>Email parsing via Sendgrid.</li>
<li>Check out <a href="https://krayincrm.com/features/">these features and more</a>.</li>
</ul>
<p><strong>For Developers</strong>: Take advantage of two of the hottest frameworks used in this project -- Laravel and Vue.js -- both of which have been used in Krayin CRM.</p>
<h3>Documentation</h3>
<h4>Krayin Documentation <a href="https://devdocs.krayincrm.com">https://devdocs.krayincrm.com</a></h4>
<h3>Requirements</h3>
<ul>
<li><strong>SERVER</strong>: Apache 2 or NGINX.</li>
<li><strong>RAM</strong>: 3 GB or higher.</li>
<li><strong>PHP</strong>: 7.4 or higher.</li>
<li><strong>For MySQL users</strong>: 5.7.23 or higher.</li>
<li><strong>For MariaDB users</strong>: 10.2.7 or Higher.</li>
<li><strong>Node</strong>: 8.11.3 LTS or higher.</li>
<li><strong>Composer</strong>: 1.6.5 or higher.</li>
</ul>
<h3>Installation and Configuration</h3>
<h5>Execute these commands below, in order</h5>
<pre><code>composer create-project krayin/laravel-crm
</code></pre>
<ul>
<li> <p>Find <strong>.env</strong> file in root directory and change the <strong>APP_URL</strong> param to your <strong>domain</strong>.</p> </li>
<li> <p>Also, Configure the <strong>Mail</strong> and <strong>Database</strong> parameters inside <strong>.env</strong> file.</p> </li>
</ul>
<pre><code>php artisan krayin-crm:install
</code></pre>
<p><strong>To execute Krayin</strong>:</p>
<h5>On server:</h5>
<p>Warning: Before going into production mode we recommend you uninstall developer dependencies. In order to do that, run the command below:</p>
<blockquote>
<p>composer install --no-dev</p>
</blockquote>
<pre><code>Open the specified entry point in your hosts file in your browser or make an entry in hosts file if not done.
</code></pre>
<h5>On local:</h5>
<pre><code>php artisan route:clear
php artisan serve
</code></pre>
<p><strong>How to log in as admin:</strong></p>
<blockquote>
<p><em>http(s)://example.com/admin/login</em></p>
</blockquote>
<pre><code>email:admin@example.com
password:admin123
</code></pre>
<h3>License</h3>
<p>Krayin CRM is a truly opensource CRM framework which will always be free under the <a href="https://github.com/krayin/laravel-crm/raw/master/LICENSE">MIT License</a>.</p>
<h3>Security Vulnerabilities</h3>
<p>Please don't disclose security vulnerabilities publicly. If you find any security vulnerability in Krayin CRM then please email us: mailto:<a href="mailto:sales@krayincrm.com">sales@krayincrm.com</a>.</p>
+
+
+ MrPunyapal/basic-crud
+ 2023-12-24T01:56:51Z
+ tag:github.com,2023-12-24:/MrPunyapal/basic-crud
+
+ <p>Example of crud operations best practices for beginner to advanced</p><hr><h1>Laravel CRUD Operations Best Practices Example Beginner to Advanced</h1>
<p><a href="https://github.com/mr-punyapal/basic-crud/actions/workflows/tests.yml"><img src="https://github.com/mr-punyapal/basic-crud/actions/workflows/tests.yml/badge.svg?sanitize=true" alt="Tests"></a></p>
<h2>Getting Started 🚀</h2>
<p>These instructions will guide you through setting up the project on your local machine for development and testing.</p>
<h3>Prerequisites</h3>
<p>You need to have installed the following software:</p>
<ul>
<li>PHP 8.2</li>
<li>Composer 2.0.8</li>
<li>MySQL 8.0.23</li>
<li>Node 20.10.0</li>
</ul>
<h3>Installing</h3>
<p>Follow these steps to set up a development environment:</p>
<ol>
<li> <p><strong>Clone the repository</strong></p> <pre><code class="language-bash">git clone https://github.com/mr-punyapal/basic-crud.git
</code></pre> </li>
<li> <p><strong>Install dependencies</strong></p> <pre><code class="language-bash">composer install
</code></pre> <pre><code class="language-bash">npm install
</code></pre> </li>
<li> <p><strong>Duplicate the .env.example file and rename it to .env</strong></p> <pre><code class="language-bash">cp .env.example .env
</code></pre> </li>
<li> <p><strong>Generate the application key</strong></p> <pre><code class="language-bash">php artisan key:generate
</code></pre> </li>
<li> <p><strong>Run migration and seed</strong></p> <pre><code class="language-bash">php artisan migrate --seed
</code></pre> </li>
<li> <p><strong>Run the application</strong></p> <pre><code class="language-bash">npm run dev
</code></pre> <pre><code class="language-bash">php artisan serve
</code></pre> </li>
</ol>
<h2>How to Test the Application 🧪</h2>
<ul>
<li> <p>Copy .env.testing.example to .env.testing</p> </li>
<li> <p>Update the database configuration according to your local environment</p> </li>
<li> <p>Create a new database for testing</p> </li>
<li> <p>Run the following commands</p> <pre><code class="language-bash">php artisan key:generate --env=testing
</code></pre> <pre><code class="language-bash">npm install && npm run build
</code></pre> <pre><code class="language-bash">./vendor/bin/pest --parallel
</code></pre> </li>
</ul>
<h3>Installing with Sail</h3>
<p>Laravel Sail is helpful when your local environment doesn't match with project requirements like different PHP versions. Only requirement is Docker to work with this project. For more details on Laravel Sail click <a href="https://laravel.com/docs/10.x/sail">here</a>.</p>
<p>Follow these steps to set up a development environment using Laravel Sail:</p>
<ol>
<li> <p><strong>Clone the repository</strong></p> <pre><code class="language-bash">git clone https://github.com/mr-punyapal/basic-crud.git
</code></pre> </li>
<li> <p><strong>Duplicate the .env.example file and rename it to .env</strong></p> <pre><code class="language-bash">cp .env.example .env
</code></pre> <p>Update the <code>DB_HOST</code> environment variable to value <code>mysql</code> (should be same as service name of database server)</p> </li>
<li> <p><strong>Install dependencies</strong></p> <pre><code class="language-bash">docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php82-composer:latest \
composer install --ignore-platform-reqs
</code></pre> <pre><code class="language-bash">./vendor/bin/sail run --rm laravel.test npm install
</code></pre> </li>
<li> <p><strong>Run the application</strong></p> <pre><code class="language-bash">./vendor/bin/sail up -d
</code></pre> <pre><code class="language-bash">./vendor/bin/sail npm run dev
</code></pre> </li>
<li> <p><strong>Generate the application key</strong></p> <pre><code class="language-bash">./vendor/bin/sail artisan key:generate
</code></pre> </li>
<li> <p><strong>Run migration and seed</strong></p> <pre><code class="language-bash">./vendor/bin/sail artisan migrate --seed
</code></pre> </li>
</ol>
<h2>How to Test the Application with Sail 🧪</h2>
<ul>
<li> <p>Copy .env.testing.example to .env.testing</p> </li>
<li> <p>Update the <code>DB_HOST</code> environment variable to value <code>mysql</code> (should be same as service name of database server)</p> </li>
<li> <p>Create a new database for testing</p> <pre><code class="language-bash">./vendor/bin/sail mysql
> create database <testing_database_name>
</code></pre> </li>
<li> <p>Run the following commands</p> <pre><code class="language-bash">./vendor/bin/sail artisan key:generate --env=testing
</code></pre> <pre><code class="language-bash">./vendor/bin/sail npm install && ./vendor/bin/sail npm run build
</code></pre> <pre><code class="language-bash">./vendor/bin/sail run --rm laravel.test ./vendor/bin/pest --parallel
</code></pre> </li>
</ul>
<h3>Give Feedback 💬</h3>
<p>Give your feedback on <a href="https://x.com/MrPunyapal">@MrPunyapal</a></p>
<h3>Contribute 🤝</h3>
<p>Contribute if you have any ideas to improve this project.</p>
+
+
\ No newline at end of file
diff --git a/pic/daily/index.xml b/pic/daily/index.xml
index c1dc213be4d..f8044b124bb 100644
--- a/pic/daily/index.xml
+++ b/pic/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pic Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:21Z
+ 2023-12-24T01:39:02Z
Daily Trending of Pic in GitHub
\ No newline at end of file
diff --git a/pic/weekly/index.xml b/pic/weekly/index.xml
new file mode 100644
index 00000000000..f1c94feb9a1
--- /dev/null
+++ b/pic/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pic Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:39Z
+ Weekly Trending of Pic in GitHub
+
+
\ No newline at end of file
diff --git a/pickle/daily/index.xml b/pickle/daily/index.xml
index 1d2334431b3..fead2e41e1b 100644
--- a/pickle/daily/index.xml
+++ b/pickle/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pickle Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:22Z
+ 2023-12-24T01:39:01Z
Daily Trending of Pickle in GitHub
\ No newline at end of file
diff --git a/pickle/weekly/index.xml b/pickle/weekly/index.xml
new file mode 100644
index 00000000000..b2430944460
--- /dev/null
+++ b/pickle/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pickle Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:39Z
+ Weekly Trending of Pickle in GitHub
+
+
\ No newline at end of file
diff --git a/picolisp/daily/index.xml b/picolisp/daily/index.xml
index af040aa8af0..7ac570808ad 100644
--- a/picolisp/daily/index.xml
+++ b/picolisp/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PicoLisp Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:49Z
+ 2023-12-24T01:39:27Z
Daily Trending of PicoLisp in GitHub
\ No newline at end of file
diff --git a/picolisp/weekly/index.xml b/picolisp/weekly/index.xml
new file mode 100644
index 00000000000..d5104517a6a
--- /dev/null
+++ b/picolisp/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PicoLisp Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:00Z
+ Weekly Trending of PicoLisp in GitHub
+
+
\ No newline at end of file
diff --git a/piglatin/daily/index.xml b/piglatin/daily/index.xml
index 6892133a80b..538432f9268 100644
--- a/piglatin/daily/index.xml
+++ b/piglatin/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PigLatin Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:50Z
+ 2023-12-24T01:39:27Z
Daily Trending of PigLatin in GitHub
\ No newline at end of file
diff --git a/piglatin/weekly/index.xml b/piglatin/weekly/index.xml
new file mode 100644
index 00000000000..ee382a83b35
--- /dev/null
+++ b/piglatin/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PigLatin Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:56:59Z
+ Weekly Trending of PigLatin in GitHub
+
+
\ No newline at end of file
diff --git a/pike/daily/index.xml b/pike/daily/index.xml
index 5f68c546ae3..f085d9f806b 100644
--- a/pike/daily/index.xml
+++ b/pike/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pike Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:52Z
+ 2023-12-24T01:39:26Z
Daily Trending of Pike in GitHub
\ No newline at end of file
diff --git a/pike/weekly/index.xml b/pike/weekly/index.xml
new file mode 100644
index 00000000000..92307e481ac
--- /dev/null
+++ b/pike/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pike Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:00Z
+ Weekly Trending of Pike in GitHub
+
+
\ No newline at end of file
diff --git a/plantuml/daily/index.xml b/plantuml/daily/index.xml
index 25785501edc..9448e5aaaf7 100644
--- a/plantuml/daily/index.xml
+++ b/plantuml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PlantUML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:51Z
+ 2023-12-24T01:39:25Z
Daily Trending of PlantUML in GitHub
\ No newline at end of file
diff --git a/plantuml/weekly/index.xml b/plantuml/weekly/index.xml
new file mode 100644
index 00000000000..62e0c3813c9
--- /dev/null
+++ b/plantuml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PlantUML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:01Z
+ Weekly Trending of PlantUML in GitHub
+
+
\ No newline at end of file
diff --git a/plpgsql/daily/index.xml b/plpgsql/daily/index.xml
index 3f2ac11de5f..60a659650d1 100644
--- a/plpgsql/daily/index.xml
+++ b/plpgsql/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PLpgSQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:56Z
+ 2023-12-24T01:39:29Z
Daily Trending of PLpgSQL in GitHub
\ No newline at end of file
diff --git a/plpgsql/weekly/index.xml b/plpgsql/weekly/index.xml
new file mode 100644
index 00000000000..ce08bcca324
--- /dev/null
+++ b/plpgsql/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub PLpgSQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:05Z
+ Weekly Trending of PLpgSQL in GitHub
+
+
+ usebasejump/basejump
+ 2023-12-24T01:57:05Z
+ tag:github.com,2023-12-24:/usebasejump/basejump
+
+ <p>Teams, personal accounts, permissions and billing for your Supabase app</p><hr>
+
+
\ No newline at end of file
diff --git a/plsql/daily/index.xml b/plsql/daily/index.xml
index 42ac6d99dfa..70510c29d3e 100644
--- a/plsql/daily/index.xml
+++ b/plsql/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PLSQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:55Z
+ 2023-12-24T01:39:31Z
Daily Trending of PLSQL in GitHub
\ No newline at end of file
diff --git a/plsql/weekly/index.xml b/plsql/weekly/index.xml
new file mode 100644
index 00000000000..1d18fddf6c0
--- /dev/null
+++ b/plsql/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PLSQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:03Z
+ Weekly Trending of PLSQL in GitHub
+
+
\ No newline at end of file
diff --git a/pod-6/daily/index.xml b/pod-6/daily/index.xml
index 39348a35567..2dd24a5e4e7 100644
--- a/pod-6/daily/index.xml
+++ b/pod-6/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pod 6 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:53Z
+ 2023-12-24T01:39:29Z
Daily Trending of Pod 6 in GitHub
\ No newline at end of file
diff --git a/pod-6/weekly/index.xml b/pod-6/weekly/index.xml
new file mode 100644
index 00000000000..c999b7c4a2e
--- /dev/null
+++ b/pod-6/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pod 6 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:02Z
+ Weekly Trending of Pod 6 in GitHub
+
+
\ No newline at end of file
diff --git a/pod/daily/index.xml b/pod/daily/index.xml
index 0f9b5d4a767..56c792e0892 100644
--- a/pod/daily/index.xml
+++ b/pod/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pod Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:54Z
+ 2023-12-24T01:39:30Z
Daily Trending of Pod in GitHub
\ No newline at end of file
diff --git a/pod/weekly/index.xml b/pod/weekly/index.xml
new file mode 100644
index 00000000000..a84f980383d
--- /dev/null
+++ b/pod/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pod Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:04Z
+ Weekly Trending of Pod in GitHub
+
+
\ No newline at end of file
diff --git a/pogoscript/daily/index.xml b/pogoscript/daily/index.xml
index cb88d6013e2..a7723c89b2a 100644
--- a/pogoscript/daily/index.xml
+++ b/pogoscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PogoScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:57Z
+ 2023-12-24T01:39:32Z
Daily Trending of PogoScript in GitHub
\ No newline at end of file
diff --git a/pogoscript/weekly/index.xml b/pogoscript/weekly/index.xml
new file mode 100644
index 00000000000..a7e78a12e8d
--- /dev/null
+++ b/pogoscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PogoScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:06Z
+ Weekly Trending of PogoScript in GitHub
+
+
\ No newline at end of file
diff --git a/pony/daily/index.xml b/pony/daily/index.xml
index d50ddeb807e..a1220a73d10 100644
--- a/pony/daily/index.xml
+++ b/pony/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pony Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:35:58Z
+ 2023-12-24T01:39:33Z
Daily Trending of Pony in GitHub
\ No newline at end of file
diff --git a/pony/weekly/index.xml b/pony/weekly/index.xml
new file mode 100644
index 00000000000..92bc8d708f4
--- /dev/null
+++ b/pony/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pony Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:07Z
+ Weekly Trending of Pony in GitHub
+
+
\ No newline at end of file
diff --git a/postcss/daily/index.xml b/postcss/daily/index.xml
index 5ac713e406a..8b9111b2624 100644
--- a/postcss/daily/index.xml
+++ b/postcss/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PostCSS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:03Z
+ 2023-12-24T01:39:38Z
Daily Trending of PostCSS in GitHub
\ No newline at end of file
diff --git a/postcss/weekly/index.xml b/postcss/weekly/index.xml
new file mode 100644
index 00000000000..59b317220cb
--- /dev/null
+++ b/postcss/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PostCSS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:09Z
+ Weekly Trending of PostCSS in GitHub
+
+
\ No newline at end of file
diff --git a/postscript/daily/index.xml b/postscript/daily/index.xml
index c43dc51e86d..0ebdbaa0d1c 100644
--- a/postscript/daily/index.xml
+++ b/postscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PostScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:02Z
+ 2023-12-24T01:39:36Z
Daily Trending of PostScript in GitHub
\ No newline at end of file
diff --git a/postscript/weekly/index.xml b/postscript/weekly/index.xml
new file mode 100644
index 00000000000..8eeaa2d356c
--- /dev/null
+++ b/postscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PostScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:11Z
+ Weekly Trending of PostScript in GitHub
+
+
\ No newline at end of file
diff --git a/pov-ray-sdl/daily/index.xml b/pov-ray-sdl/daily/index.xml
index 9552e998050..aa02d83e754 100644
--- a/pov-ray-sdl/daily/index.xml
+++ b/pov-ray-sdl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub POV-Ray SDL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:01Z
+ 2023-12-24T01:39:37Z
Daily Trending of POV-Ray SDL in GitHub
\ No newline at end of file
diff --git a/pov-ray-sdl/weekly/index.xml b/pov-ray-sdl/weekly/index.xml
new file mode 100644
index 00000000000..391547c22fe
--- /dev/null
+++ b/pov-ray-sdl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub POV-Ray SDL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:10Z
+ Weekly Trending of POV-Ray SDL in GitHub
+
+
\ No newline at end of file
diff --git a/powerbuilder/daily/index.xml b/powerbuilder/daily/index.xml
index b8201cf55fe..374782c866a 100644
--- a/powerbuilder/daily/index.xml
+++ b/powerbuilder/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PowerBuilder Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:04Z
+ 2023-12-24T01:39:35Z
Daily Trending of PowerBuilder in GitHub
\ No newline at end of file
diff --git a/powerbuilder/weekly/index.xml b/powerbuilder/weekly/index.xml
new file mode 100644
index 00000000000..60930532520
--- /dev/null
+++ b/powerbuilder/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PowerBuilder Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:10Z
+ Weekly Trending of PowerBuilder in GitHub
+
+
\ No newline at end of file
diff --git a/powershell/daily/index.xml b/powershell/daily/index.xml
index 9fbe18979c9..41778fc83d4 100644
--- a/powershell/daily/index.xml
+++ b/powershell/daily/index.xml
@@ -1,21 +1,21 @@
GitHub PowerShell Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:10Z
+ 2023-12-24T01:39:43Z
Daily Trending of PowerShell in GitHub
- Mr-Proxy-source/BadUSB-Payloads
- 2023-12-23T01:36:10Z
- tag:github.com,2023-12-23:/Mr-Proxy-source/BadUSB-Payloads
-
- <p>Repository for Flipper Zero/USB Rubber Ducky payloads 😈</p><hr><div align="center">
<h1>😈 BadUSB 😈</h1>
<img src="https://github.com/Mr-Proxy-Source/Mr-Proxy-Source/raw/main/img/disclaimer.png" width="600" alt="C#">
</div>
<h1>Table of Contents</h1>
<p><a href="https://raw.githubusercontent.com/Mr-Proxy-source/BadUSB-Payloads/main/#Description">Description</a></p>
<p><a href="https://raw.githubusercontent.com/Mr-Proxy-source/BadUSB-Payloads/main/#Contact">Contact</a></p>
<p><a href="https://raw.githubusercontent.com/Mr-Proxy-source/BadUSB-Payloads/main/#Acknowledgments">Acknowledgments</a></p>
<h1>Unleash the power of your Flipper/BadUSB 💻</h1>
<hr>
<h2>Description</h2>
<blockquote>
<p>[!IMPORTANT]<br> This is for educational and learning purposes only. Do not intend for illegal use!</p>
</blockquote>
<p><img src="https://github.com/Mr-Proxy-source/Mr-Proxy-source/raw/main/img/main.jpg" alt="main"></p>
<table>
<thead>
<tr>
<th align="left">Payloads</th>
<th align="left">Description</th>
<th align="left">Plug'n'Play</th>
<th align="left">Author</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><a href="https://github.com/Mr-Proxy-source/Flipper-Zero-BadUSB/tree/main/Script-Paster">Script-Paster</a></td>
<td align="left">Copy payload from the link then paste it in few powershell in seconds.</td>
<td align="left">⛔</td>
<td align="left">MrProxy</td>
</tr>
<tr>
<td align="left"><a href="https://github.com/Mr-Proxy-source/Flipper-Zero-BadUSB/tree/main/Lazagne">Lazagne</a></td>
<td align="left">Grabbing passwords and credentials from vulnerable systems.</td>
<td align="left">✅</td>
<td align="left">MrProxy</td>
</tr>
<tr>
<td align="left"><a href="https://github.com/Mr-Proxy-source/Flipper-Zero-BadUSB/tree/main/File-Downloader">Downloader</a></td>
<td align="left">Download file from your url and then execute it on targets system.</td>
<td align="left">✅</td>
<td align="left">MrProxy</td>
</tr>
<tr>
<td align="left"><a href="https://github.com/Mr-Proxy-source/Flipper-Zero-BadUSB/tree/main/PHPexfil">PHPexfil</a></td>
<td align="left">Gather essential information such as computer name, hardware ID,...</td>
<td align="left">⛔</td>
<td align="left">MrProxy</td>
</tr>
<tr>
<td align="left"><a href="https://github.com/Mr-Proxy-source/Flipper-Zero-BadUSB/tree/main/IOS-Website">IOS-Website</a></td>
<td align="left">Open your desired website on iOS 17 and older versions!</td>
<td align="left">✅</td>
<td align="left">MrProxy</td>
</tr>
<tr>
<td align="left"><a href="https://github.com/Mr-Proxy-source/Flipper-Zero-BadUSB/tree/main/Google-Exfil">Google-Exfil</a></td>
<td align="left">Upload Google Data to gofile.io and sends link to desired platform.</td>
<td align="left">✅</td>
<td align="left">MrProxy</td>
</tr>
</tbody>
</table>
<!-- CONTACT -->
<h2>Contact</h2>
<h2 align="center">📱 My Socials 📱</h2>
<div align="center">
<table>
<tbody>
<tr>
<td align="center" width="96"> <a href="https://youtube.com/@cysc.?sub_confirmation=1"> <img src="https://github.com/Mr-Proxy-Source/Mr-Proxy-Source/raw/main/img/youtube-svgrepo-com.svg?sanitize=true" width="48" height="48" alt="C#"> </a> <br>YouTube </td>
<td align="center" width="96"> <a href="https://twitter.com/cyscp"> <img src="https://github.com/Mr-Proxy-Source/Mr-Proxy-Source/raw/main/img/twitter.png" width="48" height="48" alt="Python"> </a> <br>Twitter </td>
<td align="center" width="96"> <a href="https://www.instagram.com/mrproxy.wav/"> <img src="https://github.com/Mr-Proxy-Source/Mr-Proxy-Source/raw/main/img/insta.png" width="48" height="48" alt="Golang"> </a> <br>Instagram </td>
<td align="center" width="96"> <a href="https://discord.gg/mrtools"> <img src="https://github.com/Mr-Proxy-Source/Mr-Proxy-Source/raw/main/img/discord-v2-svgrepo-com.svg?sanitize=true" width="48" height="48" alt="Jsonnet"> </a> <br>Discord </td>
<td align="center" width="96"> <a href="https://www.tiktok.com/@mrproxyonyt"> <img src="https://github.com/Mr-Proxy-Source/Mr-Proxy-Source/raw/main/img/tiktok.svg?sanitize=true" width="48" height="48" alt="Jsonnet"> </a> <br>TikTok </td>
</tr>
</tbody>
</table>
</div>
<!-- ACKNOWLEDGMENTS -->
<h2>Acknowledgments</h2>
<ul>
<li><a href="https://mrsec.bio/">MrSec</a></li>
<li>All Credits To Willy & I am Jakoby</li>
</ul>
<p align="center"> <img src="https://raw.githubusercontent.com/bornmay/bornmay/Update/svg/Bottom.svg?sanitize=true" alt="Github Stats"> </p>
+ nickvourd/Windows-Local-Privilege-Escalation-Cookbook
+ 2023-12-24T01:39:43Z
+ tag:github.com,2023-12-24:/nickvourd/Windows-Local-Privilege-Escalation-Cookbook
+
+ <p>Windows Local Privilege Escalation Cookbook</p><hr><h1>Windows Local Privilege Escalation Cookbook (In Progress)</h1>
<p align="center"> <img src="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Pictures/Windows-Funny.jpg"> </p>
<h2>Description (Keynote)</h2>
<p>This Cookbook was created with the main purpose of helping people understand local privilege escalation techniques on Windows environments. Moreover, it can be used for both attacking and defensive purposes.</p>
<p><span>ℹ</span> This Cookbook focuses only on misconfiguration vulnerabilities on Windows workstations/servers/machines.</p>
<p><span>⚠</span> Evasion techniques to bypass security protections, endpoints, and antivirus are not included in this cookbook. I created this PowerShell script, <a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Lab-Setup-Scripts/TurnOffAV.ps1">TurnOffAV.ps1</a>, which permanently disables Windows Defender. Run this with local Administrator privileges.</p>
<p>The main structure of this Cookbook includes the following sections:</p>
<ul>
<li>Description (of the vulnerability)</li>
<li>Lab Setup</li>
<li>Enumeration</li>
<li>Exploitation</li>
<li>Mitigation</li>
<li>(Useful) References</li>
</ul>
<p>I hope to find this CookBook useful and learn new stuff 😉.</p>
<h2>Table of Contents</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/#windows-local-privilege-escalation-cookbook">Windows Local Privilege Escalation Cookbook</a>
<ul>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/#description-keynote">Description (Keynote)</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/#table-of-contents">Table of Contents</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/#useful-tools">Useful Tools</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/#vulnerabilities">Vulnerabilities</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/#references">References</a></li>
</ul> </li>
</ul>
<h2>Useful Tools</h2>
<p>In the following table, some popular and useful tools for Windows local privilege escalation are presented:</p>
<table>
<thead>
<tr>
<th align="center">Name</th>
<th align="center">Language</th>
<th align="center">Author</th>
<th align="center">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><a href="https://github.com/GhostPack/SharpUp">SharpUp</a></td>
<td align="center">C#</td>
<td align="center"><a href="https://twitter.com/harmj0y">@harmj0y</a></td>
<td align="center">SharpUp is a C# port of various PowerUp functionality</td>
</tr>
<tr>
<td align="center"><a href="https://github.com/PowerShellMafia/PowerSploit/raw/master/Privesc/PowerUp.ps1">PowerUp</a></td>
<td align="center">PowerShell</td>
<td align="center"><a href="https://twitter.com/harmj0y">@harmj0y</a></td>
<td align="center">PowerUp aims to be a clearinghouse of common Windows privilege escalation</td>
</tr>
<tr>
<td align="center"><a href="https://github.com/AlessandroZ/BeRoot">BeRoot</a></td>
<td align="center">Python</td>
<td align="center"><a href="https://github.com/AlessandroZ">AlessandroZ</a></td>
<td align="center">BeRoot(s) is a post exploitation tool to check common Windows misconfigurations to find a way to escalate our privilege</td>
</tr>
<tr>
<td align="center"><a href="https://github.com/enjoiz/Privesc">Privesc</a></td>
<td align="center">PowerShell</td>
<td align="center"><a href="https://github.com/enjoiz">enjoiz</a></td>
<td align="center">Windows PowerShell script that finds misconfiguration issues which can lead to privilege escalation</td>
</tr>
<tr>
<td align="center"><a href="https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS/winPEASexe">Winpeas</a></td>
<td align="center">C#</td>
<td align="center"><a href="https://twitter.com/hacktricks_live">@hacktricks_live</a></td>
<td align="center">Windows local Privilege Escalation Awesome Script</td>
</tr>
</tbody>
</table>
<h2>Vulnerabilities</h2>
<p>This Cookbook presents the following Windows vulnerabilities:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Notes/AlwaysInstallElevated.md">AlwaysInstallElevated</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Notes/LogonAutostartExecutionRegistryRunKeys.md">Logon Autostart Execution (Registry Run Keys)</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Notes/LogonAutostartExecutionStartupFolder.md">Logon Autostart Execution (Startup Folder)</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Notes/LeakedCredentialsPowerShellHistory.md">Leaked Credentials (PowerShell History)</a></li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Notes/ScheduledTaskJob.md">Scheduled Task/Job</a>*</li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Notes/SeBackupPrivilege.md">SeBackupPrivilege</a></li>
<li>SeImpersonatePrivilege</li>
<li><a href="https://raw.githubusercontent.com/nickvourd/Windows-Local-Privilege-Escalation-Cookbook/master/Notes/StoredCredentialsRunas.md">Stored Credentials (Runas)</a></li>
<li>Unquoted Service Path</li>
<li>Weak Service Binary Permissions</li>
<li>Weak Service Permissions</li>
<li>Weak Registry Permissions</li>
</ul>
<h2>References</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Privilege_escalation">Privilege Escalation Wikipedia</a></li>
<li><a href="https://github.com/Flangvik/SharpCollection">SharpCollection GitHub by Flangvik</a></li>
<li><a href="https://www.metasploit.com/">Metasploit Website</a></li>
<li><a href="https://github.com/Hackplayers/evil-winrm">Evil-WinRM GitHub by Hackplayers</a></li>
<li><a href="https://www.youtube.com/watch?v=WWE7VIpgd5I&list=PLDrNMcTNhhYrBNZ_FdtMq-gLFQeUZFzWV&index=13">Windows Privilege Escalation Youtube Playlist by Conda</a></li>
<li><a href="https://github.com/GhostPack/Seatbelt">Seatbelt GitHub by GhostPack</a></li>
<li><a href="https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite">Sysinternals Suite Microsoft</a></li>
</ul>
- MicrosoftDocs/appcenter-docs
- 2023-12-23T01:36:10Z
- tag:github.com,2023-12-23:/MicrosoftDocs/appcenter-docs
-
- <p>content repo for Visual Studio App Center on docs.microsoft.com</p><hr><h1>App Center documentation</h1>
<p>Welcome! This repo contains source files for App Center technical documentation. The topics are published to <a href="https://learn.microsoft.com/appcenter">App Center documentation</a>.</p>
<h2>Code of conduct</h2>
<p>This project has adopted the <a href="https://opensource.microsoft.com/codeofconduct/">Microsoft Open Source Code of Conduct</a>. For more information, see the <a href="https://opensource.microsoft.com/codeofconduct/faq/">Code of conduct FAQ</a>, or contact <a href="mailto:opencode@microsoft.com">opencode@microsoft.com</a> with any additional questions or comments.</p>
<h2>Contributing to the documentation</h2>
<p>We welcome your contributions to help us improve the App Center docs. All the articles in this repository use GitHub flavored markdown.</p>
<p>To contribute to this documentation, see the <a href="https://raw.githubusercontent.com/MicrosoftDocs/appcenter-docs/live/CONTRIBUTING.md">Contributing guide</a>.</p>
<p>If you're an internal docs contributor (Microsoft or GitHub), refer to the <a href="https://raw.githubusercontent.com/MicrosoftDocs/appcenter-docs/live/CONTRIBUTING-INTERNAL.md">Contributing guide – Internal</a></p>
<p>Several feature areas of App Center have their own folders in this repo, such as <strong>build</strong> for topics on Build, <strong>crashes</strong> for topics on the Crash Reporting service, and so forth. The <strong>/images</strong> subfolder in each folder contains art files for the topics. The <a href="https://raw.githubusercontent.com/MicrosoftDocs/appcenter-docs/live/CONTRIBUTING.md">Contributing guide</a> has more information.</p>
+ Lifailon/PS-Commands
+ 2023-12-24T01:39:43Z
+ tag:github.com,2023-12-24:/Lifailon/PS-Commands
+
+ <p>Large database of notes about PowerShell cmdlets in Russian language.</p><hr><p><img src="https://github.com/Lifailon/PS-Commands/raw/rsa/Logo/PowerShell-Commands.png" alt="Image alt"></p>
<ul>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#help">Help</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#object">Object</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#regex">Regex</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#datatype">DataType</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#bit">Bit</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#files">Files</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#credential">Credential</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#winevent">WinEvent</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#firewall">Firewall</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#defender">Defender</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#windowsupdate">WindowsUpdate</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#dism">DISM</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#scheduled">Scheduled</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#network">Network</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#shutdown">Shutdown</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#localaccounts">LocalAccounts</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#smb">SMB</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#activedirectory">ActiveDirectory</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#repadmin">repadmin</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#dcdiag">dcdiag</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#ntdsutil">ntdsutil</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#gpo">GPO</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#servermanager">ServerManager</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#dnsserver">DNS</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#dhcpserver">DHCP</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#dfs">DFS</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#storagereplica">StorageReplica</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#package-manager">Package-Manager</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#ps2exe">PS2EXE</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#nssm">NSSM</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#jobs">Jobs</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#smtp">SMTP</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#hyper-v">Hyper-V</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#vmwarepowercli">VMWare/PowerCLI</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#exchangeemshell">Exchange/EMShell</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#truenas">TrueNAS</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#veeam">Veeam</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#rest-api">REST API</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#telegram">Telegram</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#pode">Pode</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#selenium">Selenium</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#ie">IE</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#com">COM</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#dotnet">dotNET</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#console-api">Console API</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#drawing">Drawing</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#objectevent">ObjectEvent</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#sockets">Sockets</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#excel">Excel</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#csv">CSV</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#xml">XML</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#json">JSON</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#yaml">YAML</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#html">HTML</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#sqlite">SQLite</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#mysql">MySQL</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#mssql">MSSQL</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#influxdb">InfluxDB</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#telegraf">Telegraf</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#elasticsearch">Elasticsearch</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#cdata">CData</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#odbc">ODBC</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#postgresql">PostgreSQL</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#wmi">WMI</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#regedit">Regedit</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#performance">Performance</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#snmp">SNMP</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#zabbix">Zabbix</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#pki">pki</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#openssl">OpenSSL</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#openvpn">OpenVPN</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#route">Route</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#nat">NAT</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#wireguard">WireGuard</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#vpnclient">VpnClient</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#proxy">Proxy</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#openssh">OpenSSH</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#winrm">WinRM</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#dsc">DSC</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#git">Git</a></li>
<li><a href="https://raw.githubusercontent.com/Lifailon/PS-Commands/rsa/#ansible">Ansible</a></li>
</ul>
<h1>Help</h1>
<p><code>Get-Verb</code> действия/глаголы, утвержденные для использования в командлетах <br> <code>Get-Command *Language*</code> поиск команды по имени <br> <code>(Get-Command Get-Language).Module</code> узнать к какому модулю принадлежит команда <br> <code>Get-Command Get-Content | fl Module,DLL</code> узнать принадлежность команды к модулю и dll <br> <code>Get-Command -Module LanguagePackManagement</code> отобразить список команд указанного модуля <br> <code>(Get-Module LanguagePackManagement).ExportedCommands.Values</code> отобразить список команд указанного модуля <br> <code>Get-Language | Get-Member</code> отобразить список методов команды (действия), объекты вывода и Event (события объектов: Click) <br> <code>(Get-Help Get-Service).Aliases</code> узнать псевдонимом команды <br> <code>Get-Alias gsv</code> узнать имя команды по псевдониму <br> <code>Get-Help Get-Service</code> синтаксис <br> <code>Get-Help Get-Service -Parameter *</code> описание всех параметров <br> <code>Get-Help Get-Service -Online</code> <br> <code>Get-Help Get-Service -ShowWindow</code> описание параметров в GUI с фильтрацией <br> <code>Show-Command</code> вывести список команд в GUI <br> <code>Show-Command Get-Service</code> список параметров команды в GUI <br> <code>Invoke-Expression</code> iex принимает текст для выполнения в консоли как команды <br> <code>$PSVersionTable</code> версия PowerShell <br> <code>Set-ExecutionPolicy Unrestricted</code> <br> <code>Get-ExecutionPolicy</code> <br> <code>$Metadata = New-Object System.Management.Automation.CommandMetaData (Get-Command Get-Service)</code> получить информацию о командлете <br> <code>[System.Management.Automation.ProxyCommand]::Create($Metadata)</code> исходный код функции</p>
<h1>Object</h1>
<h3>Variable</h3>
<p><code>$var = Read-Host "Enter"</code> ручной ввод <br> <code>$pass = Read-Host "Enter Password" -AsSecureString</code> скрывать набор <br> <code>$global:path = "\\path"</code> задать глобальную переменную, например в функции <br> <code>$using:srv</code> использовать переменную текущей сесси в Invoke-сессии <br> <code>Get-Variable</code> отобразить все переменные <br> <code>ls variable:/</code> отобразить все переменные <br> <code>Get-Variable *srv*</code> найти переменную по имени <br> <code>Get-Variable -Scope Global</code> отобразить все глобальные переменные <br> <code>Get-Variable Error</code> последняя команда с ошибкой <br> <code>Remove-Variable -Name *</code> очистить все переменные <br> <code>$LASTEXITCODE</code> содержит код вывода последней запущенной программы, например ping. Если код возврата положительный (True), то $LastExitCode = 0</p>
<h3>ENV</h3>
<p><code>Get-ChildItem Env:</code> отобразить все переменные окружения <br> <code>$env:PSModulePath</code> директории импорта модулей <br> <code>$env:userprofile</code> <br> <code>$env:computername</code> <br> <code>$env:username</code> <br> <code>$env:userdnsdomain</code> <br> <code>$env:logonserver</code> <br> <code>([DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).Name</code> <br> <code>[Environment]::GetFolderPath('ApplicationData')</code></p>
<h3>History</h3>
<p><code>Get-History</code> история команд текущей сессии <br> <code>(Get-History)[-1].Duration.TotalSeconds</code> время выполнения последней команды <br> <code>(Get-PSReadLineOption).HistorySavePath</code> путь к сохраненному файлу с 4096 последних команд (из модуля PSReadLine) <br> <code>Get-Content (Get-PSReadlineOption).HistorySavePath | Select-String Get</code> поиск по содержимому файла (GREP) <br> <code>Set-PSReadlineOption -MaximumHistoryCount 10000</code> изменить количество сохраняемых команд в файл <br> <code>Get-PSReadLineOption | select MaximumHistoryCount</code> <br> <code>Set-PSReadlineOption -HistorySaveStyle SaveNothing</code> отключить ведение журнала <br> <code>F2</code> переключиться с InlineView на ListView</p>
<h3>Clipboard</h3>
<p><code>Set-Clipboard $srv</code> скопировать в буфер обмена <br> <code>Get-Clipboard</code> вставить</p>
<h3>Write</h3>
<p><code>Write-Host -ForegroundColor Black -BackgroundColor Green "Test" -NoNewline</code> <br> <code>Write-Error Test</code> <br> <code>Foreach ($n in 1..100) {Write-Progress -Activity "Test Progress" -PercentComplete $n}</code></p>
<h3>Array</h3>
<p><code>$srv = @("server-01", "server-02")</code> создать массив <br> <code>$srv += @("server-03")</code> добавить в массив новый элемент <br> <code>$srv.Count</code> отобразить кол-во элементов в массиве <br> <code>Out-String</code> построчный вывод</p>
<h3>Index</h3>
<p><code>$srv[0]</code> вывести первое значение элемента массива <br> <code>$srv[0] = Name</code> замена элемента в массиве <br> <code>$srv[0].Length</code> узнать кол-во символов первого значения в массиве <br> <code>$srv[10..100]</code> срез</p>
<pre><code class="language-PowerShell">$array = "a","b","c","d"
$num = 0
foreach ($a in $array) {
$num += 1
$index = [array]::IndexOf($array, $a) # узнать номер индекса по зачению
$array[$index] = $num # пересобрать исходный массив
}
</code></pre>
<h3>HashTable</h3>
<pre><code class="language-PowerShell">$hashtable = @{"User" = "$env:username"; "Server" = "$env:computername"} # создать
$hashtable += @{"User2" = "$env:username"; "Server2" = "$env:computername"} # добавить ключи
$hashtable.Keys # список всех ключей
$hashtable["User"] # получить значение (Values) по ключу
$hashtable["User"] = "Test" # изменить
$hashtable.Remove("User") # удалить ключ
</code></pre>
<p><code>$Tag = @{$true = 'dev'; $false = 'prod'}[([System.Net.Dns]::GetHostEntry("localhost").HostName) -match '.*.TestDomain$']</code></p>
<h3>Collections/List</h3>
<pre><code class="language-PowerShell">$Collections = New-Object System.Collections.Generic.List[System.Object]
$Collections.Add([PSCustomObject]@{User = $env:username; Server = $env:computername})
</code></pre>
<h3>PSCustomObject</h3>
<pre><code class="language-PowerShell">$CustomObject = [PSCustomObject][ordered]@{User = $env:username; Server = $env:computername}
$CustomObject | Add-Member –MemberType NoteProperty –Name Arr –Value @(1,2,3) # добавить Property (свойство/стобец)
$CustomObject.Arr = @(1,3,5) # изменить содержимое
$CustomObject.PsObject.Properties.Remove('User') # удалить Property
</code></pre>
<h3>Add-Member</h3>
<pre><code class="language-PowerShell">$ScriptBlock = {Get-Service}
$CustomObject | Add-Member -Name "TestMethod" -MemberType ScriptMethod -Value $ScriptBlock # Добавить Method
$CustomObject | Get-Member
$CustomObject.TestMethod()
</code></pre>
<h3>Class</h3>
<pre><code class="language-PowerShell">Class CustomClass {
[string]$User
[string]$Server
Start([bool]$Param1) {
If ($Param1) {Write-Host "Start Function"}}
}
$Class = New-Object -TypeName CustomClass
$Class.User = $env:username
$Class.Server = $env:computername
$Class.Start(1)
</code></pre>
<h3>Pipeline</h3>
<p><code>$obj | Add-Member -MemberType NoteProperty -Name "Type" -Value "user" -Force</code> добавление объкта вывода NoteProperty <br> <code>$obj | Add-Member -MemberType NoteProperty -Name "User" -Value "admin" -Force</code> изменеие содержимого для сущности объекта User <br> <code>ping $srv | Out-Null</code> перенаправить результат вывода в Out-Null</p>
<h3>Select-Object</h3>
<p><code>Get-Process | Select-Object -Property *</code> отобразить все доступные объекты вывода <br> <code>Get-Process | select -Unique "Name"</code> удалить повторяющиеся значения в массиве <br> <code>Get-Process | select -ExpandProperty ProcessName</code> преобразовать из объекта-коллекции в массив (вывести содержимое без наименовая столбца) <br> <code>(Get-Process | ? Name -match iperf).Modules</code> список используемых модулей процессом</p>
<h3>Expression</h3>
<pre><code class="language-PowerShell">ps | Sort-Object -Descending CPU | select -first 10 ProcessName, # сортировка по CPU, вывести первых 10 значений (-first)
@{Name="ProcessorTime"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}}, # затрачено процессорного времени в минутах
@{Name="Memory"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}}, # делим байты на КБ
@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}} # вычесть из текущего времени - время запуска, и удалить milisec
</code></pre>
<h3>Select-String</h3>
<p><code>ipconfig /all | Select-String dns</code> поиск текста</p>
<h3>Format-Table/Format-List</h3>
<p><code>Get-Process | ft ProcessName, StartTime -Autosize</code> автоматическая группировка размера столбцов</p>
<h3>Measure-Object</h3>
<p><code>Get-Process | Measure | select Count</code> кол-во объектов <br> <code>Get-Process | Measure -Line -Word -Character</code> кол-во строк, слов и Char объектов <br> <code>Get-Process | Measure-Object PM -sum | Select-Object Count,@{Name="MEM_MB"; Expression={[int]($_.Sum/1mb)}}</code> кол-во процессов и общий объем занятой памяти в МБайт</p>
<h3>Compare-Object</h3>
<p><code>Compare-Object -ReferenceObject (Get-Content -Path .\file1.txt) -DifferenceObject (Get-Content -Path .\file2.txt)</code> сравнение двух файлов <br> <code>$group1 = Get-ADGroupMember -Identity "Domain Admins"</code> <br> <code>$group2 = Get-ADGroupMember -Identity "Enterprise Admins"</code> <br> <code>Compare-Object -ReferenceObject $group1 -DifferenceObject $group2 -IncludeEqual</code> <code>==</code> нет изменений <br> <code><=</code> есть изменения в $group1 <br> <code>=></code> есть изменения в $group2</p>
<h3>Where-Object (?)</h3>
<p><code>Get-Process | Where-Object {$_.ProcessName -match "zabbix"}</code> фильтрация/поиск процессов по имени свойства объекта <br> <code>Get-Process | where CPU -gt 10 | Sort-Object -Descending CPU</code> вывести объекты, где значения CPU больше 10 <br> <code>Get-Process | where WS -gt 200MB</code> отобразить процессы где WS выше 200МБ <br> <code>Get-Service | where Name -match "zabbix"</code> поиск службы <br> <code>Get-Service -ComputerName $srv | Where {$_.Name -match "WinRM"} | Restart-Service</code> перезапустить службу на удаленном компьютере <br> <code>(Get-Service).DisplayName</code> вывести значения свойства массива <br> <code>netstat -an | where {$_ -match 443}</code> <br> <code>netstat -an | ?{$_ -match 443}</code> <br> <code>(netstat -an) -match 443</code></p>
<h3>Sort-Object</h3>
<p><code>Get-Process | Sort-Object -Descending CPU | ft</code> обратная (-Descending) сортировка по CPU <br> <code>$path[-1..-10]</code> обратная сборка массива без сортировки</p>
<h3>Last/First</h3>
<p><code>Get-Process | Sort-Object -Descending CPU | select -First 10</code> вывести первых 10 объектов <br> <code>Get-Process | Sort-Object -Descending CPU | select -Last 10</code> вывести последних 10 объектов</p>
<h3>oh-my-posh</h3>
<p><code>winget install JanDeDobbeleer.OhMyPosh -s winget</code> <br> <code>Get-PoshThemes</code> <br> <code>oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/di4am0nd.omp.json" | Invoke-Expression</code> blue-owl,montys,jblab_2021,easy-term,cinnamon,jtracey93,cert <br> <code>New-Item -Path $PROFILE -Type File -Force</code> <br> <code>notepad $PROFILE</code> <br> <code>oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/di4am0nd.omp.json" | Invoke-Expression</code></p>
<h1>NPP</h1>
<p><code>pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File "$(FULL_CURRENT_PATH)"</code></p>
<p>%AppData%\Notepad++` themes/shortcuts.xml</p>
<pre><code><?xml version="1.0" encoding="UTF-8" ?>
<NotepadPlus>
<InternalCommands />
<Macros>
<Macro name="`+\+&gt;" Ctrl="yes" Alt="no" Shift="no" Key="190">
<Action type="0" message="2453" wParam="0" lParam="0" sParam="" />
<Action type="1" message="2170" wParam="0" lParam="0" sParam="`" />
<Action type="0" message="2451" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2451" wParam="0" lParam="0" sParam="" />
<Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
<Action type="1" message="2170" wParam="0" lParam="0" sParam="\" />
<Action type="0" message="2300" wParam="0" lParam="0" sParam="" />
</Macro>
</Macros>
<UserDefinedCommands>
<Command name="PowerShell7" Ctrl="no" Alt="yes" Shift="no" Key="116">pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File &quot;$(FULL_CURRENT_PATH)&quot;</Command>
</UserDefinedCommands>
<PluginCommands />
<ScintillaKeys />
</NotepadPlus>
</code></pre>
<p><code>Parsing text to Markdown:</code> <br> <code>Macros: FnLeft+'+FnRight+FnRight+\s\\+Down</code> <br> <code>Replace: "# ","'"</code></p>
<pre><code>. # Обозначает любой символ
\ # Экранирующий символ. Символы которые экранируются: ^, [, ., $, {, *, (, ), \, +, |, ?, <, >
^ # Начало строки
$ # Конец строки
\n # Новая строка
\d # Любая цифра
\D # Не цифра
\w # Любая буква латиницы, цифра, или знак подчёркивания
\W # Не латиница, не цифра, не подчёркивание
\s # Пробел, табуляция, перенос строки
\S # Не пробел
\b # Граница слова. Применяется когда нужно выделить, что искомые символы являются словом, а не частью другого слова
\B # Не граница слова
\< # Начало слова
\> # Конец слова
\A # Начало текста
\Z # Конец текста
* # Повторитель. Означает что предшествующий символ может работать 0 и более раз
+ # Количество предшествующего не менее 1-го.
? # Ограничитель. Не более одного раза
| # Или. Соединяет несколько вариантов
() # В круглые скобки заключаются все комбинации с "или" и поиск начала и конца строк
[ ] # В квадратных скобках задаются символы к поиску, например [a-яА-Я], или [0-9]
[^ ] # Исключает из поиска символы указанные в квадратных скобках
{ } # В фигурных скобках указывается точное количество вхождений
\d{2} # Найти две цифры
\d{2,4} # Найти две или четыре
{4,} # Найти четыре и более
^\s{1,}#.+` поиск вначале строки комментария и пробел после него 1 или больше и любое кол-во символов
</code></pre>
<h1>Regex</h1>
<p><code>-replace "1","2"</code> замена элементов в индексах массива (везде где присутствует 1, заменить на 2), для удаления используется только первое значение <br> <code>-split " "</code> преобразовать строку в массив, разделителем указан пробел, которой удаляется ($url.Split("/")[-1]) <br> <code>-join " "</code> преобразовать массив (коллекцию) в единую строку (string), добавить разделителем пробел \</p>
<p><code>-like *txt*</code> поиск по маскам wildcard, выводит значение на экран <br> <code>-match txt</code> поиска по шаблонам, проверка на соответствие содержимого текста <br> <code>-match "zabbix|rpc"</code> условия, для поиска по нескольким словам <br> <code>-NotMatch</code> проверка на отсутствие вхождения \</p>
<h3>Matches</h3>
<p><code>$ip = "192.168.10.1"</code> <br> <code>$ip -match "(\.\d{1,3})\.\d{1,2}"</code> True <br> <code>$Matches</code> отобразить все подходящие переменные последнего поиска, которые входят и не входят в группы ()</p>
<p><code>$String = "09/14/2017 12:00:27 - mtbill_post_201709141058.txt 7577_Delivered: OK"</code> <br> <code>$String -Match ".*(?=\.txt)" | Out-Null</code> <br> <code>$Matches[0][-4..-1] -Join ""</code></p>
<p><code>$string.Substring($string.IndexOf(".txt")-4, 4)</code> 2-й вариант (IndexOf)`</p>
<h3>Форматирование (.NET method format)</h3>
<p><code>[string]::Format("{1} {0}","Index0","Index1")</code> <br> <code>"{1} {0}" -f "Index0","Index1"</code> <br> <code>"{0:###-##-##}" -f 1234567</code> записать число в другом формате (#) <br> <code>"{0:0000}" -f 123</code> вывести число в формате не меньше 4 знаков (0123) <br> <code>"{0:P0}" -f (220/1000)</code> посчитать в процентах (P) <br> <code>"{0:P}" -f (512MB/1GB)</code> сколько % составляет 512Мб от 1Гб <br> <code>"{0:0.0%}" -f 0.123</code> умножить на 100%</p>
<pre><code class="language-PowerShell">$gp = Get-Process | sort cpu -Descending | select -First 10
foreach ($p in $gp) {
"{0} - {1:N2}" -f $p.processname, $p.cpu # округлить
}
</code></pre>
<h3>Условный оператор</h3>
<p><code>$rh = Read-Host</code> <br> <code>if ($rh -eq 1) {ipconfig} elseif ($rh -eq 2) {getmac} else {hostname}</code> <br> Если условие if () является истенным ($True), выполнить действие в {} <br> Если условие if () является ложным ($False), выполнить действие не обязательного оператора else <br> Условие Elseif идёт после условия if для проверки дополнительных условий перед выполнение оператора else. Оператор, который первый вернет $True, отменит выполнение следующих дополнительных условий <br> Если передать переменную в условие без оператора, то будет проверяться наличие значения у переменной на $True/$False <br> <code>if ((tnc $srv -Port 80).TcpTestSucceeded) {"Opened port"} else {"Closed port"}</code></p>
<h3>Операторы</h3>
<p><code>-eq</code> равно (equal) <br> <code>-ceq</code> учитывать регистр <br> <code>-ne</code> не равно (not equal) <br> <code>-gt</code> больше (greater) <br> <code>-ge</code> больше или равно <br> <code>-lt</code> меньше (less) <br> <code>-le</code> меньше или равно <br> <code>-in</code> проверить на наличие (5 -in @(1,2,3,4,5)) <br> <code>-NOT</code> логическое НЕТ !(Test-Path $path) <br> <code>-and</code> логическое И <br> <code>-or</code> логическое ИЛИ <br> <code>if ((($1 -eq 1) -and ($2 -eq 2)) -or ($1 -ne 3)) {"$true"} else {"$false"}</code> два условия: (если $1 = 1 и $2 = 2) или $1 не равно 3</p>
<h3>Pipeline Operators</h3>
<p><code>Write-Output "First" && Write-Output "Second"</code> две успешные команды выполняются <br> <code>Write-Error "Bad" && Write-Output "Second"</code> первая команда завершается ошибкой, из-за чего вторая команда не выполняется <br> <code>Write-Error "Bad" || Write-Output "Second"</code> первая команда завершается ошибкой, поэтому выполняется вторая команда <br> <code>Write-Output "First" || Write-Output "Second"</code> первая команда выполнена успешно, поэтому вторая команда не выполняется</p>
<h3>Invocation Operator</h3>
<p><code>$addr = "8.8.8.8"</code> <br> <code>$ping = "ping"</code> <br> <code>& $ping $addr</code> запускает текст как команду</p>
<p><code>& $ping $addr &</code> запустить команду в фоне <br> <code>(Get-Job)[-1] | Receive-Job -Keep</code></p>
<h3>Специальные символы</h3>
<p><code>\d</code> число от 0 до 9 (20-07-2022 эквивалент: "\d\d-\d\d-\d\d\d\d") <br> <code>\D</code> обозначает любой символ, кроме цифры. Удаления всех символов, кроме цифр: [int]$("123 test" -replace "\D") <br> <code>\w</code> буква от "a" до "z" и от "A" до "Z" или число от 0 до 9 <br> <code>\s</code> пробел, эквивалент: " " <br> <code>\n</code> новая строка <br> <code>\b</code> маска, определяет начало и конец целого словосочетания для поиска <br> <code>.</code> обозначает любой символ, кроме новой строки <br> <code>\</code> экранирует любой специальны символ (метасимвол). Используется, если нужно указать конкретный символ, вместо специального ({ } [ ] / \ + * . $ ^ | ?) <br> <code>+</code> повторяется 1 и более раз (\s+) <br> <code>{1,25}</code> квантификатор, указывает количество повторений символа слева на право (от 1 до 25 раз) <br> <code>[]</code> поиск совпадения любой буквы, например, [A-z0-9] от A до z и цифры от 0 до 9 ("192.168.1.1" -match "192.1[6-7][0-9]")</p>
<h3>Якори</h3>
<p><code>^</code> или <code>\A</code> определяет начало строки. $url -replace '^','https:'<code>добавить в начало; \</code>$<code>или</code>\Z<code>обозначают конец строки. $ip -replace "\d{1,3}$","0" \</code>(?=text)<code>поиск слова слева. Пишем слева на право от искомого (ищет только целые словосочетания) "Server:\s(.{1,30})\s(?=$username)" \</code>(?<=text)<code> поиск слова справа. $in_time -replace ".+(?<=Last)"</code> удалить все до слова Last <br> <code>(?!text)</code> не совпадает со словом слева <br> <code>(?<!text)</code> не совпадает со словом справа</p>
<p><code>$test = "string"</code> <br> <code>$test -replace ".{1}$"</code> удалить любое кол-во символов в конце строки <br> <code>$test -replace "^.{1}"</code> удалить любое кол-во символов в начале строки \</p>
<h3>Группы захвата</h3>
<p><code>$date = '12.31.2021'</code> <br> <code>$date -replace '^(\d{2}).(\d{2})','$2.$1'</code> поменять местами <br> <code>$1</code> содержимое первой группы в скобках <br> <code>$2</code> содержимое второй группы</p>
<h1>DataType</h1>
<p><code>$srv.GetType()</code> узнать тип данных <br> <code>$srv -is [string]</code> проверка на соответствие типа данных <br> <code>$srv -isnot [System.Object]</code> проверка на несоответствие <br> <code>[Object]</code> массив (BaseType:System.Array) <br> <code>[DateTime]</code> формат времени (BaseType:System.ValueType) <br> <code>[Bool]/[Boolean]</code> логическое значение ($True/$False) или 1/0 (1 бит) наличие/отсуствие напряжения <br> <code>[Byte]</code> 8-битное (1 байт) целое число без знака (0..255) <br> <code>[Int16]</code> 16-битное знаковое целое число от -32767 до 32767 (тип данных WORD 0..65535) <br> <code>[Int]</code> 32-битное (4 байта) знаковое целое число от –2147483648 до 2147483647 (DWORD) <br> <code>[Int64]</code> 64-битное от -9223372036854775808 до 9223372036854775808 (LWORD) <br> <code>[Decimal]</code> 128-битное десятичное значение от –79228162514264337593543950335 до 79228162514264337593543950335 <br> <code>[Single]</code> число с плавающей запятой (32-разрядное) <br> <code>[Double]</code> число с плавающей запятой с двойной точностью (64-разрядное) <br> <code>[String]</code> неизменяемая строка символов Юникода фиксированной длины (BaseType:System.Object)</p>
<h3>Math</h3>
<p><code>[math] | Get-Member -Static</code> <br> <code>[math]::Pow(2,4)</code> 2 в 4 степени <br> <code>[math]::Truncate(1.8)</code> грубое округление, удаляет дробную часть <br> <code>[math]::Ceiling(1.8)</code> округляет число в большую сторону до ближайшего целого значения <br> <code>[math]::Floor(-1.8)</code> округляет число в меньшую сторону <br> <code>[math]::Min(33,22)</code> возвращает наименьшее значение двух значений <br> <code>[math]::Max(33,22)</code> возвращает наибольшее значение двух значений</p>
<h3>Round</h3>
<p><code>[double]::Round(87.5, 0)</code> 88 (нечетное), в .NET по умолчанию используется округление в средней точке ToEven, где *.5 значения округляются до ближайшего четного целого числа. <br> <code>[double]::Round(88.5, 0)</code> 88 (четное) <br> <code>[double]::Round(88.5, 0, 1)</code> 89 (округлять в большую сторону) <br> <code>[double]::Round(1234.56789, 2)</code> округлить до 2 символов после запятой</p>
<h3>ToString</h3>
<p><code>(4164539/1MB).ToString("0.00")</code> разделить на дважды на 1024/1024 и округлить до 3,97</p>
<h3>Char</h3>
<p><code>[Char]</code> cимвол Юникода (16-разрядный) <br> <code>$char = $srv.ToCharArray()</code> разбить строку [string] на массив [System.Array] из букв \</p>
<h3>Switch</h3>
<pre><code class="language-PowerShell">$MMM = Get-Date -UFormat "%m"
switch($MMM) {
"01" {$Month = 'Jan'}
"02" {$Month = 'Feb'}
"03" {$Month = 'Mar'}
"04" {$Month = 'Apr'}
"05" {$Month = 'May'}
"06" {$Month = 'Jun'}
"07" {$Month = 'Jul'}
"08" {$Month = 'Aug'}
"09" {$Month = 'Sep'}
"10" {$Month = 'Oct'}
"11" {$Month = 'Nov'}
"12" {$Month = 'Dec'}
}
</code></pre>
<h3>function switch</h3>
<pre><code class="language-PowerShell">Function fun-switch (
[switch]$param
) {
If ($param) {"yes"} else {"no"}
}
fun-switch -param
</code></pre>
<h1>Bit</h1>
<pre><code>Двоичное Десятичное
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
1 0000 16
Двоичное Десятичное Номер разряда
1 1 0
10 2 1
100 4 2
1000 8 3
1 0000 16 4
10 0000 32 5
100 0000 64 6
1000 0000 128 7
1 0000 0000 256 8
Из двоичного => десятичное (1-й вариант по таблице)
1001 0011 = 1000 0000 + 1 0000 + 10 + 1 = 128 + 16 + 2 + 1 = 147
2-й вариант
7654 3210 (разряды двоичного выражения) = (1*2^7)+(0*2^6)+(0*2^5)+(1*2^4)+(0*2^3)+(0*2^2)+(1*2^1)+(1*2^0) = 147
[math]::Pow(2,7) + [math]::Pow(2,4) + [math]::Pow(2,1) + [math]::Pow(2,0) = 147` исключить 0 и сложить степень
Из десятичного => двоичное (1-й вариант по таблице)
347 вычесть ближайшие 256 = 91 (+ 1 0000 0000 забрать двоичный остаток)
91 - 64 = 27 ближайшее 16 (+ 100 0000)
27 - 16 = 11 ближайшее 8 (+ 1 0000)
11 - 8 = 3 ближайшее 2 (+ 1000)
3 - 2 = 1 (+ 10)
1 - 1 = 0 (+ 1)
1 0101 1011
2-й вариант
Последовательное деления числа на 2, предворительно забирая остаток для получения четного числа в меньшую сторону
347 - 346 = остаток 1, (347-1)/2 = 173
173 - 172 = остаток 1, (172-1)/2 = 86
86 - 86 = остаток 0, 86/2 = 43
43 - 42 = остаток 1, (43-1)/2 = 21
21 - 20 = остаток 1, (21-1)/2 = 10
10 - 10 = остаток 0, 10/2 = 5
5 - 4 = остаток 1, (5-1)/2 = 2
2 - 2 = остаток 0, 2/2 = 1
1 - 2 = остаток 1, (1-1)/2 = 0
Результат деления записывается снизу вверх
</code></pre>
<h3>Bit Convertor</h3>
<pre><code class="language-PowerShell">function ConvertTo-Bit {
param (
[Int]$int
)
[array]$bits = @()
$test = $true
while ($test -eq $true) {
if (($int/2).GetType() -match [double]) {
$int = ($int-1)/2
[array]$bits += 1
}
elseif (($int/2).GetType() -match [int]) {
$int = $int/2
[array]$bits += 0
}
if ($int -eq 0) {
$test = $false
}
}
$bits = $bits[-1..-999]
([string]($bits)) -replace "\s"
}
</code></pre>
<p><code>ConvertTo-Bit 347</code></p>
<pre><code class="language-PowerShell">function ConvertFrom-Bit {
param (
$bit
)
[int]$int = 0
$bits = $bit.ToString().ToCharArray()
$index = ($bits.Count)-1
foreach ($b in $bits) {
if ($b -notlike 0) {
$int += [math]::Pow(2,$index)
}
$index -= 1
}
$int
}
</code></pre>
<p><code>ConvertFrom-Bit 10010011</code></p>
<p><code>Get-Process pwsh | fl ProcessorAffinity</code> привязка процесса к ядрам, представляет из себя битовую маску (bitmask), где каждому биту соответствует ядро процессора. Если для ядра отмечено сходство (affinity), то бит выставляется в 1, если нет — то в 0. Например, если выбраны все 16 ядер, то это 1111 1111 1111 1111 или 65535. <br> <code>(Get-Process pwsh).ProcessorAffinity = 15</code> 0000000000001111 присвоить 4 первых ядра <br> <code>(Get-Process pwsh).ProcessorAffinity = 61440</code> 1111000000000000 присвоить 4 последних ядра <br> <code>(Get-Process pwsh).ProcessorAffinity = (ConvertFrom-Bit 1111000000000000)</code></p>
<h3>Property</h3>
<p><code>$srv.Count</code> кол-во элементов в массиве <br> <code>$srv.Length</code> содержит количество символом строки переменной [string] или количество значений (строк) объекта <br> <code>$srv.Chars(2)</code> отобразить 3-й символ в строке <br> <code>$srv[2]</code> отобразить 3-ю строку в массиве</p>
<h3>Method</h3>
<p><code>$srv.Insert(0,"https://")</code> добавить значение перед первым символом <br> <code>$srv.Substring(4)</code> удалить (из всего массива) первые 4 символа <br> <code>$srv.Remove(3)</code> удалить из всего массива все после 3 символа <br> <code>$string = "123"</code> создать строку <br> <code>$int = [convert]::ToInt32($string)</code> преобразовать строку в тип данных число <br> <code>[string]::Concat($text,$num)</code> объеденить переменные в одну строку <br> <code>[string]::Join(":",$text,$num)</code> объеденить используя разделитель <br> <code>[string]::Compare($text,$num,$true)</code> выдает 0 при совпадении или 1/-1 при несовпадении, $true (без учета регистра) или $false (с учетом регистра) <br> <code>[string]::Equals($text,$num)</code> производит сравнение двух строк и выдает $true при их совпадении или $false при несовпадении <br> <code>[string]::IsNullOrEmpty($text)</code> проверяет наличие строки, если строка пуста $true, если нет $false <br> <code>[string]::IsNullOrWhiteSpace($text2)</code> проверяет на наличие только символов пробел, табуляция или символ новой строки</p>
<h3>DateTime</h3>
<p><code>Get-TimeZone</code> часовой пояс <br> <code>[DateTime]::UtcNow</code> время в формате UTC 0 <br> <code>(Get-Date).AddHours(-3)</code> <br> <code>$Date = (Get-Date -Format "dd/MM/yyyy hh:mm:ss")</code> <br> <code>$Date = Get-Date -f "dd/MM/yyyy"</code> получаем тип данных [string] <br> <code>[DateTime]$gDate = Get-Date "$Date"</code> преобразовать в тип [DateTime] <br> <code>[int32]$days=($fDate-$gDate).Days</code> получить разницу в днях <br> <code>"5/7/07" -as [DateTime]</code> преобразовать входные данные в тип данных [DateTime] <br> <code>New-TimeSpan -Start $VBRRP.CreationTimeUTC -End $VBRRP.CompletionTimeUTC</code> получить разницу во времени</p>
<h3>Measure-Command</h3>
<p><code>(Measure-Command {ping ya.ru}).TotalSeconds</code> узнать только время выполнения <br> <code>(Get-History)[-1] | select @{Name="RunTime"; Expression={$_.EndExecutionTime - $_.StartExecutionTime}},ExecutionStatus,CommandLine</code> посчитать время работы последней [-1] (select -Last 1) выполненной команды и узнать ее статус</p>
<h3>Timer</h3>
<p><code>$start_time = Get-Date</code> зафиксировать время до выполнения команды <br> <code>$end_time = Get-Date</code> зафиксировать время по завершению <br> <code>$time = $end_time - $start_time</code> высчитать время работы скрипта <br> <code>$min = $time.minutes</code> <br> <code>$sec = $time.seconds</code> <br> <code>Write-Host "$min минут $sec секунд"</code> <br> <code>$timer = [System.Diagnostics.Stopwatch]::StartNew()</code> запустить таймер <br> <code>$timer.IsRunning</code> статус работы таймера <br> <code>$timer.Elapsed.TotalSeconds</code> отобразить время с момента запуска (в секундах) <br> <code>$timer.Stop()</code> остановить таймер</p>
<h3>Foreach</h3>
<p><code>$list = 100..110</code> создать массив из цифр от 100 до 110 <br> <code>foreach ($srv in $list) {ping 192.168.3.$srv -n 1 -w 50}</code> $srv хранит текущий элемент из $list и повторяет команду до последнего элемента в массиве <br> <code>$foreach.Current</code> текущий элемент в цикле <br> <code>$foreach.Reset()</code> обнуляет итерацию, перебор начнется заново, что приводит к бесконечному циклу <br> <code>$foreach.MoveNext()</code> переход к следующему элементу в цикле</p>
<h3>ForEach-Object (%)</h3>
<p><code>100..110 | %{ping -n 1 -w 50 192.168.3.$_ > $null</code> <br> <code>if ($LastExitCode -eq 0) {Write-Host "192.168.3.$_" -ForegroundColor green</code> <br> <code>} else {</code> <br> <code>Write-Host "192.168.3.$_"-ForegroundColor Red}}</code> <br> <code>%</code> передать цикл через конвеер (ForEach-Object) <br> <code>$_</code> переменная цикла и конвеера ($PSItem) <br> <code>gwmi Win32_QuickFixEngineering | where {$_.InstalledOn.ToString() -match "2022"} | %{($_.HotFixID.Substring(2))}</code> gwmi создает массив, вывод команды передается where для поиска подходящих под критерии объектов. По конвееру передается в цикл для удаления первых (2) символов методом Substring из всех объектов HotFixID.</p>
<h3>While</h3>
<p><code>$srv = "yandex.ru"</code> <br> <code>$out2 = "Есть пинг"</code> <br> <code>$out3 = "Нет пинга"</code> <br> <code>$out = $false`` предварительно сбросить переменную, While проверяет условие до запуска цикла \ </code>While ($out -eq $false){`` пока условие является $true, цикл будет повторяться <br> <code>$out = ping -n 1 -w 50 $srv</code> <br> `if ($out -match "ttl") {$out = $true; $out2} else {$out = $false; $out3; sleep 1}` <br> `}`</p>
<p><code>while ($True){`` запустить бесконечный цикл \ </code>$result = ping yandex.ru -n 1 -w 50<code>\</code>if ($result -match "TTL"){<code> условие, при котором будет выполнен break \ `Write-Host "Сайт доступен"` \ `break</code> остановит цикл <br> <code>} else {Write-Host "Сайт недоступен"; sleep 1}</code> <br> <code>}</code></p>
<h3>Try-Catch-Finally</h3>
<pre><code class="language-PowerShell">Try {$out = pping 192.168.3.1}
Catch {Write-Warning "$($error[0])"} # выводит в случае ошибки (вместо ошибки)
finally {$out = "End"} # выполняется в конце в любом случае
</code></pre>
<h3>Error</h3>
<p><code>$Error</code> выводит все ошибки текущего сеанса <br> <code>$Error[0].InvocationInfo</code> развернутый отчет об ошибке <br> <code>$Error.clear()</code> <br> <code>$LASTEXITCODE</code> результат выполнения последней команды (0 - успех) <br> <code>exit 1</code> код завершения, который возвращается $LASTEXITCODE</p>
<h1>Files</h1>
<p><code>$file = [System.IO.File]::Create("$home\desktop\test.txt")</code> создать файл <br> <code>$file.Close()</code> закрыть файл <br> <code>[System.IO.File]::ReadAllLines("$home\desktop\test.txt")</code> прочитать файл <br> <code>$file = New-Object System.IO.StreamReader("$home\desktop\test.txt")</code> файл будет занят процессом PowerShell <br> <code>$file | gm</code> <br> <code>$file.ReadLine()</code> построчный вывод <br> <code>$file.ReadToEnd()</code> прочитать файл целиком</p>
<h3>Read/Write Bytes</h3>
<p><code>$file = [io.file]::ReadAllBytes("$home\desktop\powershell.jpg")</code> метод открывает двоичный файл, считывает его в массив байт и закрывает файл <br> <code>[io.file]::WriteAllBytes("$home\desktop\tloztotk-2.jpg",$file)</code> сохранить байты в файл (можно использовать для выгрузки двоичных файлов из БД)</p>
<p><code>Get-Content $home/desktop\test.txt -Wait</code> аналог tail <br> <code>Test-Path $path</code> проверить доступность пути <br> <code>Get-ChildItem $path -Filter *.txt -Recurse</code> отобразить содержимое каталога (Alias: ls/gci/dir) и дочерних каталогов (-Recurse) и отфильтровать вывод <br> <code>Get-Location</code> отобразить текущие месторасположение (Alias: pwd/gl) <br> <code>Set-Location $path</code> перемещение по каталогам (Alias: cd/sl) <br> <code>Invoke-Item $path</code> открыть файл (Alias: ii/start) <br> <code>Get-ItemProperty $env:userprofile\Documents\dns-list.txt | select FullName,Directory,Name,BaseName,Extension</code> свойтсва файла <br> <code>Get-ItemProperty -Path $path\* | select FullName,CreationTime,LastWriteTime</code> свойства файлов содержимого директории, дата их создания и последнего изменения <br> <code>New-Item -Path "C:\test\" -ItemType "Directory"</code> создать директорию (Alias: mkdir/md) <br> <code>New-Item -Path "C:\test\file.txt" -ItemType "File" -Value "Добавить текст в файл"</code> создать файл <br> <code>"test" > "C:\test\file.txt"</code> заменить содержимое <br> <code>"test" >> "C:\test\file.txt"</code> добавить строку в файл <br> <code>New-Item -Path "C:\test\test\file.txt" -Force</code> ключ используется для создания отсутствующих в пути директорий или перезаписи файла если он уже существует <br> <code>Move-Item</code> перемещение объектов (Alias: mv/move) <br> <code>Remove-Item "$path\" -Recurse</code> удаление всех файлов внутри каталога, без запроса подверждения (Alias: rm/del) <br> <code>Remove-Item $path -Recurse -Include "*.txt","*.temp" -Exclude "log.txt"</code> удалить все файлы с расширением txt и temp ([Array]), кроме log.txt <br> <code>Rename-Item "C:\test\*.*" "*.jpg"</code> переименовать файлы по маске (Alias: ren) <br> <code>Copy-Item</code> копирование файлов и каталогов (Alias: cp/copy) <br> <code>Copy-Item -Path "\\server-01\test" -Destination "C:\" -Recurse</code> копировать директорию с ее содержимым (-Recurse) <br> <code>Copy-Item -Path "C:\*.txt" -Destination "C:\test\"</code> знак '' в конце Destination используется для переноса папки внутрь указанной, отсутствие, что это новое имя директории <br> <code>Copy-Item -Path "C:\*" -Destination "C:\test\" -Include '*.txt','*.jpg'</code> копировать объекты с указанным расширением (Include) <br> <code>Copy-Item -Path "C:\*" -Destination "C:\test\" -Exclude '*.jpeg'</code> копировать объекты, за исключением файлов с расширением (Exclude) <br> <code>$log = Copy-Item "C:\*.txt" "C:\test\" -PassThru</code> вывести результат копирования (логирование) в переменную, можно забирать строки с помощью индексов $log[0].FullName</p>
<h3>Clear-env-Temp-14-days</h3>
<pre><code class="language-PowerShell">$ls = Get-Item $env:TEMP\*.tmp # считать все файлы с указанным расширением
$date = (Get-Date).AddDays(-14)
foreach ($l in $ls) {
if ($l.LastWriteTime -le $date) {
$l.FullName
Remove-Item $l.FullName -Recurse
}
}
</code></pre>
<h3>Filehash</h3>
<p><code>Get-Filehash -Algorithm SHA256 "$env:USERPROFILE\Documents\RSA.conf.txt"</code></p>
<h3>Microsoft.PowerShell.Archive</h3>
<p><code>Compress-Archive -Path $sourcepath -DestinationPath $dstpath -CompressionLevel Optimal</code> архивировать <br> <code>Expand-Archive .\powerlinefonts.zip</code> разархивировать</p>
<h1>Credential</h1>
<p><code>$Cred = Get-Credential</code> сохраняет креды в переменные $Cred.Username и $Cred.Password <br> <code>$Cred.GetNetworkCredential().password</code> извлечь пароль <br> <code>cmdkey /generic:"TERMSRV/$srv" /user:"$username" /pass:"$password"</code> добавить указанные креды аудентификации на на терминальный сервер для подключения без пароля <br> <code>mstsc /admin /v:$srv</code> авторизоваться <br> <code>cmdkey /delete:"TERMSRV/$srv"</code> удалить добавленные креды аудентификации из системы <br> <code>rundll32.exe keymgr.dll,KRShowKeyMgr</code> хранилище Stored User Names and Password <br> <code>Get-Service VaultSvc</code> служба для работы Credential Manager <br> <code>Install-Module CredentialManager</code> установить модуль управления Credential Manager к хранилищу PasswordVault из PowerShell <br> <code>[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls11,Tls12'</code> для устаноки модуля <br> <code>Get-StoredCredential</code> получить учетные данные из хранилища Windows Vault <br> <code>Get-StrongPassword</code> генератор пароля <br> <code>New-StoredCredential -UserName test -Password "123456"</code> добавить учетную запись <br> <code>Remove-StoredCredential</code> удалить учетную запись <br> <code>$Cred = Get-StoredCredential | where {$_.username -match "admin"}</code> <br> <code>$pass = $cred.password</code> <br> <code>$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass)</code> <br> <code>[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)</code></p>
<h3>Out-Gridview</h3>
<p><code>Get-Service -cn $srv | Out-GridView -Title "Service $srv" -OutputMode Single –PassThru | Restart-Service</code> перезапустить выбранную службу</p>
<h3>Out-File</h3>
<p><code>Read-Host –AsSecureString | ConvertFrom-SecureString | Out-File "$env:userprofile\desktop\password.txt"</code> писать в файл. Преобразовать пароль в формат SecureString с использованием шифрования Windows Data Protection API (DPAPI)</p>
<h3>Get-Content (gc/cat/type)</h3>
<p><code>$password = gc "$env:userprofile\desktop\password.txt" | ConvertTo-SecureString</code> читать хэш пароля из файла с помощью ключей, хранящихся в профиле текущего пользователя, который невозможно прочитать на другом копьютере</p>
<h3>AES Key</h3>
<p><code>$AESKey = New-Object Byte[] 32</code> <br> <code>[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey)</code> <br> <code>$AESKey | Out-File "C:\password.key"</code> <br> <code>$Cred.Password | ConvertFrom-SecureString -Key (Get-Content "C:\password.key") | Set-Content "C:\password.txt"</code> сохранить пароль в файл используя внешний ключ <br> <code>$pass = Get-Content "C:\password.txt" | ConvertTo-SecureString -Key (Get-Content "\\Server\Share\password.key")</code> расшифровать пароль на втором компьютере</p>
<h1>WinEvent</h1>
<p><code>Get-WinEvent -ListLog *</code> отобразить все доступные журналы логов <br> <code>Get-WinEvent -ListLog * | where RecordCount -ne 0 | where RecordCount -ne $null | sort -Descending RecordCount</code> отобразить не пустые журналы с сортировкой по кол-ву записей <br> <code>Get-WinEvent -ListProvider * | ft</code> отобразить всех провайдеров приложений <br> <code>Get-WinEvent -ListProvider GroupPolicy</code> найти в какой журнал LogLinks {Application} пишутся логи приложения <br> <code>Get-WinEvent -ListProvider *smb*</code> <br> <code>Get-WinEvent -ListLog * | where logname -match SMB | sort -Descending RecordCount</code> найти все журналы по имени <br> <code>Get-WinEvent -LogName "Microsoft-Windows-SmbClient/Connectivity"</code> <br> <code>Get-WinEvent -ListProvider *firewall*</code></p>
<h3>Filter XPath/Hashtable</h3>
<p><code>Get-WinEvent -FilterHashtable @{LogName="Security";ID=4624}</code> найти логи по ID в журнале Security <br> <code>Get-WinEvent -FilterHashtable @{LogName="System";Level=2}</code> найти все записи ошибки (1 - критический, 3 - предупреждение, 4 - сведения) <br> <code>Get-WinEvent -FilterHashtable @{LogName="System";Level=2;ProviderName="Service Control Manager"}</code> отфильтровать по имени провайдера</p>
<p><code>([xml](Get-WinEvent -FilterHashtable @{LogName="Security";ID=4688} -MaxEvents 1).ToXml()).Event.EventData.Data</code> отобразить все свойства, хранимые в EventData (Message) <br> <code>Get-WinEvent -FilterHashtable @{logname="security";ID=4688} -MaxEvents 1 | select timecreated,{$_.Properties[5].value}</code> отфильтровать время события и имя запущенного процесса</p>
<pre><code>$query = '
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[EventID=4688]] and
*[EventData[Data[@Name="NewProcessName"]="C:\Windows\System32\autochk.exe" or Data[@Name="NewProcessName"]="C:\Windows\System32\services.exe"]]
</Select>
</Query>
</QueryList>
'
Get-WinEvent -LogName Security -FilterXPath $query
</code></pre>
<h3>Reboot</h3>
<pre><code>$query = '
<QueryList>
<Query Id="0" Path="System">
<Select Path="System">
*[
System[
EventID=41 or
EventID=1074 or
EventID=1076 or
EventID=6005 or
EventID=6006 or
EventID=6008 or
EventID=6009 or
EventID=6013
]
]
</Select>
</Query>
</QueryList>
'
Get-WinEvent -LogName System -FilterXPath $query
41 ` Система была перезагружена без корректного завершения работы.
1074` Система была корректного выключена пользователем или процессом.
1076` Следует за Event ID 6008 и означает, что первый пользователь (с правом выключения системы) подключившийся к серверу после неожиданной перезагрузки или выключения, указал причину этого события.
6005` Запуск "Журнала событий Windows" (Event Log). Указывает на включение системы.
6006` Остановка «Журнала событий Windows». Указывает на выключение системы.
6008` Предыдущее выключение системы было неожиданным.
6009` Версия операционной системы, зафиксированная при загрузке системы.
6013` Время работы системы (system uptime) в секундах.
</code></pre>
<h3>Logon</h3>
<pre><code class="language-PowerShell">$srv = "localhost"
$FilterXPath = '<QueryList><Query Id="0"><Select>*[System[EventID=21]]</Select></Query></QueryList>'
$RDPAuths = Get-WinEvent -ComputerName $srv -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" -FilterXPath $FilterXPath
[xml[]]$xml = $RDPAuths | Foreach {$_.ToXml()}
$EventData = Foreach ($event in $xml.Event) {
New-Object PSObject -Property @{
"Connection Time" = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm K')
"User Name" = $event.UserData.EventXML.User
"User ID" = $event.UserData.EventXML.SessionID
"User Address" = $event.UserData.EventXML.Address
"Event ID" = $event.System.EventID
}}
$EventData | ft
</code></pre>
<h3>EventLog</h3>
<p><code>Get-EventLog -List</code> отобразить все корневые журналы логов и их размер <br> <code>Clear-EventLog Application</code> очистить логи указанного журнала <br> <code>Get-EventLog -LogName Security -InstanceId 4624</code> найти логи по ID в журнале Security</p>
<h1>Firewall</h1>
<pre><code class="language-PowerShell">$days = 5
$obj = @()
$fw = Get-WinEvent "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"
foreach ($temp_fw in $fw) {
if ($temp_fw.id -eq 2097) { # 2004
$type = "Added Rule"
}
elseif ($temp_fw.id -eq 2006) {
$type = "Deleted Rule"
}
$port = $temp_fw.Properties[7] | select -ExpandProperty value
$name = $temp_fw.Properties[1] | select -ExpandProperty value
$obj += [PSCustomObject]@{
Time = $temp_fw.TimeCreated;
Type = $type;
Port = $port;
Name = $name}
}
$obj | Where-Object time -gt (Get-Date).AddDays(-$days)
</code></pre>
<p><code>New-NetFirewallRule -Profile Any -DisplayName "Open Port 135 RPC" -Direction Inbound -Protocol TCP -LocalPort 135</code> открыть in-порт <br> <code>Get-NetFirewallRule | where DisplayName -match kms | select *</code> найти правило по имени <br> <code>Get-NetFirewallPortFilter | where LocalPort -like 80</code> найти действующие правило по номеру порта</p>
<pre><code class="language-PowerShell">Get-NetFirewallRule -Enabled True -Direction Inbound | select -Property DisplayName,
@{Name='Protocol';Expression={($_ | Get-NetFirewallPortFilter).Protocol}},
@{Name='LocalPort';Expression={($_ | Get-NetFirewallPortFilter).LocalPort}},
@{Name='RemotePort';Expression={($_ | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($_ | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled,Profile
</code></pre>
<h3>Firewall-Manager</h3>
<p><code>Install-Module Firewall-Manager</code> <br> <code>Export-FirewallRules -Name * -CSVFile $home\documents\fw.csv</code> -Inbound -Outbound -Enabled -Disabled -Allow -Block (фильтр правил для экспорта) <br> <code>Import-FirewallRules -CSVFile $home\documents\fw.csv</code></p>
<h1>Defender</h1>
<p><code>Import-Module Defender</code> <br> <code>Get-Command -Module Defender</code> <br> <code>Get-MpComputerStatus</code> <br> <code>(Get-MpComputerStatus).AntivirusEnabled</code> статус работы антивируса</p>
<p><code>$session = NewCimSession -ComputerName hostname</code> подключиться к удаленному компьютеру, используется WinRM <br> <code>Get-MpComputerStatus -CimSession $session | fl fullscan*</code> узнать дату последнего сканирования на удаленном компьютере</p>
<p><code>Get-MpPreference</code> настройки <br> <code>(Get-MpPreference).ScanPurgeItemsAfterDelay</code> время хранения записей журнала защитника в днях <br> <code>Set-MpPreference -ScanPurgeItemsAfterDelay 30</code> изменить время хранения <br> <code>ls "C:\ProgramData\Microsoft\Windows Defender\Scans\History"</code> <br> <code>Get-MpPreference | select disable*</code> отобразить статус всех видов проверок/сканирований <br> <code>Set-MpPreference -DisableRealtimeMonitoring $true</code> отключить защиту Defender в реальном времени (использовать только ручное сканирование) <br> <code>Set-MpPreference -DisableRemovableDriveScanning $false</code> включить сканирование USB накопителей <br> <code>Get-MpPreference | select excl*</code> отобразить список всех исключений <br> <code>(Get-MpPreference).ExclusionPath</code> <br> <code>Add-MpPreference -ExclusionPath C:\install</code> добавить директорию в исключение <br> <code>Remove-MpPreference -ExclusionPath C:\install</code> удалить из исключения <br> <code>New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force</code> полностью отключить Windows Defender</p>
<p><code>Set-MpPreference -SignatureDefinitionUpdateFileSharesSources \\FileShare1\Updates</code> для обновления из сетевой папки нужно предварительно скачать файлы с сигнатурами баз с сайта <a href="https://www.microsoft.com/security/portal/definitions/adl.aspx">https://www.microsoft.com/security/portal/definitions/adl.aspx</a> и поместить в сетевой каталог <code>Update-MpSignature -UpdateSource FileShares</code> изменить источник обновлений (MicrosoftUpdateServer – сервера обновлений MS в интернете, InternalDefinitionUpdateServer — внутренний WSUS сервер) <br> <code>Update-MpSignature</code> обновить сигнатуры</p>
<p><code>Start-MpScan -ScanType QuickScan</code> быстрая проверка или FullScan <br> <code>Start-MpScan -ScanType FullScan -AsJob</code> <br> <code>Set-MpPreference -RemediationScheduleDay 1-7</code> выбрать дни, начиная с воскресенья или 0 каждый день, 8 - сбросить <br> <code>Set-MpPreference -ScanScheduleQuickScanTime 14:00:00</code> <br> <code>Start-MpScan -ScanType CustomScan -ScanPath "C:\Program Files"</code> сканировать выбранную директорию</p>
<p><code>Get-MpThreat</code> история угроз и тип угрозы (ThreatName: HackTool/Trojan) <br> <code>Get-MpThreatCatalog</code> список известных видов угроз <br> <code>Get-MpThreatDetection</code> история защиты (активных и прошлые) и ID угрозы <br> <code>Get-MpThreat -ThreatID 2147760253</code></p>
<p><code>ls "C:\ProgramData\Microsoft\Windows Defender\Quarantine\"</code> директория хранения файлов в карантине <br> <code>cd "C:\Program Files\Windows Defender\"</code> <br> <code>.\MpCmdRun.exe -restore -name $ThreatName</code> восстановить файл из карантина <br> <code>.\MpCmdRun.exe -restore -filepath $path_file</code></p>
<h1>WindowsUpdate</h1>
<p><code>Get-Hotfix | Sort-Object -Descending InstalledOn</code> список установленных обновлений (информация из cimv2) <br> <code>Get-Hotfix -Description "Security update"</code> <br> <code>Get-CimInstance Win32_QuickFixEngineering</code> <br> <code>Get-Command -Module WindowsUpdate</code> <br> <code>Get-WindowsUpdateLog</code> <br> <code>Get-Service uhssvc</code> служба Microsoft Health Update Tools, которая отвечает за предоставление обновлений</p>
<p><code>Install-Module -Name PSWindowsUpdate -Scope CurrentUser</code> <br> <code>Import-Module PSWindowsUpdate</code> <br> <code>Get-Command -Module PSWindowsUpdate</code> <br> <code>Get-WindowsUpdate</code> список обновлений для скачать и установить с сервера WSUS или Microsoft Update <br> <code>Get-WindowsUpdate -Download</code> загрузить все обновления <br> <code>Get-WindowsUpdate –Install</code> установить все обновления <br> <code>Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -IgnoreReboot</code> установить все обновления без перезагрузки <br> <code>Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install</code> <br> <code>Get-WindowsUpdate -KBArticleID KB2538243 -Hide</code> скрыть обновления, что бы они никогда не устанавливались <br> <code>Get-WindowsUpdate –IsHidden</code> отобразить скрытые обновления (Hide-WindowsUpdate) <br> <code>Remove-WindowsUpdate -KBArticleID KB4011634 -NoRestart</code> удалить обновление <br> <code>Uninstall-WindowsUpdate</code> удалить обновление <br> <code>Add-WUServiceManager</code> регистрация сервера обновления (Windows Update Service Manager) <br> <code>Enable-WURemoting</code> включить правила Windows Defender, разрешающие удаленное использование командлета PSWindowsUpdate <br> <code>Get-WUApiVersion</code> версия Windows Update Agent <br> <code>Get-WUHistory</code> список всех установленных обновлений (история обновлений) <br> <code>Get-WUHistory | Where-Object {$_.Title -match "KB4517389"}</code> поиск обновления <br> <code>Get-WULastResults</code> даты последнего поиска и установки обновлений <br> <code>Get-WURebootStatus</code> проверить, нужна ли перезагрузка для применения конкретного обновления <br> <code>Get-WUServiceManager</code> выводит источники обновлений <br> <code>Get-WUInstallerStatus</code> статус службы Windows Installer <br> <code>Remove-WUServiceManager</code> отключить Windows Update Service Manager</p>
<h1>DISM</h1>
<p><code>Get-Command -Module Dism -Name *Driver*</code> <br> <code>Export-WindowsDriver -Online -Destination C:\Users\Lifailon\Documents\Drivers\</code> извлечение драйверов из текущей системы (C:\Windows\System32\DriverStore\FileRepository), выгружает список файлов, которые необходимы для установки драйвера (dll,sys,exe) в соответствии со списком файлов, указанных в секции [CopyFiles] inf-файла драйвера. <br> <code>Export-WindowsDriver -Path C:\win_image -Destination C:\drivers</code> извлечь драйвера из офлайн образа Windows, смонтированного в каталог c:\win_image <br> <code>$BackupDrivers = Export-WindowsDriver -Online -Destination C:\Drivers</code> <br> <code>$BackupDrivers | ft Driver,ClassName,ProviderName,Date,Version,ClassDescription</code> список драйверов в объектном представлении <br> <code>$BackupDrivers | where classname -match printer</code> <br> <code>pnputil.exe /add-driver C:\drivers\*.inf /subdirs /install</code> установить все (параметр subdirs) драйвера из указанной папки (включая вложенные)</p>
<p><code>sfc /scannow</code> проверить целостность системных файлов с помощью утилиты SFC (System File Checker), в случае поиска ошибок, попробует восстановить их оригинальные копии из хранилища системных компонентов Windows (каталог C:\Windows\WinSxS). Вывод работы логируется в C:\Windows\Logs\CBS с тегом SR <br> <code>Get-ComputerInfo | select *</code> подробная информация о системе (WindowsVersion,WindowsEditionId,<em>Bios</em>) <br> <code>Get-WindowsImage -ImagePath E:\sources\install.wim</code> список доступных версий в образе <br> <code>Repair-WindowsImage -Online –ScanHealth</code> <br> <code>Repair-WindowsImage -Online -RestoreHealth</code> восстановление хранилища системных компонентов <br> <code>Repair-WindowsImage -Online -RestoreHealth -Source E:\sources\install.wim:3 –LimitAccess</code> восстановление в оффлайн режиме из образа по номеру индекса</p>
<h1>Scheduled</h1>
<p><code>$Trigger = New-ScheduledTaskTrigger -At 01:00am -Daily</code> 1:00 ночи <br> <code>$Trigger = New-ScheduledTaskTrigger –AtLogon</code> запуск при входе пользователя в систему <br> <code>$Trigger = New-ScheduledTaskTrigger -AtStartup</code> при запуске системы <br> <code>$User = "NT AUTHORITY\SYSTEM"</code> <br> <code>$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "$home\Documents\DNS-Change-Tray-1.3.ps1"</code> <br> <code>$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Unrestricted -WindowStyle Hidden -File $home\Documents\DNS-Change-Tray-1.3.ps1"</code> <br> <code>Register-ScheduledTask -TaskName "DNS-Change-Tray-Startup" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force</code></p>
<p><code>Get-ScheduledTask | ? state -ne Disabled</code> список всех активных заданий <br> <code>Start-ScheduledTask DNS-Change-Tray-Startup</code> запустить задание немедленно <br> <code>Get-ScheduledTask DNS-Change-Tray-Startup | Disable-ScheduledTask</code> отключить задание <br> <code>Get-ScheduledTask DNS-Change-Tray-Startup | Enable-ScheduledTask</code> включить задание <br> <code>Unregister-ScheduledTask DNS-Change-Tray-Startup</code> удалить задание <br> <code>Export-ScheduledTask DNS-Change-Tray-Startup | Out-File $home\Desktop\Task-Export-Startup.xml</code> экспортировать задание в xml <br> <code>Register-ScheduledTask -Xml (Get-Content $home\Desktop\Task-Export-Startup.xml | Out-String) -TaskName "DNS-Change-Tray-Startup"</code></p>
<h1>Network</h1>
<h3>ping</h3>
<p><code>Test-Connection -Count 1 $srv1, $srv2</code> отправить icmp-пакет двум хостам <br> <code>Test-Connection $srv -ErrorAction SilentlyContinue</code> не выводить ошибок, если хост не отвечает <br> <code>Test-Connection -Source $srv1 -ComputerName $srv2</code> пинг с удаленного компьютера</p>
<pre><code class="language-PowerShell">function Test-PingNetwork {
param (
[Parameter(Mandatory,ValueFromPipeline)][string[]]$Network,
[ValidateRange(100,10000)][int]$Timeout = 100
)
$ping = New-Object System.Net.NetworkInformation.Ping
$Network = $Network -replace "0$"
$net = @()
foreach ($r in @(1..254)) {
$net += "$network$r"
}
foreach ($n in $net) {
$ping.Send($n, $timeout) | select @{Name="Address"; Expression={$n -replace ".+\."}}, Status
}
}
</code></pre>
<p><code>Test-PingNetwork -Network 192.168.3.0</code> <br> <code>Test-PingNetwork -Network 192.168.3.0 -Timeout 1000</code></p>
<p><code>Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"</code> <br> <code>Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'" | Format-Table -Property Address,ResponseTime,StatusCode -Autosize</code> 0 - успех <br> <code>'127.0.0.1','8.8.8.8' | ForEach-Object -Process {Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") | Select-Object -Property Address,ResponseTime,StatusCode}</code> <br> <code>$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}</code> сформировать массив из ip-адресов подсети</p>
<h3>dhcp</h3>
<p><code>Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"</code> отобразить адаптеры с включенным DHCP <br> <code>$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'</code> <br> <code>Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql</code> включение DHCP на всех адаптерах <br> <code>Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll</code> отменить аренду адресов DHCP на всех адаптерах <br> <code>Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll</code> обновить аренду адресов DHCP на всех адаптерах</p>
<h3>port</h3>
<p><code>tnc $srv -p 5985</code> <br> <code>tnc $srv -CommonTCPPort WINRM</code> HTTP,RDP,SMB <br> <code>tnc ya.ru –TraceRoute -Hops 2</code> TTL=2 <br> <code>tnc ya.ru -DiagnoseRouting</code> маршрутизация до хоста, куда (DestinationPrefix: 0.0.0.0/0) через (NextHop: 192.168.1.254)</p>
<h3>nslookup</h3>
<p><code>nslookup ya.ru 1.1.1.1</code> с указанием DNS сервера <br> <code>nslookup -type=any ya.ru</code> указать тип записи <br> <code>Resolve-DnsName ya.ru -Type MX</code> ALL,ANY,A,NS,SRV,CNAME,PTR,TXT(spf) <br> <code>[System.Net.Dns]::GetHostEntry("ya.ru")</code></p>
<h3>ipconfig</h3>
<p><code>Get-NetIPConfiguration</code> <br> <code>Get-NetIPConfiguration -InterfaceIndex 14 -Detailed</code></p>
<h3>Adapter</h3>
<p><code>Get-NetAdapter</code> <br> <code>Set-NetIPInterface -InterfaceIndex 14 -Dhcp Disabled</code> отключить DHCP <br> <code>Get-NetAdapter -InterfaceIndex 14 | New-NetIPAddress –IPAddress 192.168.3.99 -DefaultGateway 192.168.3.1 -PrefixLength 24</code> задать/добавить статический IP-адрес <br> <code>Set-NetIPAddress -InterfaceIndex 14 -IPAddress 192.168.3.98</code> изменить IP-адреас на адаптере <br> <code>Remove-NetIPAddress -InterfaceIndex 14 -IPAddress 192.168.3.99</code> удалить IP-адрес на адаптере <br> <code>Set-NetIPInterface -InterfaceIndex 14 -Dhcp Enabled</code> включить DHCP</p>
<h3>DNSClient</h3>
<p><code>Get-DNSClientServerAddress</code> <br> <code>Set-DNSClientServerAddress -InterfaceIndex 14 -ServerAddresses 8.8.8.8</code></p>
<h3>DNSCache</h3>
<p><code>Get-DnsClientCache</code> отобразить кэшированные записи клиента DNS <br> <code>Clear-DnsClientCache</code> очистить кэш</p>
<h3>Binding</h3>
<p><code>Get-NetAdapterBinding -Name Ethernet -IncludeHidden -AllBindings</code> <br> <code>Get-NetAdapterBinding -Name "Беспроводная сеть" -DisplayName "IP версии 6 (TCP/IPv6)" | Set-NetAdapterBinding -Enabled $false</code> отключить IPv6 на адаптере</p>
<h3>TCPSetting</h3>
<p><code>Get-NetTCPSetting</code> <br> <code>Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP</code> <br> <code>Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True</code> <br> <code>Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled</code></p>
<h3>netstat</h3>
<p><code>netstat -anop tcp</code> -n/-f/-b <br> <code>Get-NetTCPConnection -State Established,Listen | ? LocalPort -Match 3389</code> <br> <code>Get-NetTCPConnection -State Established,Listen | ? RemotePort -Match 22</code> <br> <code>Get-NetUDPEndpoint | ? LocalPort -Match 514</code> netstat -ap udp`</p>
<h3>Statistics</h3>
<p><code>netstat -se</code> <br> <code>Get-NetAdapterStatistics</code></p>
<h3>hostname</h3>
<p><code>$env:computername</code> <br> <code>hostname.exe</code> <br> <code>(Get-CIMInstance CIM_ComputerSystem).Name</code> <br> <code>(New-Object -ComObject WScript.Network).ComputerName</code> <br> <code>[System.Environment]::MachineName</code> <br> <code>[System.Net.Dns]::GetHostName()</code></p>
<h3>arp</h3>
<p><code>ipconfig /all | Select-String "физ"</code> grep <br> <code>Get-NetNeighbor -AddressFamily IPv4</code></p>
<pre><code class="language-PowerShell">function Get-ARP {
Param (
$proxy,
$search
)
if (!$proxy) {
$arp = arp -a
}
if ($proxy) {
$arp = icm $proxy {arp -a}
}
$mac = $arp[3..260]
$mac = $mac -replace "^\s\s"
$mac = $mac -replace "\s{1,50}"," "
$mac_coll = New-Object System.Collections.Generic.List[System.Object]
foreach ($m in $mac) {
$smac = $m -split " "
$mac_coll.Add([PSCustomObject]@{
IP = $smac[0];
MAC = $smac[1];
Type = $smac[2]
})
}
if ($search) {
if ($search -NotMatch "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}") {
#$ns = nslookup $search
#$ns = $ns[-2]
#$global:ns = $ns -replace "Address:\s{1,10}"
$rdns = Resolve-DnsName $search -ErrorAction Ignore
$ns = $rdns.IPAddress
if ($ns -eq $null) {
return
}
} else {
$ns = $search
}
$mac_coll = $mac_coll | ? ip -Match $ns
}
$mac_coll
}
</code></pre>
<p><code>Get-ARP -search 192.168.3.100</code> <br> <code>Get-ARP -search 192.168.3.100 -proxy dc-01</code></p>
<h3>rdp</h3>
<p><code>Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber"</code> <br> <code>Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber" -Value "3390"</code> изменить RDP-порт <br> <code>New-NetFirewallRule -Profile Any -DisplayName "RDP 3390" -Direction Inbound -Protocol TCP -LocalPort 3390</code> <br> <code>Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\" -Name "fDenyTSConnections"</code> <br> <code>Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\" -Name "fDenyTSConnections" -Value 0</code> включить rdp <br> <code>reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f</code> <br> <code>(gcim -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices).SetAllowTSConnections(0)</code> <br> <code>Get-Service TermService | Restart-Service -Force</code> перезапустить rdp-службу</p>
<h1>shutdown</h1>
<p><code>shutdown /r /o</code> перезагрузка в безопасный режим <br> <code>shutdown /s /t 600 /c "Power off after 10 minutes"</code> выключение <br> <code>shutdown /s /f</code> принудительное закрытие приложений <br> <code>shutdown /a</code> отмена <br> <code>shutdown /r /t 0 /m \\192.168.3.100</code> <br> <code>Restart-Computer -ComputerName 192.168.3.100 -Protocol WSMan</code> через WinRM <br> <code>Restart-Computer –ComputerName 192.168.3.100 –Force</code> через WMI <br> <code>Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown" -Name "value" -Value 1</code> скрыть кнопку выключения <br> <code>Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\Start\HideRestart" -Name "value" -Value 1</code> скрыть кнопку перезагрузки</p>
<pre><code class="language-PowerShell">function Start-Shutdown {
<#
.SYNOPSIS
Module for shutdown and restart the computer at a specified time
.DESCRIPTION
Example:
# Start-Shutdown -Time "18:00"
# Start-Shutdown -Restart -Time "18:00"
# Start-Shutdown -Cancel
.LINK
https://github.com/Lifailon/PS-Commands
#>
param(
[string]$Time,
[switch]$Restart,
[switch]$Cancel
)
if ($Time) {
$currentDateTime = Get-Date
$shutdownTime = Get-Date $Time
if ($shutdownTime -lt $currentDateTime) {
$shutdownTime = $shutdownTime.AddDays(1)
}
$timeUntilShutdown = $shutdownTime - $currentDateTime
$secondsUntilShutdown = [math]::Round($timeUntilShutdown.TotalSeconds)
}
if ($Cancel) {
Start-Process -FilePath "shutdown.exe" -ArgumentList "/a"
} elseif ($Restart) {
Write-Host "The computer will restart after $($timeUntilShutdown.Hours) hours and $($timeUntilShutdown.Minutes) minutes."
Start-Process -FilePath "shutdown.exe" -ArgumentList "/r", "/f", "/t", "$secondsUntilShutdown"
} else {
Write-Host "The computer will shutdown after $($timeUntilShutdown.Hours) hours and $($timeUntilShutdown.Minutes) minutes."
Start-Process -FilePath "shutdown.exe" -ArgumentList "/s", "/f", "/t", "$secondsUntilShutdown"
}
}
</code></pre>
<h1>LocalAccounts</h1>
<p><code>Get-Command -Module Microsoft.PowerShell.LocalAccounts</code> <br> <code>Get-LocalUser</code> список пользователей <br> <code>Get-LocalGroup</code> список групп <br> <code>New-LocalUser "1C" -Password $Password -FullName "1C Domain"</code> создать пользователя <br> <code>Set-LocalUser -Password $Password 1C</code> изменить пароль <br> <code>Add-LocalGroupMember -Group "Administrators" -Member "1C"</code> добавить в группу Администраторов <br> <code>Get-LocalGroupMember "Administrators"</code> члены группы</p>
<pre><code class="language-PowerShell">@("vproxy-01","vproxy-02","vproxy-03") | %{
icm $_ {Add-LocalGroupMember -Group "Administrators" -Member "support4"}
icm $_ {Get-LocalGroupMember "Administrators"}
}
</code></pre>
<h1>SMB</h1>
<p><code>Get-SmbServerConfiguration</code> <br> <code>Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force</code> отключить протокол SMB v1 <br> <code>Get-WindowsFeature | Where-Object {$_.name -eq "FS-SMB1"} | ft Name,Installstate</code> модуль ServerManager, проверить установлен ли компонент SMB1 <br> <code>Install-WindowsFeature FS-SMB1</code> установить SMB1 <br> <code>Uninstall-WindowsFeature –Name FS-SMB1 –Remove</code> удалить SMB1 клиента (понадобится перезагрузка) <br> <code>Get-WindowsOptionalFeature -Online</code> модуль DISM, для работы с компонентами Windows <br> <code>Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -Remove</code> удалить SMB1 <br> <code>Set-SmbServerConfiguration –AuditSmb1Access $true</code> включить аудит SMB1 <br> <code>Get-SmbConnection</code> список активных сессий и используемая версия SMB (Dialect) <br> <code>Get-SmbOpenFile | select ClientUserName,ClientComputerName,Path,SessionID</code> список открытых файлов <br> <code>Get-SmbShare</code> список сетевых папок <br> <code>New-SmbShare -Name xl-share -Path E:\test</code> создать новую общую сетевую папку (расшарить) <br> <code>-EncryptData $True</code> включить шифрование SMB <br> <code>-Description</code> имя в сетевом окружении <br> <code>-ReadAccess "domain\username"</code> доступ на чтение <br> <code>-ChangeAccess</code> доступ на запись <br> <code>-FullAccess</code> полный доступ <br> <code>-NoAccess ALL</code> нет прав <br> <code>-FolderEnumerationMode [AccessBased | Unrestricted]</code> позволяет скрыть в сетевой папке объекты, на которых у пользователя нет доступа с помощью Access-Based Enumeration (ABE) <br> <code>Get-SmbShare xl-share | Set-SmbShare -FolderEnumerationMode AccessBased</code> ключить ABE для всех расшаренных папок <br> <code>Remove-SmbShare xl-share -force</code> удалить сетевой доступ (шару) <br> <code>Get-SmbShareAccess xl-share</code> вывести список доступов безопасности к шаре <br> <code>Revoke-SmbShareAccess xl-share -AccountName Everyone –Force</code> удалить группу из списка доступов <br> <code>Grant-SmbShareAccess -Name xl-share -AccountName "domain\XL-Share" -AccessRight Change –force</code> изменить/добавить разрешения на запись (Full,Read) <br> <code>Grant-SmbShareAccess -Name xl-share -AccountName "все" -AccessRight Change –force</code> <br> <code>Block-SmbShareAccess -Name xl-share -AccountName "domain\noAccess" -Force</code> принудительный запрет <br> <code>New-SmbMapping -LocalPath X: -RemotePath \\$srv\xl-share -UserName support4 -Password password –Persistent $true</code> подключить сетевой диск <br> <code>-Persistent</code> восстановление соединения после отключения компьютера или сети <br> <code>-SaveCredential</code> позволяет сохранить учетные данные пользователя для подключения в диспетчер учетных данных Windows Credential Manager <br> <code>Stop-Process -Name "explorer" | Start-Process -FilePath "C:\Windows\explorer.exe"</code> перезапустить процесс для отображения в проводнике <br> <code>Get-SmbMapping</code> список подключенных сетевых дисков <br> <code>Remove-SmbMapping X: -force</code> отмонтировать сетевой диск <br> <code>$CIMSession = New-CIMSession –Computername $srv</code> создать сеанс CIM (аудентификация на SMB) <br> <code>Get-SmbOpenFile -CIMSession $CIMSession | select ClientUserName,ClientComputerName,Path | Out-GridView -PassThru | Close-SmbOpenFile -CIMSession $CIMSession -Confirm:$false –Force</code> закрыть файлы (открыть к ним сетевой доступ)</p>
<h3>Get-Acl</h3>
<p><code>(Get-Acl \\$srv\xl-share).access</code> доступ ACL на уровне NTFS <br> <code>Get-Acl C:\Drivers | Set-Acl C:\Distr</code> скопировать NTFS разрешения с одной папки и применить их на другую</p>
<h3>NTFSSecurity</h3>
<p><code>Install-Module -Name NTFSSecurity -force</code> <br> <code>Get-Item "\\$srv\xl-share" | Get-NTFSAccess</code> <br> <code>Add-NTFSAccess -Path "\\$srv\xl-share" -Account "domain\xl-share" -AccessRights Fullcontrol -PassThru</code> добавить <br> <code>Remove-NTFSAccess -Path "\\$srv\xl-share" -Account "domain\xl-share" -AccessRights FullControl -PassThru</code> удалить <br> <code>Get-ChildItem -Path "\\$srv\xl-share" -Recurse -Force | Clear-NTFSAccess</code> удалить все разрешения, без удаления унаследованных разрешений <br> <code>Get-ChildItem -Path "\\$srv\xl-share" -Recurse -Force | Enable-NTFSAccessInheritance</code> включить NTFS наследование для всех объектов в каталоге</p>
<h3>Storage</h3>
<p><code>Get-Command -Module Storage</code> <br> <code>Get-Disk</code> список логических дисков <br> <code>Get-Partition</code> отобразить разделы на всех дисках <br> <code>Get-Volume</code> список логичких разделов <br> <code>Get-PhysicalDisk</code> список физических дисков <br> <code>Initialize-Disk 1 –PartitionStyle MBR</code> инициализировать диск <br> <code>New-Partition -DriveLetter D –DiskNumber 1 -Size 500gb</code> создать раздел (выделить все место -UseMaximumSize) <br> <code>Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel Disk-D</code> форматировать раздел <br> <code>Set-Partition -DriveLetter D -IsActive $True</code> сделать активным <br> <code>Remove-Partition -DriveLetter D –DiskNumber 1</code> удалить раздел <br> <code>Clear-Disk -Number 1 -RemoveData</code> очистить диск <br> <code>Repair-Volume –driveletter C –Scan</code> Check disk <br> <code>Repair-Volume –driveletter C –SpotFix</code> <br> <code>Repair-Volume –driverletter C -Scan –Cimsession $CIMSession</code></p>
<h3>iSCSI</h3>
<p><code>New-IscsiVirtualDisk -Path D:\iSCSIVirtualDisks\iSCSI2.vhdx -Size 20GB</code> создать динамический vhdx-диск (для фиксированного размера -UseFixed) <br> <code>New-IscsiServerTarget -TargetName iscsi-target-2 -InitiatorIds "IQN:iqn.1991-05.com.microsoft:srv3.contoso.com"</code> создать Target <br> <code>Get-IscsiServerTarget | fl TargetName, LunMappings</code> <br> <code>Connect-IscsiTarget -NodeAddress "iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target" -IsPersistent $true</code> подключиться инициатором к таргету <br> <code>Get-IscsiTarget | fl</code> <br> <code>Disconnect-IscsiTarget -NodeAddress ″iqn.1995-05.com.microsoft:srv2-iscsi-target-2-target″ -Confirm:$false</code> отключиться</p>
<h1>ActiveDirectory</h1>
<h3>RSAT (Remote Server Administration Tools)</h3>
<p><code>DISM.exe /Online /add-capability /CapabilityName:Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 /CapabilityName:Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0</code> <br> <code>Add-WindowsCapability –online –Name Rsat.Dns.Tools~~~~0.0.1.0</code> <br> <code>Add-WindowsCapability -Online -Name Rsat.DHCP.Tools~~~~0.0.1.0</code> <br> <code>Add-WindowsCapability –online –Name Rsat.FileServices.Tools~~~~0.0.1.0</code> <br> <code>Add-WindowsCapability -Online -Name Rsat.WSUS.Tools~~~~0.0.1.0</code> <br> <code>Add-WindowsCapability -Online -Name Rsat.CertificateServices.Tools~~~~0.0.1.0</code> <br> <code>Add-WindowsCapability -Online -Name Rsat.RemoteDesktop.Services.Tools~~~~0.0.1.0</code> <br> <code>Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property DisplayName, State</code> отобразить список установленных компанентов</p>
<h3>Import-Module ActiveDirectory</h3>
<p><code>$Session = New-PSSession -ComputerName $srv</code> -Credential $cred<code>\</code>Export-PSsession -Session $Session -Module ActiveDirectory -OutputModule ActiveDirectory<code>экспортировать модуль из удаленной сесси (например, с DC) \</code>Remove-PSSession -Session $Session<code>\</code>Import-Module ActiveDirectory<code>\</code>Get-Command -Module ActiveDirectory`</p>
<h3>ADSI (Active Directory Service Interface)</h3>
<p><code>$d0 = $env:userdnsdomain</code> <br> <code>$d0 = $d0 -split "\."</code> <br> <code>$d1 = $d0[0]</code> <br> <code>$d2 = $d0[1]</code> <br> <code>$group = [ADSI]"LDAP://OU=Domain Controllers,DC=$d1,DC=$d2"</code> <br> <code>$group | select *</code></p>
<p><code>$Local_User = [ADSI]"WinNT://./Администратор,user"</code> <br> <code>$Local_User | Get-Member</code> <br> <code>$Local_User.Description</code> <br> <code>$Local_User.LastLogin</code> время последней авторизации локального пользователя</p>
<h3>LDAP (Lightweight Directory Access Protocol)</h3>
<p><code>$ldapsearcher = New-Object System.DirectoryServices.DirectorySearcher</code> <br> <code>$ldapsearcher.SearchRoot = "LDAP://OU=Domain Controllers,DC=$d1,DC=$d2"</code> <br> <code>$ldapsearcher.Filter = "(objectclass=computer)"</code> <br> <code>$dc = $ldapsearcher.FindAll().path</code></p>
<p><code>$usr = $env:username</code> cписок групп текущего пользователя <br> <code>$ldapsearcher = New-Object System.DirectoryServices.DirectorySearcher</code> <br> <code>$ldapsearcher.Filter = "(&(objectCategory=User)(samAccountName=$usr))"</code> <br> <code>$usrfind = $ldapsearcher.FindOne()</code> <br> <code>$groups = $usrfind.properties.memberof -replace "(,OU=.+)"</code> <br> <code>$groups = $groups -replace "(CN=)"</code></p>
<p>DC (Domain Component) - компонент доменного имени <br> OU (Organizational Unit) - организационные подразделения (type), используются для упорядочения объектов <br> Container - так же используется для упорядочения объектов, контейнеры в отличии от подраделений не могут быть переименованы, удалены, созданы или связаны с объектом групповой политики (Computers, Domain Controllers, Users) <br> DN (Distinguished Name) — уникальное имя объекта и местоположение в лесу AD. В DN описывается содержимое атрибутов в дереве (путь навигации), требуемое для доступа к конкретной записи или ее поиска <br> CN (Common Name) - общее имя</p>
<p><code>(Get-ADObject (Get-ADRootDSE).DefaultNamingContext -Properties wellKnownObjects).wellKnownObjects</code> отобразить отобразить контейнеры по умолчанию <br> <code>redircmp OU=Client Computers,DC=root,DC=domain,DC=local</code> изменить контейнер компьютеров по умолчанию <br> <code>redirusr</code> изменить контейнер пользователей по умолчанию</p>
<h3>LAPS (Local Admin Password Management)</h3>
<p><code>Import-module AdmPwd.ps</code> импортировать модуль <br> <code>Get-AdmPwdPassword -ComputerName NAME</code> посмотреть пароль <br> <code>Reset-AdmPwdPassword -ComputerName NAME</code> изменить пароль <br> <code>Get-ADComputer -Filter * -SearchBase "DC=$d1,DC=$d2" | Get-AdmPwdPassword -ComputerName {$_.Name} | select ComputerName,Password,ExpirationTimestamp | Out-GridView</code> <br> <code>Get-ADComputer -Identity $srv | Get-AdmPwdPassword -ComputerName {$_.Name} | select ComputerName,Password,ExpirationTimestamp</code></p>
<h3>Recycle Bin</h3>
<p>Удаленные объекты хранятся в корзине AD в течении времени захоронения (определяется в атрибуте домена msDS-deletedObjectLifetime), заданном для леса. По умолчанию это 180 дней. Если данный срок прошел, объект все еще остается в контейнере Deleted Objects, но большинство его атрибутов и связей очищаются (Recycled Object). После истечения периода tombstoneLifetime (по умолчанию также 180 дней, но можно увеличить) объект полностью удаляется из AD автоматическим процессом очистки. <br> <code>Get-ADForest domain.local</code> отобразить уровень работы леса <br> <code>Set-ADForestMode -Identity domain.local -ForestMode Windows2008R2Forest -force</code> увеличить уровень работы леса <br> <code>Enable-ADOptionalFeature –Identity "CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=local" –Scope ForestOrConfigurationSet –Target "domain.local"</code> включить корзину <br> <code>Get-ADOptionalFeature "Recycle Bin Feature" | select-object name,EnabledScopes</code> если значение EnabledScopes не пустое, значит в домене корзина Active Directory включена <br> <code>Get-ADObject -Filter 'Name -like "*tnas*"' -IncludeDeletedObjects</code> найти удаленную (Deleted: True) УЗ (ObjectClass: user) в AD <br> <code>Get-ADObject -Filter 'Name -like "*tnas*"' –IncludeDeletedObjects -Properties *| select-object Name, sAMAccountName, LastKnownParent, memberOf, IsDeleted | fl</code> проверить значение атрибута IsDeleted, контейнер, в котором находился пользователе перед удалением (LastKnownParent) и список групп, в которых он состоял <br> <code>Get-ADObject –filter {Deleted -eq $True -and ObjectClass -eq "user"} –includeDeletedObjects</code> вывести список удаленных пользователей <br> <code>Restore-ADObject -Identity "3dc33c7c-b912-4a19-b1b7-415c1395a34e"</code> восстановить по значению атрибута ObjectGUID <br> <code>Get-ADObject -Filter 'SAMAccountName -eq "tnas-01"' –IncludeDeletedObjects | Restore-ADObject</code> восстановить по SAMAccountName <br> <code>Get-ADObject -Filter {Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*Allow*'} –IncludeDeletedObjects | Restore-ADObject –Verbose</code> восстановить группу или компьютер</p>
<h3>thumbnailPhoto</h3>
<p><code>$photo = [byte[]](Get-Content C:\Install\adm.jpg -Encoding byte)</code> преобразовать файл картинки в массив байтов (jpeg/bmp файл, размером фото до 100 Кб и разрешением 96×96) <br> <code>Set-ADUser support4 -Replace @{thumbnailPhoto=$photo}</code> задать значение атрибута thumbnailPhoto</p>
<h3>ADDomainController</h3>
<p><code>Get-ADDomainController</code> выводит информацию о текущем контроллере домена (LogonServer), который используется данным компьютером для аутентификации (DC выбирается при загрузке в соответствии с топологией сайтов AD) <br> <code>Get-ADDomainController -Discover -Service PrimaryDC</code> найти контроллер с ролью PDC в домене <br> <code>Get-ADDomainController -Filter * | ft HostName,IPv4Address,Name,Site,OperatingSystem,IsGlobalCatalog</code> список все DC, принадлежность к сайту, версии ОС и GC</p>
<p>При загрузке ОС служба NetLogon делает DNS запрос со списком контроллеров домена (к SRV записи _ldap._tcp.dc.<em>msdcs.domain</em>), DNS возвращает список DC в домене с записью Service Location (SRV). Клиент делает LDAP запрос к DC для определения сайта AD по своему IP адресу. Клиент через DNS запрашивает список контроллеров домена в сайте (в разделе _tcp.sitename._sites...).</p>
<p>USN (Update Sequence Numbers) - счетчик номера последовательного обновления, который существует у каждого объекта AD. При репликации контроллеры обмениваются значениями USN, объект с более низким USN будет при репликации перезаписан объектом с более высоким USN. Находится в свойствах - Object (включить View - Advanced Features). Каждый контроллер домена содержит отдельный счетчик USN, который начинает отсчет в момент запуска процесса Dcpromo и продолжает увеличивать значения в течение всего времени существования контроллера домена. Значение счетчика USN увеличивается каждый раз, когда на контроллере домена происходит транзакция, это операции создания, обновления или удаления объекта.</p>
<p><code>Get-ADDomainController -Filter * | % {</code> отобразить USN объекта на всех DC в домене<code>\</code>Get-ADUser -Server $_.HostName -Identity support4 -Properties uSNChanged | select SamAccountName,uSNChanged<code>\</code>}`</p>
<p><code>dcpromo /forceremoval</code> принудительно выполнит понижение в роли контроллера домена до уровня рядового сервера. После понижения роли выполняется удаление всех ссылок в домене на этот контроллер. Далее производит включение сервера в состав домена, и выполнение обратного процесса, т.е. повышение сервера до уровня контроллера домена.</p>
<h3>ADComputer</h3>
<p><code>nltest /DSGETDC:$env:userdnsdomain</code> узнать на каком DC аудентифицирован хост (Logon Server) <br> <code>nltest /SC_RESET:$env:userdnsdomain\srv-dc2.$env:userdnsdomain</code> переключить компьютер на другой контроллер домена AD вручную (The command completed successfully) <br> <code>Get-ADComputer –Identity $env:computername -Properties PasswordLastSet</code> время последней смены пароля на сервере <br> <code>Test-ComputerSecureChannel –verbose</code> проверить доверительные отношения с доменом (соответствует ли локальный пароль компьютера паролю, хранящемуся в AD) <br> <code>Reset-ComputerMachinePassword -Credential domain\admin</code> принудительно обновить пароль <br> <code>Netdom ResetPWD /Server:dc-01 /UserD:domain\admin /PasswordD:*</code> сбросить хэш пароля компьютера в домене (перезагрузка не требуется) <br> <code>Search-ADAccount -AccountDisabled -ComputersOnly | select Name,LastLogonDate,Enabled</code> отобразить все отключенные компьютеры</p>
<p><code>Get-ADComputer -Filter * -Properties * | select name</code> список всех компьютеров в домене (Filter), вывести все свойства (Properties) <br> <code>Get-ADComputer -Identity $srv -Properties * | ft Name,LastLogonDate,PasswordLastSet,ms-Mcs-AdmPwd -Autosize</code> конкретного компьютера в AD (Identity) <br> <code>Get-ADComputer -SearchBase "OU=Domain Controllers,DC=$d1,DC=$d2" -Filter * -Properties * | ft Name, LastLogonDate, distinguishedName -Autosize</code> поиск в базе по DN (SearchBase)</p>
<p><code>(Get-ADComputer -Filter {enabled -eq "true"}).count</code> получить общее количество активных (незаблокированных) компьютеров <br> <code>(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -like "*Windows Server 2016*"}).count</code> кол-во активных копьютеров с ОС WS 2016</p>
<p><code>Get-ADComputer -Filter * -Properties * | select @{Label="Ping Status"; Expression={</code> <br> <code>$ping = ping -n 1 -w 50 $_.Name</code> <br> <code>if ($ping -match "TTL") {"Online"} else {"Offline"}</code> <br> <code>}},</code> <br> <code>@{Label="Status"; Expression={</code> <br> <code>if ($_.Enabled -eq "True") {$_.Enabled -replace "True","Active"} else {$_.Enabled -replace "False","Blocked"}</code> <br> <code>}}, Name, IPv4Address, OperatingSystem, @{Label="UserOwner"; Expression={$_.ManagedBy -replace "(CN=|,.+)"}</code> <br> <code>},Created | Out-GridView</code></p>
<h3>ADUser</h3>
<p><code>Get-ADUser -Identity support4 -Properties *</code> список всех атрибутов <br> <code>Get-ADUser -Identity support4 -Properties DistinguishedName, EmailAddress, Description</code> путь DN, email и описание <br> <code>Get-ADUser -Filter {(Enabled -eq "True") -and (mail -ne "null")} -Properties mail | ft Name,mail</code> список активных пользователей и есть почтовый ящик <br> <code>Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object</code> посчитать кол-во всех аккаунтов (Count) <br> <code>Get-ADUser -Filter * -Properties WhenCreated | sort WhenCreated | ft Name, whenCreated</code> дата создания <br> <code>Get-ADUser -Identity support4 -property LockedOut | select samaccountName,Name,Enabled,Lockedout</code> <br> <code>Enabled=True</code> учетная запись включена - да <br> <code>Lockedout=False</code> учетная запись заблокирована (например, политикой паролей) - нет <br> <code>Get-ADUser -Identity support4 | Unlock-ADAccount</code> разблокировать учетную запись <br> <code>Disable-ADAccount -Identity support4</code> отключить учетную запись <br> <code>Enable-ADAccount -Identity support4</code> включить учетную запись <br> <code>Search-ADAccount -LockedOut</code> найти все заблокированные учетные записи <br> <code>Search-ADAccount -AccountDisabled | select Name,LastLogonDate,Enabled</code> отобразить все отключенные учетные записи с временем последнего входа</p>
<p><code>Get-ADUser -Identity support4 -Properties PasswordLastSet,PasswordExpired,PasswordNeverExpires</code> <br> <code>PasswordLastSet</code> время последней смены пароля <br> <code>PasswordExpired=False</code> пароль истек - нет <br> <code>PasswordNeverExpires=True</code> срок действия пароля не истекает - да <br> <code>Set-ADAccountPassword support4 -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "password" -Force -Verbose)</code> изменить пароль учетной записи <br> <code>Set-ADUser -Identity support4 -ChangePasswordAtLogon $True</code> смена пароля при следующем входе в систему</p>
<p><code>$day = (Get-Date).adddays(-90)</code> <br> <code>Get-ADUser -filter {(passwordlastset -le $day)} | ft</code> пользователи, которые не меняли свой пароль больше 90 дней</p>
<p><code>$day = (Get-Date).adddays(-30)</code> <br> <code>Get-ADUser -filter {(Created -ge $day)} -Property Created | select Name,Created</code> Новые пользователи за 30 дней</p>
<p><code>$day = (Get-Date).adddays(-360)</code> <br> <code>Get-ADUser -Filter {(LastLogonTimestamp -le $day)} -Property LastLogonTimestamp | select Name,SamAccountName,@{n='LastLogonTimestamp';e={[DateTime]::FromFileTime($_.LastLogonTimestamp)}} | sort -Descending LastLogonTimestamp</code> пользователи, которые не логинились больше 360 дней. Репликация атрибута LastLogonTimestamp составляет от 9 до 14 дней. <br> <code>| Disable-ADAccount $_.SamAccountName</code> заблокировать <br> <code>-WhatIf</code> отобразить вывод без применения изменений</p>
<h3>ADGroupMember</h3>
<p><code>(Get-ADUser -Identity support4 -Properties MemberOf).memberof</code> список групп в которых состоит пользователь <br> <code>Get-ADGroupMember -Identity "Domain Admins" | Select Name,SamAccountName</code> список пользователей в группе <br> <code>Add-ADGroupMember -Identity "Domain Admins" -Members support5</code> добавить в группу <br> <code>Remove-ADGroupMember -Identity "Domain Admins" -Members support5 -force</code> удалить из группы <br> <code>Get-ADGroup -filter * | where {!($_ | Get-ADGroupMember)} | Select Name</code> отобразить список пустых групп (-Not)</p>
<h3>ADReplication</h3>
<p><code>Get-Command -Module ActiveDirectory -Name *Replication*</code> список всех командлетов модуля <br> <code>Get-ADReplicationFailure -Target dc-01</code> список ошибок репликации с партнерами <br> <code>Get-ADReplicationFailure -Target $env:userdnsdomain -Scope Domain</code> <br> <code>Get-ADReplicationPartnerMetadata -Target dc-01 | select Partner,LastReplicationAttempt,LastReplicationSuccess,LastReplicationResult,LastChangeUsn</code> время последней и время успешной репликации с партнерами <br> <code>Get-ADReplicationUpToDatenessVectorTable -Target dc-01</code> Update Sequence Number (USN) увеличивается каждый раз, когда на контроллере домена происходит транзакция (операции создания, обновления или удаления объекта), при репликации DC обмениваются значениями USN, объект с более низким USN при репликации будет перезаписан высоким USN.</p>
<h1>repadmin</h1>
<p><code>repadmin /replsummary</code> отображает время последней репликации на всех DC по направлению (Source и Destination) и их состояние с учетом партнеров <br> <code>repadmin /showrepl $srv</code> отображает всех партнеров по реплкации и их статус для всех разделов Naming Contexts (DC=ForestDnsZones, DC=DomainDnsZones, CN=Schema, CN=Configuration) <br> <code>repadmin /replicate $srv2 $srv1 DC=domain,DC=local </code> выполнить репликацию с $srv1 на $srv2 только указанный раздела домена <br> <code>repadmin /SyncAll /AdeP</code> запустить межсайтовую исходящую репликацию всех разделов от текущего сервера со всеми партнерами по репликации <br> <code>/A</code> выполнить для всех разделов NC <br> <code>/d</code> в сообщениях идентифицировать серверы по DN (вместо GUID DNS - глобальным уникальным идентификаторам) <br> <code>/e</code> межсайтовая синхронизация (по умолчанию синхронизирует только с DC текущего сайта) <br> <code>/P</code> извещать об изменениях с этого сервера (по умолчанию: опрашивать об изменениях) <br> <code>repadmin /Queue $srv</code> отображает кол-во запросов входящей репликации (очередь), которое необходимо обработать (причиной может быть большое кол-во партнеров или формирование 1000 объектов скриптом) <br> <code>repadmin /showbackup *</code> узнать дату последнего Backup</p>
<p><code>Error: 1722</code> сервер rpc недоступен (ошибка отката репликации). Проверить имя домена в настройках сетевого адаптера, первым должен идти адрес DNS-сервера другого контроллера домена, вторым свой адрес. <br> <code>Get-Service -ComputerName $srv | select name,status | ? name -like "RpcSs"</code> <br> <code>Get-Service -ComputerName $srv -Name RpcSs -RequiredServices</code> зависимые службы <br> Зависимые службы RPC: <br> "Служба сведений о подключенных сетях" - должен быть включен отложенный запуск. Если служба срабатывает до "службы списка сетей", может падать связь с доменом (netlogon) <br> "Центр распространения ключей Kerberos" <br> "DNS-сервер" <br> <code>nslookup $srv</code> <br> <code>tnc $srv -p 135</code> <br> <code>repadmin /retry</code> повторить попытку привязки к целевому DC, если была ошибка 1722 или 1753 (RPC недоступен)</p>
<p><code>repadmin /showrepl $srv</code> <br> <code>Last attempt @ 2022-07-15 10:46:01 завершена с ошибкой, результат 8456 (0x2108)</code> при проверки showrepl этого партнера, его ошибка: 8457 (0x2109) <br> <code>Last success @ 2022-07-11 02:29:46</code> последний успех <br> Когда репликация автоматически отключена, ОС записывает в DSA - not writable одно из четырех значений: <br> <code>Path: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters</code> <br> <code>Dsa Not Writable</code> <br> <code>#define DSA_WRITABLE_GEN 1</code> версия леса несовместима с ОС <br> <code>#define DSA_WRITABLE_NO_SPACE 2</code> на диске, где размещена база данных Active Directory или файлы журналов (логи), недостаточно свободного места <br> <code>#define DSA_WRITABLE_USNROLLBCK 4</code> откат USN произошел из-за неправильного отката базы данных Active Directory во времени (восстановление из снапшота) <br> <code>#define DSA_WRITABLE_CORRUPT_UTDV 8</code> вектор актуальности поврежден на локальном контроллере домена</p>
<h1>dcdiag</h1>
<p><code>dcdiag /s:<DomainController> [/n:<NamingContext>] [[/u:<domain\user>] [/p:<password>]] [{/a|/e}{/q|/v}] [/f:<LogFile>] [/ferr:<ErrorLog>] [/test:<test>] [/fix]</code> <br> <code>dcdiag /Test:replications /s:dc-01</code> отображает ошибки репликации <br> <code>dcdiag /Test:DNS /e /v /q</code> тест DNS <br> <code>/a</code> проверка всех серверов данного сайта <br> <code>/e</code> проверка всех серверов предприятия <br> <code>/q</code> выводить только сообщения об ошибках <br> <code>/v</code> выводить подробную информацию <br> <code>/fix</code> автоматически исправляет ошибки <br> <code>/test:</code> <br> <code>NetLogons</code> проверка наличие прав на выполнение репликации <br> <code>Connectivity</code> проверяет регистрацию DNS для каждого контроллера домена, отправляет тестовый эхо-пакет на каждый контроллер домена и проверяет подключение по протоколам LDAP и RPC к каждому контроллеру домена <br> <code>Services</code> проверяет работоспособность всех служб, необходимых для работы контроллера домена, на указанном контроллере домена <br> <code>Systemlog</code> проверяет наличие ошибок в журналах контроллера домена <br> <code>FRSEvent</code> проверяет ошибки репликации в работе службы репликации файлов, что может означать наличие проблем в репликации SYSVOL и, таким образом, целостности копий объектов групповых политик <br> <code>FSMOCheck</code> не проверяет роли хозяев операций, а вместо этого запрашивает сервер глобального каталога, первичный контроллер домена, предпочтительный сервер времени, сервер времени и центр распространения ключей (контроллер домена может подключиться к KDC, PDC, серверу глобального каталога) <br> <code>KnowsOfRoleHolders</code> пgроверяет возможность подключения контроллеров домена ко всем пяти хозяевам операций (ролями FSMO) <br> <code>MachineAccount</code> проверяет правильность регистрации учетной записи целевого компьютера и правильность объявлений служб этого компьютера (корректность доверительных отношения с доменом). Если обнаружена ошибка, ее можно исправить с помощью утилиты dcdiag, указав параметры /fixmachineaccount или /recreatemachineaccount <br> <code>Advertising</code> проверяет, правильно ли контроллер домена сообщает о себе и о своей роли хозяина операций. Этот тест завершиться неудачно, если служба NetLogon не запущена <br> <code>CheckSDRefDom</code> проверяет правильность доменов ссылок дескрипторов безопасности для каждого раздела каталогов программ <br> <code>CrossRefValidation</code> проверяет правильность перекрестных ссылок для доменов <br> <code>RRSSysvol</code> проверяет состояние готовности для FRS SYSVOL <br> <code>Intersite</code> проверяет наличие ошибок, которые могут помешать нормальной репликации между сайтами. Компания Microsoft предупреждает, что иногда результаты этого теста могут оказаться неточными <br> <code>KCCEvent</code> проверяет безошибочность создания объектов соединений для репликации между сайтами <br> <code>NCSecDesc</code> проверяет правильность разрешений для репликации в дескрипторах безопасности для заголовков контекста именования <br> <code>ObjectsReplicated</code> проверяет правильность репликации агента сервера каталогов и объектов учетных записей компьютеров <br> <code>OutboundSecureChannels</code> проверяется наличие безопасных каналов между всеми контроллерами домена в интересующем домене <br> <code>Replications</code> проверяет возможность репликации между контроллерами домена и сообщает обо всех ошибках при репликации <br> <code>RidManager</code> проверяет работоспособность и доступность хозяина относительных идентификаторов <br> <code>VerifyEnterpriseReferences</code> проверяет действительность системных ссылок службы репликации файлов для всех объектов на всех контроллерах домена в лесу <br> <code>VerifyReferences</code> проверяет действительность системных ссылок службы репликации файлов для всех объектов на указанном контроллере домена <br> <code>VerifyReplicas</code> проверяет действительность всех разделов каталога приложения на всех серверах, принимающих участие в репликации</p>
<h1>ntdsutil</h1>
<p>Перенос БД AD (ntds.dit): <br> <code>Get-Acl C:\Windows\NTDS | Set-Acl D:\AD-DB</code> скопировать NTFS разрешения на новый каталог <br> <code>Stop-Service -ComputerName dc -name NTDS</code> остановить службу Active Directory Domain Services <br> <code>ntdsutil</code> запустить утилиту ntdsutil <br> <code>activate instance NTDS</code> выбрать активный экземпляр базы AD <br> <code>files</code> перейдем в контекст files, в котором возможно выполнение операция с файлами базы ntds.dit <br> <code>move DB to D:\AD-DB\</code> перенести базу AD в новый каталог (предварительно нужно его создать) <br> <code>info</code> проверить, что БД находится в новом каталоге <br> <code>move logs to D:\AD-DB\</code> переместим в тот же каталог файлы с журналами транзакций <br> <code>quit</code> <br> <code>Start-Service -ComputerName dc -name NTDS</code></p>
<p>Сброс пароля DSRM (режим восстановления служб каталогов): <br> <code>ntdsutil</code> <br> <code>set dsrm password</code> <br> <code>reset password on server NULL</code> <br> новый пароль <br> подтверждение пароля <br> <code>quit</code> <br> <code>quit</code></p>
<p>Синхронизировать с паролем УЗ в AD: <br> <code>ntdsutil</code> <br> <code>set dsrm password</code> <br> <code>sync from domain account dsrmadmin</code> <br> <code>quit</code> <br> <code>quit</code></p>
<p>Ошибка 0x00002e2 при загрузке ОС. <br> Загрузиться в режиме восстанавления WinRE (Windows Recovery Environment) - Startup Settings - Restart - DSRM (Directory Services Restore Mode) <br> <code>reagentc /boottore</code> shutdown /f /r /o /t 0 перезагрузка в режиме WinRE - ОС на базе WinPE (Windows Preinstallation Environment), образ winre.wim находится на скрытом разделе System Restore <br> На контроллере домена единственная локальная учетная запись — администратор DSRM. Пароль создается при установке роли контроллера домена ADDS на сервере (SafeModeAdministratorPassword). <br> <code>ntdsutil</code> <br> <code>activate instance ntds</code> <br> <code>Files</code> <br> <code>Info</code> <br> <code>integrity</code> проверить целостность БД <br> Ошибка: Failed to open DIT for AD DS/LDS instance NTDS. Error -2147418113 <br> <code>mkdir c:\ntds_bak</code> <br> <code>xcopy c:\Windows\NTDS\*.* c:\ntds_bak</code> backup содержимого каталога с БД <br> <code>esentutl /g c:\windows\ntds\ntds.dit</code> проверим целостность файла <br> Вывод: Integrity check completed. Database is CORRUPTED ошибка, база AD повреждена <br> <code>esentutl /p c:\windows\ntds\ntds.dit</code> исправить ошибки <br> Вывод: Operation completed successfully in xx seconds. нет ошибок <br> <code>esentutl /g c:\windows\ntds\ntds.dit</code> проверим целостность файла <br> Выполнить анализ семантики базы с помощью ntdsutil: <br> <code>ntdsutil</code> <br> <code>activate instance ntds</code> <br> <code>semantic database analysis</code> <br> <code>go</code> <br> <code>go fixup</code> исправить семантические ошибки <br> Сжать файл БД: <br> <code>activate instance ntds</code> <br> <code>files</code> <br> <code>compact to C:\Windows\NTDS\TEMP</code> <br> <code>copy C:\Windows\NTDS\TEMP\ntds.dit C:\Windows\NTDS\ntds.dit</code> заменить оригинальный файл ntds.dit <br> <code>Del C:\Windows\NTDS\*.log</code> удалить все лог файлы из каталога NTDS</p>
<h1>GPO</h1>
<p><code>Get-Command -Module GroupPolicy</code> <br> <code>Get-GPO -Domain domain.local -All | ft</code> <br> <code>Get-GPO -Name LAPS</code> <br> <code>[xml](Get-GPOReport LAPS -ReportType Xml)</code> <br> <code>Get-GPPermission -Name LAPS -All</code> <br> <code>Get-GPO LAPS | New-GPLink -Target "ou=servers,dc=domain,dc=local"</code> <br> <code>Set-GPLink -Name LAPS -Target "ou=servers,dc=domain,dc=local" -LinkEnabled No</code> <br> <code>Backup-GPO -Name LAPS -Path "$home\Desktop"</code> <br> <code>Backup-GPO -All -Path "$home\Desktop"</code> <br> <code>Restore-GPO -Name LAPS -Path C:\Backup\GPOs\</code></p>
<h1>ServerManager</h1>
<p><code>Get-Command *WindowsFeature*</code> source module ServerManager <br> <code>Get-WindowsFeature -ComputerName "localhost"</code> <br> <code>Get-WindowsFeature | where Installed -eq $True</code> список установленных ролей и компонентов <br> <code>Get-WindowsFeature | where FeatureType -eq "Role"</code> отсортировать по списку ролей <br> <code>Install-WindowsFeature -Name DNS</code> установить роль <br> <code>Get-Command *DNS*</code> <br> <code>Get-DnsServerSetting -ALL</code> <br> <code>Uninstall-WindowsFeature -Name DNS</code> удалить роль</p>
<h3>PSWA</h3>
<p><code>Install-WindowsFeature -Name WindowsPowerShellWebAccess -IncludeManagementTools</code> <br> <code>Install-PswaWebApplication -UseTestCertificate</code> Создать веб-приложение /pswa <br> <code>Add-PswaAuthorizationRule -UserGroupName "$domain\Domain Admins" -ComputerName * -ConfigurationName * -RuleName "For Admins"</code> добавить права авторизации</p>
<h3>WSB (Windows Server Backup)</h3>
<p>При создании backup DC через WSB, создается копия состояния системы (System State), куда попадает база AD (NTDS.DIT), объекты групповых политик, содержимое каталога SYSVOL, реестр, метаданные IIS, база AD CS, и другие системные файлы и ресурсы. Резервная копия создается через службу теневого копирования VSS. <br> <code>Get-WindowsFeature Windows-Server-Backup</code> проверить установлена ли роль <br> <code>Add-Windowsfeature Windows-Server-Backup –Includeallsubfeature</code> установить роль</p>
<pre><code class="language-PowerShell">$path="\\$srv\bak-dc\dc-03\"
[string]$TargetUNC=$path+(get-date -f 'yyyy-MM-dd')
if ((Test-Path -Path $path) -eq $true) {New-Item -Path $TargetUNC -ItemType directory} # если путь доступен, создать новую директорию по дате
$WBadmin_cmd = "wbadmin.exe START BACKUP -backupTarget:$TargetUNC -systemState -noverify -vssCopy -quiet"
# $WBadmin_cmd = "wbadmin start backup -backuptarget:$path -include:C:\Windows\NTDS\ntds.dit -quiet" # Backup DB NTDS
Invoke-Expression $WBadmin_cmd
</code></pre>
<h3>RDS</h3>
<p><code>Get-Command -Module RemoteDesktop</code> <br> <code>Get-RDServer -ConnectionBroker $broker</code> список всех серверов в фермеы, указывается полное доменное имя при обращение к серверу с ролью RDCB <br> <code>Get-RDRemoteDesktop -ConnectionBroker $broker</code> список коллекций <br> <code>(Get-RDLicenseConfiguration -ConnectionBroker $broker | select *).LicenseServer</code> список серверов с ролью RDL <br> <code>Get-RDUserSession -ConnectionBroker $broker</code> список всех активных пользователей <br> <code>Disconnect-RDUser -HostServer $srv -UnifiedSessionID $id -Force</code> отключить сессию пользователя <br> <code>Get-RDAvailableApp -ConnectionBroker $broker -CollectionName C03</code> список установленного ПО на серверах в коллекции <br> <code>(Get-RDSessionCollectionConfiguration -ConnectionBroker $broker -CollectionName C03 | select *).CustomRdpProperty</code> use redirection server name:i:1 <br> <code>Get-RDConnectionBrokerHighAvailability</code></p>
<h1>DNSServer</h1>
<p><code>Get-Command -Module DnsServer</code> <br> <code>Show-DnsServerCache</code> отобразить весь кэш DNS-сервера <br> <code>Show-DnsServerCache | where HostName -match ru</code> <br> <code>Clear-DnsServerCache</code> <br> <code>Get-DnsServerCache</code> <br> <code>Get-DnsServerDiagnostics</code></p>
<pre><code class="language-PowerShell">$zone = icm $srv {Get-DnsServerZone} | select ZoneName,ZoneType,DynamicUpdate,ReplicationScope,SecureSecondaries,
DirectoryPartitionName | Out-GridView -Title "DNS Server: $srv" –PassThru
$zone_name = $zone.ZoneName
if ($zone_name -ne $null) {
icm $srv {Get-DnsServerResourceRecord -ZoneName $using:zone_name | sort RecordType | select RecordType,HostName, @{
Label="IPAddress"; Expression={$_.RecordData.IPv4Address.IPAddressToString}},TimeToLive,Timestamp
} | select RecordType,HostName,IPAddress,TimeToLive,Timestamp | Out-GridView -Title "DNS Server: $srv"
}
</code></pre>
<p><code>Sync-DnsServerZone –passthru</code> синхронизировать зоны с другими DC в домене <br> <code>Remove-DnsServerZone -Name domain.local</code> удалить зону <br> <code>Get-DnsServerResourceRecord -ZoneName domain.local -RRType A</code> вывести все А-записи в указанной зоне <br> <code>Add-DnsServerResourceRecordA -Name new-host-name -IPv4Address 192.168.1.100 -ZoneName domain.local -TimeToLive 01:00:00 -CreatePtr</code> создать А-запись и PTR для нее <br> <code>Remove-DnsServerResourceRecord -ZoneName domain.local -RRType A -Name new-host-name –Force</code> удалить А-запись</p>
<pre><code class="language-PowerShell">$DNSServer = "DC-01"
$DNSFZone = "domain.com"
$DataFile = "C:\Scripts\DNS-Create-A-Records-from-File.csv"
# cat $DataFile
# "HostName;IP"
# "server-01;192.168.1.10"
$DNSRR = [WmiClass]"\\$DNSServer\root\MicrosoftDNS:MicrosoftDNS_ResourceRecord"
$ConvFile = $DataFile + "_unicode"
Get-Content $DataFile | Set-Content $ConvFile -Encoding Unicode
Import-CSV $ConvFile -Delimiter ";" | ForEach-Object {
$FQDN = $_.HostName + "." + $DNSFZone
$IP = $_.HostIP
$TextA = "$FQDN IN A $IP"
[Void]$DNSRR.CreateInstanceFromTextRepresentation($DNSServer,$DNSFZone,$TextA)
}
</code></pre>
<h1>DHCPServer</h1>
<p><code>Get-Command -Module DhcpServer</code></p>
<pre><code class="language-PowerShell">$mac = icm $srv -ScriptBlock {Get-DhcpServerv4Scope | Get-DhcpServerv4Lease} | select AddressState,
HostName,IPAddress,ClientId,DnsRegistration,DnsRR,ScopeId,ServerIP | Out-GridView -Title "HDCP Server: $srv" –PassThru
(New-Object -ComObject Wscript.Shell).Popup($mac.ClientId,0,$mac.HostName,64)
</code></pre>
<p><code>Add-DhcpServerv4Reservation -ScopeId 192.168.1.0 -IPAddress 192.168.1.10 -ClientId 00-50-56-C0-00-08 -Description "new reservation"</code></p>
<h1>DFS</h1>
<p><code>dfsutil /root:\\domain.sys\public /export:C:\export-dfs.txt</code> экспорт конфигурации namespace root <br> <code>dfsutil /AddFtRoot /Server:\\$srv /Share:public</code> на новой машине предварительно создать корень на основе домена <br> <code>dfsutil /root:\\domain.sys\public /import:C:\export-dfs.txt /<verify /set</code> Import (перед импортом данных в существующий корень DFS, утилита создает резервную копию конфигурации корня в текущем каталоге, из которого запускается утилита dfsutil) <br> <code>/verify</code> выводит изменения, которые будут внесены в процессе импорта, без применения <br> <code>/set</code> меняет целевое пространство имен путем полной перезаписи и замены на конфигурацию пространства имен из импортируемого файла <br> <code>/merge</code> импортирует конфигурацию пространства имен в дополнение к существующей конфигурации для слияния, параметры из файла конфигурации будут иметь больший приоритет, чем существующие параметры пространства имен</p>
<p><code>Export-DfsrClone</code> экспортирует клонированную базу данных репликации DFS и параметры конфигурации тома <br> <code>Get-DfsrCloneState</code> получает состояние операции клонирования базы данных <br> <code>Import-DfsrClone</code> импортирует клонированную базу данных репликации DFS и параметры конфигурации тома</p>
<p><code>net use x: \\$srv1\public\*</code> примонтировать диск <br> <code>Get-DfsrFileHash x:\* | Out-File C:\$srv1.txt</code> забрать hash всех файлов диска в файл (файлы с одинаковыми хешами всегда являются точными копиями друг друга) <br> <code>net use x: /d</code> отмонтировать <br> <code>net use x: \\$srv2\public\*</code> <br> <code>Get-DfsrFileHash x:\* | Out-File C:\$srv2.txt</code> <br> <code>net use x: /d</code> <br> <code>Compare-Object -ReferenceObject (Get-Content C:\$srv1.txt) -DifferenceObject (Get-Content C:\$srv2.txt) -IncludeEqual</code> сравнить содержимое файлов</p>
<p><code>Get-DfsrBacklog -DestinationComputerName "fs-06" -SourceComputerName "fs-05" -GroupName "folder-rep" -FolderName "folder" -Verbose</code> получает список ожидающих обновлений файлов между двумя партнерами репликации DFS <br> <code>Get-DfsrConnection</code> отображает группы репликации, участников и статус <br> <code>Get-DfsReplicatedFolder</code> отображает имя и полный путь к папкам реликации в системе DFS <br> <code>Get-DfsrState -ComputerName fs-06 -Verbose</code> состояние репликации DFS для члена группы <br> <code>Get-DfsReplicationGroup</code> отображает группы репликации и их статус <br> <code>Add-DfsrConnection</code> создает соединение между членами группы репликации <br> <code>Add-DfsrMember</code> добавляет компьютеры в группу репликации <br> <code>ConvertFrom-DfsrGuid</code> преобразует идентификаторы GUID в понятные имена в заданной группы репликации <br> <code>Get-DfsrConnectionSchedule</code> получает расписание соединений между членами группы репликации <br> <code>Get-DfsrGroupSchedule</code> извлекает расписание группы репликации <br> <code>Get-DfsrIdRecord</code> получает записи ID для реплицированных файлов или папок из базы данных репликации DFS <br> <code>Get-DfsrMember</code> получает компьютеры в группе репликации <br> <code>Get-DfsrMembership</code> получает параметры членства для членов групп репликации <br> <code>Get-DfsrPreservedFiles</code> получает список файлов и папок, ранее сохраненных репликацией DFS <br> <code>Get-DfsrServiceConfiguration</code> получает параметры службы репликации DFS для членов группы <br> <code>Grant-DfsrDelegation</code> предоставляет разрешения участникам безопасности для группы репликации <br> <code>Revoke-DfsrDelegation</code> отменяет разрешения участников безопасности для группы репликации <br> <code>New-DfsReplicationGroup</code> создает группу репликации <br> <code>New-DfsReplicatedFolder</code> создает реплицированную папку в группе репликации <br> <code>Remove-DfsrConnection</code> удаляет соединение между членами группы репликации <br> <code>Remove-DfsReplicatedFolder</code> удаляет реплицированную папку из группы репликации <br> <code>Remove-DfsReplicationGroup</code> удаляет группу репликации <br> <code>Remove-DfsrMember</code> удаляет компьютеры из группы репликации <br> <code>Restore-DfsrPreservedFiles</code> восстанавливает файлы и папки, ранее сохраненные репликацией DFS <br> <code>Set-DfsrConnection</code> изменяет параметры соединения между членами группы репликации <br> <code>Set-DfsrConnectionSchedule</code> изменяет параметры расписания соединений между членами группы репликации <br> <code>Set-DfsReplicatedFolder</code> изменяет настройки реплицированной папки <br> <code>Set-DfsReplicationGroup</code> изменяет группу репликации <br> <code>Set-DfsrGroupSchedule</code> изменяет расписание группы репликации <br> <code>Set-DfsrMember</code> изменяет информацию о компьютере-участнике в группе репликации <br> <code>Set-DfsrMembership</code> настраивает параметры членства для членов группы репликации <br> <code>Set-DfsrServiceConfiguration</code> изменяет параметры службы репликации DFS <br> <code>Sync-DfsReplicationGroup</code> синхронизирует репликацию между компьютерами независимо от расписания <br> <code>Suspend-DfsReplicationGroup</code> приостанавливает репликацию между компьютерами независимо от расписания <br> <code>Update-DfsrConfigurationFromAD</code> инициирует обновление службы репликации DFS <br> <code>Write-DfsrHealthReport</code> создает отчет о работоспособности репликации DFS <br> <code>Write-DfsrPropagationReport</code> создает отчеты для тестовых файлов распространения в группе репликации <br> <code>Start-DfsrPropagationTest</code> создает тестовый файл распространения в реплицированной папке</p>
<h1>StorageReplica</h1>
<p><code>Install-WindowsFeature Storage-Replica –IncludeManagementTools -Restart</code> <br> <code>Get-Command -Module StorageReplica</code> <br> <code>Test-SRTopology</code> проверить соответствует ли сервер и канал связи технологии Storage Replica <br> <code>New-SRPartnership -SourceComputerName srv-01 -SourceRGName srv-01-rep-group-01 -SourceVolumeName D: -SourceLogVolumeName L: -DestinationComputerName srv-02 -DestinationRGName srv-02-rep-group-01 -DestinationVolumeName D: -DestinationLogVolumeName L: -LogSizeInBytes 1GB</code> <br> <code>Get-Counter -Counter "\Storage Replica Statistics(*)"</code> <br> <code>Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica -max 10</code> <br> <code>Set-SRPartnership -ReplicationMode Asynchronous</code> переключить режим репликации на асинхронный <br> <code>Set-SRPartnership -NewSourceComputerName srv-02 -SourceRGName srv-02-rep-group-01 -DestinationComputerName srv-01 -DestinationRGName srv-01-rep-group-01</code> изменить вручную направление репликации данных, переведя вторичную копию в онлайн режим (при выходе из строя основного сервера) <br> <code>Get-SRGroup</code> информация о состояние группы реплизации <br> <code>Get-SRPartnerShip</code> информация о направлении репликации <br> <code>(Get-SRGroup).Replicas | Select-Object numofbytesremaining</code> проверить длину очереди копирования <br> <code>Get-SRPartnership | Remove-SRPartnership</code> удалить реплизацию на основном сервере <br> <code>Get-SRGroup | Remove-SRGroup</code> удалить реплизацию на обоих серверах</p>
<h1>Package-Manager</h1>
<p><code>Import-Module PackageManagement</code> импортировать модуль <br> <code>Get-Module PackageManagement</code> информация о модуле <br> <code>Get-Command -Module PackageManagement</code> отобразить все командлеты модуля <br> <code>Get-Package</code> отобразить все установленные пакеты PowerShellGallery <br> <code>Get-Package -ProviderName msi,Programs</code> список установленных программ <code>[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12</code> включить использование протокол TLS 1.2 (если не отключены протоколы TLS 1.0 и 1.1) <br> <code>Find-PackageProvider</code> поиск провайдеров <br> <code>Install-PackageProvider PSGallery -force</code> установить источник <br> <code>Install-PackageProvider NuGet -force</code> <br> <code>Install-PackageProvider Chocolatey -force</code> <br> <code>Get-PackageSource</code> источники установки пакетов <br> <code>Set-PackageSource -Name PSGallery -Trusted</code> по умолчанию <br> <code>Find-Package -Name *Veeam* -Source PSGallery</code> поиск пакетов с указанием источника <br> <code>Install-Package -Name VeeamLogParser -ProviderName PSGallery -scope CurrentUser</code> <br> <code>Get-Command *Veeam*</code> <br> <code>Import-Module -Name VeeamLogParser</code> загрузить модуль <br> <code>Get-Module VeeamLogParser | select -ExpandProperty ExportedCommands</code> отобразить список функций</p>
<h3>winget</h3>
<p>Source: <a href="https://github.com/microsoft/winget-cli">https://github.com/microsoft/winget-cli</a></p>
<p><code>winget list</code> список установленных пакетов <br> <code>winget search VLC</code> найти пакет <br> <code>winget show VideoLAN.VLC</code> информация о пакете <br> <code>winget show VideoLAN.VLC --versions</code> список доступных версий в репозитории <br> <code>winget install VideoLAN.VLC</code> установить пакет <br> <code>winget uninstall VideoLAN.VLC</code> удалить пакет <br> <code>winget download jqlang.jq</code> загрузкить пакет (<a href="https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe">https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe</a>) <br> <code>winget install jqlang.jq</code> добавляет в переменную среду и псевдоним командной строки jq <br> <code>winget uninstall jqlang.jq</code></p>
<h3>jqlang-install</h3>
<pre><code class="language-PowerShell">[uri]$url = $($(irm https://api.github.com/repos/jqlang/jq/releases/latest).assets.browser_download_url -match "windows-amd64").ToString() # получить версию latest на GitHub
irm $url -OutFile "C:\Windows\System32\jq.exe" # загрузить jq.exe
</code></pre>
<h3>NuGet</h3>
<pre><code class="language-PowerShell">Invoke-RestMethod https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile "$env:TEMP\nuget.exe"
Invoke-Expression "$env:TEMP/nuget.exe search Selenium.WebDriver"
Set-Location $env:TEMP
Invoke-Expression "$env:TEMP/nuget.exe install Selenium.WebDriver"
Get-Item *Selenium*
</code></pre>
<h3>Chocolatey</h3>
<pre><code class="language-PowerShell">Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
</code></pre>
<p><code>choco -v</code> <br> <code>choco -help</code> <br> <code>choco list</code> <br> <code>choco install adobereader</code></p>
<h3>Scoop</h3>
<p><code>Set-ExecutionPolicy RemoteSigned -Scope CurrentUser</code> <br> <code>irm get.scoop.sh | iex</code> установка <br> <code>scoop help</code> <br> <code>scoop search jq</code> <br> <code>scoop info jq</code> <br> <code>(scoop info jq).version</code> <br> <code>scoop cat jq</code> <br> <code>scoop download jq</code> C:\Users\lifailon\scoop\cache <br> <code>scoop install jq</code> C:\Users\lifailon\scoop\apps\jq\1.7 <br> <code>scoop list</code> <br> <code>(scoop list).version</code> <br> <code>scoop uninstall jq</code></p>
<h1>PS2EXE</h1>
<p><code>Install-Module ps2exe -Repository PSGallery</code> <br> <code>Get-Module -ListAvailable</code> список всех модулей <br> <code>-noConsole</code> использовать GUI, без окна консоли powershell <br> <code>-noOutput</code> выполнение в фоне <br> <code>-noError</code> без вывода ошибок <br> <code>-requireAdmin</code> при запуске запросить права администратора <br> <code>-credentialGUI</code> вывод диалогового окна для ввода учетных данных <br> <code>Invoke-ps2exe -inputFile "$home\Desktop\WinEvent-Viewer-1.1.ps1" -outputFile "$home\Desktop\WEV-1.1.exe" -iconFile "$home\Desktop\log_48px.ico" -title "WinEvent-Viewer" -noConsole -noOutput -noError</code></p>
<h1>NSSM</h1>
<p><code>$powershell_Path = (Get-Command powershell).Source</code> <br> <code>$NSSM_Path = (Get-Command "C:\WinPerf-Agent\NSSM-2.24.exe").Source</code> <br> <code>$Script_Path = "C:\WinPerf-Agent\WinPerf-Agent-1.1.ps1"</code> <br> <code>$Service_Name = "WinPerf-Agent"</code> <br> <code>& $NSSM_Path install $Service_Name $powershell_Path -ExecutionPolicy Bypass -NoProfile -f $Script_Path</code> создать Service <br> <code>& $NSSM_Path start $Service_Name</code> запустить <br> <code>& $NSSM_Path status $Service_Name</code> статус <br> <code>$Service_Name | Restart-Service</code> перезапустить <br> <code>$Service_Name | Get-Service</code> статус <br> <code>$Service_Name | Stop-Service</code> остановить <br> <code>& $NSSM_Path set $Service_Name description "Check performance CPU and report email"</code> изменить описание <br> <code>& $NSSM_Path remove $Service_Name</code> удалить</p>
<h1>Jobs</h1>
<p><code>Get-Job</code> получение списка задач <br> <code>Start-Job</code> запуск процесса <br> <code>Stop-Job</code> остановка процесса <br> <code>Suspend-Job</code> приостановка работы процесса <br> <code>Resume-Job</code> восстановление работы процесса <br> <code>Wait-Job</code> ожидание вывода команды <br> <code>Receive-Job</code> получение результатов выполненного процесса <br> <code>Remove-Job</code> удалить задачу</p>
<pre><code class="language-PowerShell">function Start-PingJob ($Network) {
$RNetwork = $Network -replace "\.\d{1,3}$","."
foreach ($4 in 1..254) {
$ip = $RNetwork+$4
# создаем задания, забираем 3-ю строку вывода и добавляем к выводу ip-адрес:
(Start-Job {"$using:ip : "+(ping -n 1 -w 50 $using:ip)[2]}) | Out-Null
}
while ($True){
$status_job = (Get-Job).State[-1] # забираем статус последнего задания
if ($status_job -like "Completed"){ # проверяем на выполнение (задания выполняются по очереди сверху вниз)
$ping_out = Get-Job | Receive-Job # если выполнен, забираем вывод всех заданий
Get-Job | Remove-Job -Force # удаляем задания
$ping_out
break # завершаем цикл
}}
}
</code></pre>
<p><code>Start-PingJob -Network 192.168.3.0</code> <br> <code>(Measure-Command {Start-PingJob -Network 192.168.3.0}).TotalSeconds</code> 60 Seconds</p>
<h3>ThreadJob</h3>
<p><code>Install-Module -Name ThreadJob</code> <br> <code>Get-Module ThreadJob -list</code> <br> <code>Start-ThreadJob {ping ya.ru} | Out-Null</code> создать фоновую задачу <br> <code>Get-Job | Receive-Job -Keep</code> отобразить и не удалять вывод <br> <code>(Get-Job).HasMoreData</code> если False, то вывод команы удален <br> <code>(Get-Job)[-1].Output</code> отобразить вывод последней задачи</p>
<pre><code class="language-PowerShell">function Start-PingThread ($Network) {
$RNetwork = $Network -replace "\.\d{1,3}$","."
foreach ($4 in 1..254) {
$ip = $RNetwork+$4
# создаем задания, забираем 3-ю строку вывода и добавляем к выводу ip-адрес:
(Start-ThreadJob {"$using:ip : "+(ping -n 1 -w 50 $using:ip)[2]}) | Out-Null
}
while ($True){
$status_job = (Get-Job).State[-1] # забираем статус последнего задания
if ($status_job -like "Completed"){ # проверяем на выполнение (задания выполняются по очереди сверху вниз)
$ping_out = Get-Job | Receive-Job # если выполнен, забираем вывод всех заданий
Get-Job | Remove-Job -Force # удаляем задания
$ping_out
break # завершаем цикл
}}
}
</code></pre>
<p><code>Start-PingThread -Network 192.168.3.0</code> <br> <code>(Measure-Command {Start-PingThread -Network 192.168.3.0}).TotalSeconds</code> 24 Seconds</p>
<h3>PoshRSJob</h3>
<pre><code class="language-PowerShell">function Start-PingRSJob ($Network) {
$RNetwork = $Network -replace "\.\d{1,3}$","."
foreach ($4 in 1..254) {
$ip = $RNetwork+$4
(Start-RSJob {"$using:ip : "+(ping -n 1 -w 50 $using:ip)[2]}) | Out-Null
}
$ping_out = Get-RSJob | Receive-RSJob
$ping_out
Get-RSJob | Remove-RSJob
}
</code></pre>
<p><code>Start-PingRSJob -Network 192.168.3.0</code> <br> <code>(Measure-Command {Start-PingRSJob -Network 192.168.3.0}).TotalSeconds</code> 10 Seconds</p>
<h1>SMTP</h1>
<pre><code class="language-PowerShell">function Send-SMTP {
param (
[Parameter(Mandatory = $True)]$mess
)
$srv_smtp = "smtp.yandex.ru"
$port = "587"
$from = "login1@yandex.ru"
$to = "login2@yandex.ru"
$user = "login1"
$pass = "password"
$subject = "Service status on Host: $hostname"
$Message = New-Object System.Net.Mail.MailMessage
$Message.From = $from
$Message.To.Add($to)
$Message.Subject = $subject
$Message.IsBodyHTML = $true
$Message.Body = "<h1> $mess </h1>"
$smtp = New-Object Net.Mail.SmtpClient($srv_smtp, $port)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
$smtp.Send($Message)
}
</code></pre>
<p><code>Send-SMTP $(Get-Service)</code></p>
<h1>Hyper-V</h1>
<p><code>Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart</code> установить роль на Windows Server <br> <code>Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All</code> установить роль на Windows Desktop <br> <code>Get-Command -Module hyper-v</code> <br> <code>Get-VMHost</code></p>
<pre><code class="language-PowerShell">New-VMSwitch -name NAT -SwitchType Internal # создать виртуальный коммутатор и адаптер для него
Get-NetAdapter | where InterfaceDescription -match Hyper-V # список сетевых адаптеров
New-NetNat -Name LocalNat -InternalIPInterfaceAddressPrefix "192.168.3.0/24" # задать сеть
Get-NetAdapter "vEthernet (NAT)" | New-NetIPAddress -IPAddress 192.168.3.200 -AddressFamily IPv4 -PrefixLength 24 # присвоить адрес, необходимо на ВМ указать шлюз 192.168.3.200, что бы находиться за NAT, или в настройка ВМ указать соответствующий адаптер
Add-NetNatStaticMapping -NatName LocalNat -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 2222 -InternalIPAddress 192.168.3.103 -InternalPort 2121 # проброс, вест трафик который приходит на хост Hyper-V TCP/2222, будет перенаправляться на соответствующий порт виртуальной машины за NAT.
(Get-NetAdapter | where Name -match NAT).Status
</code></pre>
<p><code>Get-NetNatStaticMapping</code> отобразить пробросы (NAT) <br> <code>Get-NetNat</code> список сетей <br> <code>Remove-NetNatStaticMapping -StaticMappingID 0</code> удалить проброс <br> <code>Remove-NetNat -Name LocalNat</code> удалить сеть</p>
<p><code>New-VMSwitch -Name Local -AllowManagementOS $True -NetAdapterName "Ethernet 4" -SwitchType External</code> создать вшений (External) виртуальный коммутатор <br> <code>$VMName = "hv-dc-01"</code></p>
<pre><code class="language-PowerShell">$VM = @{
Name = $VMName
MemoryStartupBytes = 4Gb
Generation = 2
NewVHDPath = "D:\VM\$VMName\$VMName.vhdx"
NewVHDSizeBytes = 50Gb
BootDevice = "VHD"
Path = "D:\VM\$VMName"
SwitchName = "NAT"
}
New-VM @VM
</code></pre>
<p><code>Set-VMDvdDrive -VMName $VMName -Path "C:\Users\Lifailon\Documents\WS-2016.iso"</code> <br> <code>New-VHD -Path "D:\VM\$VMName\disk_d.vhdx" -SizeBytes 10GB</code> создать VHDX диск <br> <code>Add-VMHardDiskDrive -VMName $VMName -Path "D:\VM\$VMName\disk_d.vhdx"</code> примонтировать диск <br> <code>Get-VM –VMname $VMName | Set-VM –AutomaticStartAction Start</code> автозапуск <br> <code>Get-VM -Name $VMName | Set-VMMemory -StartupBytes 8Gb</code> <br> <code>Set-VMProcessor $VMName -Count 2</code> <br> <code>Get-VM -Name $VMName | Checkpoint-VM -SnapshotName "Snapshot-1"</code> <br> <code>Restore-VMCheckpoint -Name Snapshot-1" -VMName $VMName -Confirm:$false</code> <br> <code>Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName,IPAddresses,Status</code> получить IP адрес всех ВМ <br> <code>vmconnect.exe localhost $VMHost</code></p>
<p><code>Get-NetTCPConnection -State Established,Listen | Where-Object LocalPort -Match 2179</code> найти порт слушателя <code>Get-Process -Id (Get-NetTCPConnection -State Established,Listen | Where-Object LocalPort -Match 2179).OwningProcess</code> найти процесс по ID (vmms/VMConnect) <br> <code>New-NetFirewallRule -Name "Hyper-V" -DisplayName "Hyper-V" -Group "Hyper-V" -Direction Inbound -Protocol TCP -LocalPort 2179 -Action Allow -Profile Public</code> <br> <code>Get-LocalGroupMember -Group "Администраторы Hyper-V"</code> или "Hyper-V Administrators" <br> <code>Add-LocalGroupMember -Group "Администраторы Hyper-V" -Member "lifailon"</code> <br> <code>Get-VM * | select name,ID</code> добавить id в RDCMan для подключения <br> <code>Grant-VMConnectAccess -ComputerName plex-01 -VMName hv-devops-01 -UserName lifailon</code> дать доступ на подключение не администратору <br> <code>Grant-VMConnectAccess -ComputerName huawei-book -VMName hv-devops-01 -UserName lifailon</code> <br> <code>Get-VMConnectAccess</code> <br> <code>Revoke-VMConnectAccess -VMName hv-devops-01 -UserName lifailon</code></p>
<p>Error: <code>Unknown disconnection reason 3848</code> - добавить ключи реестра на стороне клиента</p>
<pre><code class="language-PowerShell">New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentialsDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowDefaultCredentials -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentialsWhenNTLMOnlyDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowDefaultCredentialsDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentials -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentialsWhenNTLMOnly -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowSavedCredentialsWhenNTLMOnly -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowSavedCredentials -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowSavedCredentialsDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
</code></pre>
<h1>VMWare/PowerCLI</h1>
<p><code>Install-Module -Name VMware.PowerCLI # -AllowClobber</code> установить модуль (PackageProvider: nuget) <br> <code>Get-Module -ListAvailable VMware* | Select Name,Version</code> <br> <code>Import-Module VMware.VimAutomation.Core</code> импортировать в сессию <br> <code>Get-PSProvider | format-list Name,PSSnapIn,ModuleName</code> список оснасток Windows PowerShell</p>
<p><code>Get-PowerCLIConfiguration</code> конфигурация подключения <br> <code>Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction ignore -confirm:$false</code> eсли используется самоподписанный сертификат, изменить значение параметра InvalidCertificateAction с Unset на Ignore/Warn <br> <code>Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false</code> отключить уведомление сбора данных через VMware Customer Experience Improvement Program (CEIP)</p>
<p><code>Read-Host –AsSecureString | ConvertFrom-SecureString | Out-File "$home\Documents\vcsa_password.txt"</code> зашифровать пароль и сохранить в файл <br> <code>$esxi = "vcsa.domain.local"</code> <br> <code>$user = "administrator@vsphere.local"</code> <br> <code>$pass = Get-Content "$home\Documents\vcsa_password.txt" | ConvertTo-SecureString</code> прочитать пароль <br> <code>$pass = "password"</code> <br> <code>$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user ,$pass</code> <br> <code>Connect-VIServer $esxi -User $Cred.Username -Password $Cred.GetNetworkCredential().password</code> подключиться, используя PSCredential ($Cred) <br> <code>Connect-VIServer $esxi -User $user -Password $pass</code> подключиться, используя логин и пароль</p>
<p><code>Get-Command –Module *vmware*</code> <br> <code>Get-Command –Module *vmware* -name *get*iscsi*</code> <br> <code>Get-IScsiHbaTarget</code> <br> <code>Get-Datacenter</code> <br> <code>Get-Cluster</code> <br> <code>Get-VMHost</code> <br> <code>Get-VMHost | select Name,Model,ProcessorType,MaxEVCMode,NumCpu,CpuTotalMhz,CpuUsageMhz,MemoryTotalGB,MemoryUsageGB</code> <br> <code>Get-VMHostDisk | select VMHost,ScsiLun,TotalSectors</code></p>
<p><code>Get-Datastore</code> <br> <code>Get-Datastore TNAS-vmfs-4tb-01</code> <br> <code>Get-Datastore TNAS-vmfs-4tb-01 | get-vm</code> <br> <code>Get-Datastore -RelatedObject vm-01</code> <br> <code>(Get-Datastore TNAS-vmfs-4tb-01).ExtensionData.Info.GetType()</code> <br> <code>(Get-Datastore TNAS-vmfs-4tb-01).ExtensionData.Info.Vmfs.Extent</code></p>
<p><code>Get-Command –Module *vmware* -name *disk*</code> <br> <code>Get-VM vm-01 | Get-Datastore</code> <br> <code>Get-VM vm-01 | Get-HardDisk</code> <br> <code>Get-VM | Get-HardDisk | select Parent,Name,CapacityGB,StorageFormat,FileName | ft</code> <br> <code>Copy-HardDisk</code> <br> <code>Get-VM | Get-Snapshot</code> <br> <code>Get-VM | where {$_.Powerstate -eq "PoweredOn"}</code> <br> <code>Get-VMHost esxi-05 | Get-VM | where {$_.Powerstate -eq "PoweredOff"} | Move-VM –Destination (Get-VMHost esxi-06)</code></p>
<p><code>Get-VM | select Name,VMHost,PowerState,NumCpu,MemoryGB,</code> <br> <code>@{Name="UsedSpaceGB"; Expression={[int32]($_.UsedSpaceGB)}},@{Name="ProvisionedSpaceGB"; Expression={[int32]($_.ProvisionedSpaceGB)}},</code> <br> <code>CreateDate,CpuHotAddEnabled,MemoryHotAddEnabled,CpuHotRemoveEnabled,Notes</code></p>
<p><code>Get-VMGuest vm-01 | Update-Tools</code> <br> <code>Get-VMGuest vm-01 | select OSFullName,IPAddress,HostName,State,Disks,Nics,ToolsVersion</code> <br> <code>Get-VMGuest * | select -ExpandProperty IPAddress</code> <br> <code>Restart-VMGuest -vm vm-01 -Confirm:$False</code> <br> <code>Start-VM -vm vm-01 -Confirm:$False</code> <br> <code>Shutdown-VMGuest -vm vm-01 -Confirm:$false</code></p>
<p><code>New-VM –Name vm-01 -VMHost esxi-06 –ResourcePool Production –DiskGB 60 –DiskStorageFormat Thin –Datastore TNAS-vmfs-4tb-01</code> <br> <code>Get-VM vm-01 | Copy-VMGuestFile -Source "\\$srv\Install\Soft\Btest.exe" -Destination "C:\Install\" -LocalToGuest -GuestUser USER -GuestPassword PASS -force</code></p>
<p><code>Get-VM -name vm-01 | Export-VApp -Destination C:\Install -Format OVF</code> Export template (.ovf, .vmdk, .mf) <br> <code>Get-VM -name vm-01 | Export-VApp -Destination C:\Install -Format OVA</code></p>
<p><code>Get-VMHostNetworkAdapter | select VMHost,Name,Mac,IP,@{Label="Port Group"; Expression={$_.ExtensionData.Portgroup}} | ft</code> <br> <code>Get-VM | Get-NetworkAdapter | select Parent,Name,Id,Type,MacAddress,ConnectionState,WakeOnLanEnabled | ft</code></p>
<p><code>Get-Command –Module *vmware* -name *event*</code> <br> <code>Get-VIEvent -MaxSamples 1000 | where {($_.FullFormattedMessage -match "power")} | select username,CreatedTime,FullFormattedMessage</code> <br> <code>Get-logtype | select Key,SourceEntityId,Filename,Creator,Info</code> <br> <code>(Get-Log vpxd:vpxd.log).Entries | select -Last 50</code></p>
<p><code>Get-Command –Module *vmware* -name *syslog*</code> <br> <code>Set-VMHostSysLogServer -VMHost esxi-05 -SysLogServer "tcp://192.168.3.100" -SysLogServerPort 3515</code> <br> <code>Get-VMHostSysLogServer -VMHost esxi-05</code></p>
<h1>Exchange/EMShell</h1>
<p><code>$srv_cas = "exchange-cas"</code> <br> <code>$session_exchange = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$srv_cas/PowerShell/</code> -Credential $Cred -Authentication Kerberos <br> <code>Get-PSSession</code> <br> <code>Import-PSSession $session_exchange -DisableNameChecking</code> импортировать в текущую сессию</p>
<p><code>Get-ExchangeServer | select name,serverrole,admindisplayversion,Edition,OriginatingServer,WhenCreated,WhenChanged,DataPath | ft</code> список всех серверов</p>
<p><code>Get-ImapSettings</code> настройки IMAP <br> <code>Get-ExchangeCertificate</code> список сертификатов <br> <code>Get-ExchangeCertificate -Thumbprint "5CEC8544D4743BC279E5FEA1679F79F5BD0C2B3A" | Enable-ExchangeCertificate -Services IMAP, POP, IIS, SMTP</code> <br> <code>iisreset</code> <br> <code>Get-ClientAccessService | fl identity, *uri*</code> настройки службы автообнаружения в Exchange 2016 <br> <code>Get-ClientAccessService -Identity $srv | Set-ClientAccessService -AutoDiscoverServiceInternalUri https://mail.domain.ru/Autodiscover/Autodiscover.xml</code> изменить на внешний адрес <br> <code>Get-OutlookAnywhere</code> OA позволяет клиентам Outlook подключаться к своим почтовым ящикам за пределами локальной сети (без использования VPN) <br> <code>Get-WebServicesVirtualDirectory</code> <br> <code>Get-OwaVirtualDirectory</code> <br> <code>Get-ActiveSyncVirtualDirectory</code> <br> <code>Get-OabVirtualDirectory</code> виртуальная директория автономной адресной книги <br> <code>Get-OabVirtualDirectory -Server $srv | Set-OabVirtualDirectory -InternalUrl "https://mail.domain.ru/OAB" -ExternalUrl "https://mail.domain.ru/OAB"</code></p>
<h3>Roles</h3>
<p>MS (Mailbox) - сервер с БД почтовых ящиков и общих папок, отвечает только за их размещение и не выполняет маршрутизацию никаких сообщений. <br> CAS (Client Access Server) - обработка клиентских подключений к почтовым ящикам, которые создаются клиентами Outlook Web Access (HTTP для Outlook Web App), Outlook Anywhere, ActiveSync (для мобильных устройств), интернет протоколы POP3 и IMAP4, MAPI для клиентов Microsoft Outlook. <br> Hub Transort - ответвечает за маршрутизацию сообщений интернета и инфраструктурой Exchange, а также между серверами Exchange. Сообщения всегда маршрутизируются с помощью роли транспортного сервера-концентратора, даже если почтовые ящики источника и назначения находятся в одной базе данных почтовых ящиков. <br> Relay - роль пограничного транспортного сервера (шлюз SMTP в периметре сети).</p>
<p>SCP (Service Connection Point) - запись прописывается в AD, при создание сервера CAS. Outlook запрашивает SCP, выбирает те, которые находятся в одном сайте с ним и по параметру WhenCreated – по дате создания, выбирая самый старый. <br> Autodiscover. Outlook выбирает в качестве сервера Client Access тот, который прописан в атрибуте RPCClientAccessServer базы данных пользователя. Сведения о базе данных и сервере mailbox, на котором она лежит, берутся из AD.</p>
<h3>MessageTrackingLog</h3>
<p><code>Get-MessageTrackingLog -ResultSize Unlimited | select Timestamp,Sender,Recipients,RecipientCount,MessageSubject,Source,EventID,ClientHostname,ServerHostname,ConnectorId, @{Name="MessageSize"; Expression={[string]([int]($_.TotalBytes / 1024))+" KB"}},@{Name="MessageLatency"; Expression={$_.MessageLatency -replace "\.\d+$"}}</code> <br> <code>Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize Unlimited | where {[string]$_.recipients -like "*@yandex.ru"}</code> вывести сообщения за последние 24 часа, где получателем был указанный домен <br> -Start "04/01/2023 09:00:00" -End "04/01/2023 18:00:00" - поиск по указанному промежутку времени <br> -MessageSubject "Тест" - поиск по теме письма <br> -Recipients "<a href="mailto:support4@domain.ru">support4@domain.ru</a>" - поиск по получателю <br> -Sender - поиск по отправителю <br> -EventID – поиск по коду события сервера (RECEIVE, SEND, FAIL, DSN, DELIVER, BADMAIL, RESOLVE, EXPAND, REDIRECT, TRANSFER, SUBMIT, POISONMESSAGE, DEFER) <br> -Server – поиск на определенном транспортном сервере <br> -messageID – трекинг письма по его ID</p>
<h3>Mailbox</h3>
<p><code>Get-Mailbox -Database "it2"</code> список почтовых серверов в базе данных <br> <code>Get-Mailbox -resultsize unlimited | ? Emailaddresses -like "support4" | format-list name,emailaddresses,database,servername</code> какую БД, сервер и smtp-адреса использует почтовый ящик <br> <code>Get-Mailbox -Database $db_name -Archive</code> отобразить архивные почтовые ящики</p>
<p><code>Get-MailboxFolderStatistics -Identity "support4" -FolderScope All | select Name,ItemsInFolder,FolderSize</code> отобразить кол-во писем и размер в каждой папке <br> <code>Get-MailboxStatistics "support4" | select DisplayName,LastLoggedOnUserAccount,LastLogonTime,LastLogoffTime,ItemCount,TotalItemSize,DeletedItemCount,TotalDeletedItemSize,Database,ServerName</code> общее кол-во писем, их размер, время последнего входа и выхода, имя сервера и БД <br> <code>Get-Mailbox -Server s2 | Get-MailboxStatistics | where {$_.Lastlogontime -lt (get-date).AddDays(-30)} | Sort Lastlogontime -desc | ft displayname,Lastlogontime,totalitemsize</code> ящики, которые не использовались 30 и более дней</p>
<p><code>Enable-Mailbox -Identity support9 -Database test_base</code> создать почтовый ящик для существующего пользователя в AD <br> <code>New-Mailbox -Name $login -UserPrincipalName "$login@$domain" -Database $select_db -OrganizationalUnit $path -Password (ConvertTo-SecureString -String "$password" -AsPlainText -Force)</code> создать новый почтовый ящик без привязки к пользователю AD <br> <code>Get-MailboxDatabase -Database $db_name | Remove-MailboxDatabase</code> удалить БД</p>
<p><code>Set-MailBox "support4" -PrimarySmtpAddress support24@domain.ru -EmailAddressPolicyEnabled $false</code> добавить и изменить основной SMTP-адрес электронной почты для пользователя <br> <code>Set-Mailbox -Identity "support4" -DeliverToMailboxAndForward $true -ForwardingSMTPAddress "username@outlook.com"</code> включить переадресацию почты (электронная почта попадает в почтовый ящик пользователя support4 и одновременно пересылается по адресу <a href="mailto:username@outlook.com">username@outlook.com</a>)</p>
<h3>MoveRequest</h3>
<p><code>Get-Mailbox -Database $db_in | New-MoveRequest -TargetDatabase $db_out</code> переместить все почтовые ящики из одной БД в другую <br> <code>New-MoveRequest -Identity $db_in -TargetDatabase $db_out</code> переместить один почтовый ящик <br> <code>Get-MoveRequest | Suspend-MoveRequest</code> остановить запросы перемещения <br> <code>Get-MoveRequest | Remove-MoveRequest</code> удалить запросы на перемещение <br> <code>Get-MoveRequest | Get-MoveRequestStatistics</code> статус перемещения</p>
<p>Status: <br> Cleanup - нужно подождать <br> Queued - в очереди <br> InProgress - в процессе <br> Percent Complete - процент выполнения <br> CompletionInProgress - завершение процесса <br> Completed - завершено</p>
<p><code>Remove-MoveRequest -Identity $db_name</code> завершить процесс перемещения (убрать статус перемещения с почтового ящика и очистить список перемещений) <br> <code>Get-MailboxDatabase | Select Name, MailboxRetention</code> после перемещения ящиков, размер базы не изменится, полное удаление из базы произойдет, как пройдет количество дней, выставленное в параметре MailboxRetention <br> <code>Set-MailboxDatabase -MailboxRetention '0.00:00:00' -Identity $db_name</code> изменить значение</p>
<h3>Archive</h3>
<p><code>Enable-Mailbox -Identity $name -Archive</code> включить архив для пользователя <br> <code>Get-Mailbox $name | New-MoveReques –ArchiveOnly –ArchiveTargetDatabase DBArch</code> переместить архивный почтовый ящик в другую БД <br> <code>Get-Mailbox $name | fl Name,Database,ArchiveDatabase</code> место расположения БД пользователя и БД его архива <br> <code>Disable-Mailbox -Identity $name -Archive</code> отключить архив <br> <code>Connect-Mailbox -Identity "8734c04e-981e-4ccf-a547-1c1ac7ebf3e2" -Archive -User $name -Database it2</code> подключение архива пользователя к указанному почтовому ящику <br> <code>Get-Mailbox $name | Set-Mailbox -ArchiveQuota 20GB -ArchiveWarningQuota 19GB</code> настроить квоты хранения архива</p>
<h3>Quota</h3>
<p><code>Get-Mailbox -Identity $mailbox | fl IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, UseDatabaseQuotaDefaults</code> отобразить квоты почтового ящика <br> IssueWarningQuota — квота, при достижении которой Exchange отправит уведомление <br> ProhibitSendQuota — при достижении будет запрещена отправка <br> ProhibitSendReceiveQuota — при достижении будет запрещена отправка и получение <br> UseDatabaseQuotaDefaults — используется ли квота БД или false - индвидиуальные <br> <code>Set-Mailbox -Identity $mailbox -UseDatabaseQuotaDefaults $false -IssueWarningQuota "3 GB" -ProhibitSendQuota "4 GB" -ProhibitSendReceiveQuota "5 GB"</code> задать квоту для пользователя</p>
<p><code>Get-MailboxDatabase $db_name | fl Name, *Quota</code> отобразить квоты наложенные на БД <br> <code>Set-MailboxDatabase $db -ProhibitSendReceiveQuota "5 GB" -ProhibitSendQuota "4 GB" -IssueWarningQuota "3 GB"</code> настроить квоты на БД</p>
<h3>Database</h3>
<p><code>Get-MailboxDatabase -Status | select ServerName,Name,DatabaseSize</code> список и размер всех БД на всех MX-серверах <br> <code>New-MailboxDatabase -Name it_2022 -EdbFilePath E:\Bases\it_2022\it_2022.edb -LogFolderPath G:\Logs\it_2022 -OfflineAddressBook "Default Offline Address List" -server exch-mx-01</code> создать БД <br> <code>Restart-Service MSExchangeIS</code> <br> <code>Get-Service | Where {$_ -match "exchange"} | Restart-Service</code> <br> <code>Get-MailboxDatabase -Server exch-01</code> список баз данных на MX-сервере <br> <code>New-MoveRequest -Identity "support4" -TargetDatabase it_2022</code> переместить почтовый ящик в новую БД <br> <code>Move-Databasepath $db_name –EdbFilepath "F:\DB\$db_name\$db_name.edb" –LogFolderpath "E:\DB\$db_name\logs\"</code> переместить БД и транзакционные логи на другой диск <br> <code>Set-MailboxDatabase -CircularLoggingEnabled $true -Identity $db_name</code> включить циклическое ведение журнала (Circular Logging), где последовательно пишутся 4 файла логов по 5 МБ, после чего первый лог-файл перезаписывается <br> <code>Set-MailboxDatabase -CircularLoggingEnabled $false -Identity $db_name</code> отключить циклическое ведение журнала <br> <code>Get-MailboxDatabase -Server "exch-mx-01" -Status | select EdbFilePath,LogFolderPath,LogFilePrefix</code> путь к БД, логам, имя текущего актуального лог-файла</p>
<h3>MailboxRepairRequest</h3>
<p><code>New-MailboxRepairRequest -Database it2 -CorruptionType ProvisionedFolder, SearchFolder, AggregateCounts, Folderview</code> запустить последовательный тест (в конкретный момент времени не доступен один почтовый ящик) и исправление ошибок на прикладном уровне <br> <code>Get-MailboxRepairRequest -Database it2</code> прогресс выполнения <br> Позволяет исправить: <br> ProvisionedFolder – нарушения логической структуры папок <br> SearchFolder – ошибки в папках поиска <br> AggregateCounts – проверка и исправление информации о количестве элементов в папках и их размере <br> FolderView – неверное содержимое, отображаемое представлениями папок</p>
<h3>eseutil</h3>
<p>При отправке/получении любого письма Exchange сначала вносит информацию в транзакционный лог, и только потом сохраняет элемент непосредственно в базу данных. Размер одного лог файла - 1 Мб. Есть три способа урезания логов: DAG, Backup на базе Volume Shadow Copy, Circular Logging.</p>
<p>Ручное удаление журналов транзакций: <br> <code>cd E:\MS_Exchange_2010\MailBox\Reg_v1_MailBoxes\</code> перейти в каталог с логами <br> <code>ls E*.chk</code> узнать имя файла, в котором находится информация из контрольной точки фиксации журналов <br> <code>eseutil /mk .\E18.chk</code> узнать последний файл журнала, действия из которого были занесены в БД Exchange <br> <code>Checkpoint: (0x561299,8,16)</code> 561299 имя файла, который был последним зафиксирован (его информация уже в базе данных) <br> Находим в проводнике файл E0500561299.txt, можно удалять все файлы журналов, которые старше найденного файла</p>
<p>Восстановление БД (если две копии БД с ошибкой): <br> <code>Get-MailboxDatabaseCopyStatus -Identity db_name\* | Format-List Name,Status,ContentIndexState</code> <br> Status : FailedAndSuspended <br> ContentIndexState : Failed <br> Status : Dismounted <br> ContentIndexState : Failed</p>
<p><code>Get-MailboxDatabase -Server exch-mx-01 -Status | fl Name,EdbFilePath,LogFolderPath</code> проверить расположение базы и транзакционных логов <br> LogFolderPath - директория логов <br> E18 - имя транкзакционного лога (из него читаются остальные логи) <br> <code>dismount-Database db_name</code> отмантировать БД <br> <code>eseutil /mh D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> проверить базу <br> State: Dirty Shutdown - несогласованное состояние, означает, что часть транзакций не перенесена в базу, например, после того, как была осуществлена аварийная перезагрузка сервера. <br> <code>eseutil /ml E:\MS_Exchange_2010\MailBox\db_name\E18</code> проверка целостности транзакционных логи, если есть логи транзакций и они не испорчены, то можно восстановить из них, из файла E18 считываются все логи, должен быть статус - ОК</p>
<p>Soft Recovery (мягкое восстановление) - необходимо перевести базу в состояние корректного отключения (Clear shutdown) путем записи недостающих файлов журналов транзакций в БД. <br> <code>eseutil /R E18 /l E:\MS_Exchange_2010\MailBox\db_name\ /d D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> <br> <code>eseutil /R E18 /a /i /l E:\MS_Exchange_2010\MailBox\db_name\ /d D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> если с логами что-то не так, можно попробовать восстановить базу игнорируя ошибку в логах <br> <code>eseutil /mk D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> cостоянии файла контрольных точек <br> <code>eseutil /g D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> проверка целостности БД <br> <code>eseutil /k D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> проверка контрольных сумм базы (CRC)</p>
<p>Hard Recovery - если логи содержат ошибки и база не восстанавливается, то восстанавливаем базу без логов. <br> <code>eseutil /p D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> <br> /p - удалит поврежденные страницы, эта информация будет удалена из БД и восстановит целостность <br> <code>esetuil /d D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb</code> выполнить дефрагментацию (если был потерян большой объем данных, то может сильно снизиться производительность) <br> После выполнения команд необходимо вручную удалить все файлы с расширением log в папке MDBDATA, перед попыткой смонтировать базу данных. <br> <code>isinteg -s "db_name.edb" -test alltests</code> проверьте целостность базы данных <br> <code>isinteg -s "server_name" -fix -test -alltests</code> если проверка будет провалена. Выполнять команду до тех пор, пока у всех ошибок не станет статус 0 или статус не перестанет меняться, иногда необходимо 3 прохода для достижения результата. <br> <code>eseutil /mh D:\MS_Exchange_2010\Mailbox\db_name\db_name.edb | Select-String -Pattern "State:","Log Required:"</code> проверить статус <br> State: Clear shutdown - успешный статус <br> <code>Log Required</code> требуются ли файлы журналов, необходимые базе, чтобы перейти в согласованное состояние. Если база размонтирована корректно, то это значение будет равняться 0. <br> <code>mount-Database -force db_name</code> примонтировать БД <br> <code>Get-MailboxDatabase –Status db_name | fl Mounted</code> статус БД <br> <code>New-MailboxRepairRequest -Database db_name -CorruptionType SearchFolder,AggregateCounts,ProvisionedFolder,FolderView</code> восстановление логической целостности данных <br> После этого восстановить Index. <br> Если индексы не восстанавливаются, но БД монтируется, то перенести почтовые ящики в новую БД.</p>
<p>Восстановление БД из Backup:</p>
<p>1-й вариант:</p>
<ol>
<li>Отмантировать текущую БД и удалить или переименовать директорию с файлами текущей БД.</li>
<li>Восстановить в ту же директорию из Backup базу с логами.</li>
<li>Запустить мягкое восстановление БД (Soft Recovery).</li>
<li>Примониторвать.</li>
</ol>
<p>2-й вариант:</p>
<ol>
<li>Отмантировать и удалить текущую БД.</li>
<li>Восстановить БД с логами из Backup в любое место.</li>
<li>Запустить мягкое восстановление БД (Soft Recovery).</li>
<li>Создать новую БД.</li>
<li>Создать Recovery Database и смонтировать в нее восстановленную из бэкапа БД, скопировать из неё почтовые ящики в новую БД и переключить на них пользователей.</li>
<li>Если использовать Dial Tone Recovery, то так же перенести из временной БД промежуточные данные почтовых ящиков.</li>
</ol>
<p>3-й вариант:</p>
<ol>
<li>Восстановить целостность Soft Repair или Hard Recovery.</li>
<li>Создать новую БД. Указывать в свойствах: «база может быть перезаписана при восстановлении».</li>
<li>Если база была только что оздана и еще не была подмонтирована, то эта папка будет пуста, туда перемещаем базу из Backup, которая была обработана ESEUTIL вместе со всеми файлами. Указать имя .edb такое же, которое было при создании новой базы.</li>
<li>Монтируем базу.</li>
<li>Перенацеливаем ящики со старой (Mailbox_DB_02), неисправной базы, на новую базу (Mailbox_DB_02_02): <code>Get-Mailbox -Database Mailbox_DB_02 | where {$_.ObjectClass -NotMatch '(SystemAttendantMailbox|ExOleDbSystemMailbox)'} | Set-Mailbox -Database Mailbox_DB_02_02</code></li>
<li>Восстановление логической целостности данных: <code>New-MailboxRepairRequest -Database "Mailbox_DB_02_02" -CorruptionType ProvisionedFolder, SearchFolder, AggregateCounts, Folderview</code></li>
</ol>
<h3>Dial Tone Recovery</h3>
<p><code>Get-Mailbox -Database "MailboxDB" | Set-Mailbox -Database "TempDB"</code> перенацелить ящики с одной БД (нерабочей) на другую (пустую) <br> <code>Get-Mailbox -Database TempDB</code> отобразить почтовые ящики в БД TempDB <br> <code>Restart-Service MSExchangeIS</code> перезапустить службу Mailbox Information Store (банка данных), иначе пользователи будут по-прежнему пытаться подключиться к старой БД <br> <code>iisreset</code> <br> <code>Get-Mailbox -Database "TempDB" | Set-Mailbox -Database "MailboxDB"</code> после восстановления старой БД, нужно переключить пользователей с временной БД обратно <br> После этого сделать слияние с временной БД с помощью Recovery.</p>
<h3>Recovery database (RDB)</h3>
<p><code>New-MailboxDatabase –Recovery –Name RecoveryDB –Server $exch_mx –EdbFilePath "D:\TempDB\TempDB.edb" -LogFolderPath "D:\TempDB"</code> для переноса новых писем из временной БД в основную необходим только сам файл TempDB.edb со статусом Clean Shutdown, из нее необходимо создать служебную БД (ключ -Recovery) <br> <code>Mount-Database "D:\TempDB\TempDB.edb"</code> примонтировать БД <br> <code>Get-MailboxStatistics -Database RecoveryDB</code> <br> <code>New-MailboxRestoreRequest –SourceDatabase RecoveryDB –SourceStoreMailbox support –TargetMailbox support</code> скопировать данные почтового ящика с DisplayName: support из RecoveryDB в почтовый ящик с псевдонимом support существующей базы. По умолчанию ищет в почтовой базе совпадающие LegacyExchangeDN либо проверяет совпадение адреса X500, если нужно восстановить данные в другой ящик, нужно указывать ключ -AllowLegacyDNMisMatch <br> <code>New-MailboxRestoreRequest –SourceDatabase RecoveryDB –SourceStoreMailbox support –TargetMailbox support –TargetRootFolder "Restore"</code> скопировать письма в отдельную папку в ящике назначения (создается автоматически), возможно восстановить содержимое конкретной папки -IncludeFolders "#Inbox#" <br> <code>Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics</code> статус запроса восстановления <br> <code>Get-MailboxRestoreRequestStatistics -Identity support</code> <br> <code>Get-MailboxRestoreRequest -Status Completed | Remove-MailboxRestoreRequest</code> удалить все успешные запросы</p>
<h3>Transport</h3>
<p><code>Get-TransportServer $srv_cas | select MaxConcurrentMailboxDeliveries,MaxConcurrentMailboxSubmissions,MaxConnectionRatePerMinute,MaxOutboundConnections,MaxPerDomainOutboundConnections,PickupDirectoryMaxMessagesPerMinute</code> настройки пропускной способности транспортного сервера <br> MaxConcurrentMailboxDeliveries — максимальное количество одновременных потоков, которое может открыть сервер для отправки писем. <br> MaxConcurrentMailboxSubmissions — максимальное количество одновременных потоков, которое может открыть сервер для получения писем. <br> MaxConnectionRatePerMinute — максимальное возможная скорость открытия входящих соединений в минуту. <br> MaxOutboundConnections — максимальное возможное количество соединений, которое может открыть Exchange для отправки. <br> MaxPerDomainOutboundConnections — максимальное возможное количество исходящих соединений, которое может открыть Exchange для одного удаленного домена. <br> PickupDirectoryMaxMessagesPerMinute — скорость внутренней обработки сообщений в минуту (распределение писем по папкам). <br> <code>Set-TransportServer exchange-cas -MaxConcurrentMailboxDeliveries 21 -MaxConcurrentMailboxSubmissions 21 -MaxConnectionRatePerMinute 1201 -MaxOutboundConnections 1001 -MaxPerDomainOutboundConnections 21 -PickupDirectoryMaxMessagesPerMinute 101</code> изменить значения</p>
<p><code>Get-TransportConfig | select MaxSendSize, MaxReceiveSize</code> ограничение размера сообщения на уровне траспорта (наименьший приоритет, после коннектора и почтового ящика). <br> <code>New-TransportRule -Name AttachmentLimit -AttachmentSizeOver 15MB -RejectMessageReasonText "Sorry, messages with attachments over 15 MB are not accepted"</code> создать транспортное правило для проверки размера вложения</p>
<h3>Connector</h3>
<p><code>Get-ReceiveConnector | select Name,MaxMessageSize,RemoteIPRanges,WhenChanged</code> ограничения размера сообщения на уровне коннектора (приоритет ниже, чем у почтового ящика) <br> <code>Set-ReceiveConnector ((Get-ReceiveConnector).Identity)[-1] -MaxMessageSize 30Mb</code> изменить размер у последнего коннектора в списке (приоритет выше, чем у траспорта) <br> <code>Get-Mailbox "support4" | select MaxSendSize, MaxReceiveSize</code> наивысший приоритет <br> <code>Set-Mailbox "support4" -MaxSendSize 30MB -MaxReceiveSize 30MB</code> изменить размер</p>
<p><code>Set-SendConnector -Identity "ConnectorName" -Port 26</code> изменить порт коннектора отправки <br> <code>Get-SendConnector "proxmox" | select port</code></p>
<p><code>Get-ReceiveConnector | select Name,MaxRecipientsPerMessage</code> по умолчанию Exchange принимает ограниченное количество адресатов в одном письме (200) <br> <code>Set-ReceiveConnector ((Get-ReceiveConnector).Identity)[-1] -MaxRecipientsPerMessage 50</code> изменить значение <br> <code>Set-ReceiveConnector ((Get-ReceiveConnector).Identity)[-1] -MessageRateLimit 1000</code> задать лимит обработки сообщений в минуту для коннектора</p>
<p><code>Get-OfflineAddressbook | Update-OfflineAddressbook</code> обновить OAB <br> <code>Get-ClientAccessServer | Update-FileDistributionService</code></p>
<h3>PST</h3>
<p><code>New-MailboxExportRequest -Mailbox $name -filepath "\\$srv\pst\$name.PST" # -ContentFilter {(Received -lt "01/01/2021")} -Priority Highest/Lower # -IsArchive</code> выполнить экспорт из архива пользователя <br> <code>New-MailboxExportRequest -Mailbox $name -IncludeFolders "#Inbox#" -FilePath "\\$srv\pst\$name.PST"</code> только папку входящие <br> <code>New-MailboxImportRequest -Mailbox $name "\\$srv\pst\$name.PST"</code> импорт из PST <br> <code>Get-MailboxExportRequest</code> статус запросов <br> <code>Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest</code> удалить успешно завершенные запросы <br> <code>Remove-MailboxExportRequest -RequestQueue MBXDB01 -RequestGuid 25e0eaf2-6cc2-4353-b83e-5cb7b72d441f</code> отменить экспорт</p>
<h3>DistributionGroup</h3>
<p><code>Get-DistributionGroup</code> список групп рассылки <br> <code>Get-DistributionGroupMember "!_Офис"</code> список пользователей в группе <br> <code>Add-DistributionGroupMember -Identity "!_Офис" -Member "$name@$domain"</code> добавить в группу рассылки <br> <code>Remove-DistributionGroupMember -Identity "!_Офис" -Member "$name@$domain"</code> <br> <code>New-DistributionGroup -Name "!_Тест" -Members "$name@$domain"</code> создать группу <br> <code>Set-DistributionGroup -Identity "support4" -HiddenFromAddressListsEnabled $true (или Set-Mailbox)</code> скрыть из списка адресов Exchange</p>
<h3>Search</h3>
<p><code>Search-Mailbox -Identity "support4" -SearchQuery 'Тема:"Mikrotik DOWN"'</code> поиск писем по теме <br> <code>Search-Mailbox -Identity "support4" -SearchQuery 'Subject:"Mikrotik DOWN"'</code><br> <code>Search-Mailbox -Identity "support4" -SearchQuery 'attachment -like:"*.rar"'</code><br> <code>Search-Mailbox -Identity "support4" -SearchQuery "отправлено: < 01/01/2020" -DeleteContent -Force</code> удаление писем по дате</p>
<p>Формат даты в зависимости от региональных настроек сервера: <br> <code>20/07/2018</code> <br> <code>07/20/2018</code> <br> <code>20-Jul-2018</code> <br> <code>20/July/2018</code></p>
<h3>AuditLog</h3>
<p><code>Get-AdminAuditLogConfig</code> настройки аудита <br> <code>Set-Mailbox -Identity "support4" -AuditOwner HardDelete</code> добавить логирование HardDelete писем <br> <code>Set-mailbox -identity "support4" -AuditlogAgelimit 120</code> указать время хранения <br> <code>Get-mailbox -identity "support4" | Format-list Audit*</code> данные аудита <br> <code>Search-MailboxAuditLog -Identity "support4" -LogonTypes Delegate -ShowDetails -Start "2022-02-22 18:00" -End "2022-03-22 18:00"</code> просмотр логов <br> <code>Search-AdminAuditLog -StartDate "02/20/2022" | ft CmdLetName,Caller,RunDate,ObjectModified -Autosize</code> поиск событий истории выполненых команд в журнале аудита Exchange</p>
<h3>Test</h3>
<p><code>Test-ServiceHealth</code> проверить доступность ролей сервера: почтовых ящиков, клиентского доступа, единой системы обмена сообщениями, траспортного сервера <br> <code>$mx_srv_list | %{Test-MapiConnectivity -Server $_}</code> проверка подключения MX-серверов к БД <br> <code>Test-MAPIConnectivity -Database $db</code> проверка возможности логина в базу <br> <code>Test-MAPIConnectivity –Identity $user@$domain</code> проверка возможности логина в почтовый ящик <br> <code>Test-ComputerSecureChannel</code> проверка работы службы AD <br> <code>Test-MailFlow</code> результат тестового потока почты</p>
<h3>Queue</h3>
<p><code>Get-TransportServer | %{Get-Queue -Server $_.Name}</code> отобразить очереди на всех транспортных серверах <br> <code>Get-Queue -Identity EXCHANGE-CAS\155530 | Format-List</code> подробная информация об очереди <br> <code>Get-Queue -Identity EXCHANGE-CAS\155530 | Get-Message -ResultSize Unlimited | Select FromAddress,Recipients</code> отобразить список отправителей (FromAddress) и список получателей в очереди (Recipients) <br> <code>Get-Message -Queue EXCHANGE-CAS\155530</code> отобразить индентификатор сообщений в конкретной очереди (сервер\очередь\идентификатор письма) <br> <code>Resume-Message EXCHANGE-CAS\155530\444010</code> повторить отправку письма из очереди <br> <code>Retry-Queue -Filter {Status -eq "Retry"}</code> принудительно повторить отправку всех сообщений c статусом "Повторить" <br> <code>Get-Queue -Identity EXCHANGE-CAS\155530 | Get-Message -ResultSize unlimited | Remove-Message -WithNDR $False</code> очистить очередь <br> <code>Get-transportserver EXCHANGE-CAS | Select MessageExpirationTimeout</code> отобразить время жизни сообщений в очереди (по умолчанию, 2 дня)</p>
<p>Error Exchange 452 4.3.1 Insufficient system resources - окончание свободного места на диске, на котором находятся очереди службы Exchange Hub Transport, за мониторинг отвечает компонент доступных ресурсов Back Pressure, который в том числе отслеживает свободное место на диске <br> Порог Medium (90%) — перестать принимать по SMTP почту от внешних отправителей (почта от MAPI клиентов при этом обрабатывается) <br> Порог High (99%) — обработка потока почты полностью прекращается <br> Решение: очистить, например логи IIS (C:\inetpub\logs\LogFiles\W3SVC1), увеличить размер диска, отключить мониторинг Back Pressure (плохой вариант) или перенести транспортные очередь на другой диск достаточного объёма.</p>
<p><code>Get-Service | ? name -like "MSExchangeTransport" | Stop-Service</code> остановить служу очереди <br> <code>Rename-Item "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue" "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue_old"</code> очистить базу очереди <br> <code>C:\Program Files\Microsoft\Exchange Server\V15\Bin\EdgeTransport.exe.config</code> конфигурационный файл, который содержит путь к бд с очередью (блок
<appsettings>
ключи
<add key="QueueDatabasePath" value="$new_path" /> и QueueDatabaseLoggingPath)
<br> Для переноса БД, необходимо переместить существующие файлы базы данных Mail.que и Trn.chk (контрольные точки для отслеживания записи в логах) из исходного местоположения в новое. Переместите существующие файлы журнала транзакций Trn.log, Trntmp.log, Trn nnnn.log , Trnres00001.jrs, Trnres00002.jrs и Temp.edb из старого расположения в новое. tmp.edb — временный файл для проверки схемы самой базы, перености не нужно.
<br> После запуска службы транспорта удалить старую базу данных очереди и файлы журнала транзакций из старого расположения.
</appsettings></p>
<h3>Defrag</h3>
<p><code>Get-MailboxDatabase -Status | ft Name, DatabaseSize, AvailableNewMailboxSpace</code> <br> DatabaseSize - текущий размер базы <br> AvailableNewMailboxSpace - объём пустых страниц, пространство, которое можно освободить при дефрагментации <br> (DatabaseSize — AvailableNewMailboxSpace) x 1,1 - необходимо дополнительно иметь свободного места не менее 110% от текущего размера базы (без учета пустых страниц) <br> <code>cd $path</code> <br> <code>Dismount-Database "$path\$db_name"</code> отмонтировать БД <br> <code>eseutil /d "$path\$db_name.edb"</code> <br> <code>Mount-Database "$path\$db"</code> примонтировать БД</p>
<h3>DAG (Database Availability Group)</h3>
<p><code>Install-WindowsFeature -Name Failover-Clustering -ComputerName EXCH-MX-01</code> основывается на технологии Windows Server Failover Cluster <br> <code>New-DatabaseAvailabilityGroup -Name dag-01 -WitnessServer fs-05 -WitnessDirectory C:\witness_exchange1</code> создать группу с указанием файлового свидетеля для кворума <br> Quorum - это процесс голосования, в котором для принятия решения нужно иметь большинство голосов, что бы сделать текущую копию базы данных активной. <br> WitnessDirectory — используется для хранения данных файлового ресурса-свидетеля. <br> <code>Set-DatabaseAvailabilityGroup dag-01 –DatabaseAvailabilityGroupIPAdress $ip</code> изменить ip-адрес группы <br> <code>Get-DatabaseAvailabilityGroup</code> список всех групп <br> <code>Get-DatabaseAvailabilityGroup -Identity dag-01</code> <br> <code>Add-DatabaseAvailabilityGroupServer -Identity dag-01 -MailboxServer EXCH-MX-01</code> добавить первый сервер (все БД на серверах в DAG должны храниться по одинаковому пути) <br> <code>Add-MailboxDatabaseCopy -Identity db_name -MailboxServer EXCH-MX-04</code> добавить копию БД <br> <code>Get-MailboxDatabaseCopyStatus -Identity db_name\* | select Name,Status,LastInspectedLogTime</code> статус и время последнего копирования журнала транзакий</p>
<p>Status: <br> Mounted - рабочая база <br> Suspended - приостановлено копирование <br> Healthy - рабочая пассивная копия <br> ServiceDown - недоступна (выключен сервер) <br> Dismounted - отмонтирована <br> FailedAndSuspended - ошибка и приостановка копирования <br> Resynchronizing - процесс синхронизация, где будет постепенно уменьшаться длина очереди <br> CopyQueue Length - длина репликационной очереди копирования (0 - значит все изменения из активной базы реплицированы в пассивную копию)</p>
<p><code>Resume-MailboxDatabaseCopy -Identity db_name\EXCH-MX-04</code> возобновить (Resume) или запустить копирование бд на EXCH-MX-04 (из статуса Suspended в Healthy) <br> <code>Suspend-MailboxDatabaseCopy -Identity db_name\EXCH-MX-04</code> остановить копирование (в статус Suspended) <br> <code>Update-MailboxDatabaseCopy -Identity db_name\EXCH-MX-04 -DeleteExistingFiles</code> обновить копию БД (сделать Full Backup) <br> <code>Set-MailboxDatabaseCopy -Identity db_name\EXCH-MX-04 -ActivationPreference 1</code> изменить приоритет для активации копий БД (какую использовать, 1 – самое высокое значение) <br> <code>Move-ActiveMailboxDatabase db_name -ActivateOnServer EXCH-MX-04 -MountDialOverride:None -Confirm:$false</code> включить копию БД в DAG (переключиться на активную копию) <br> <code>Remove-MailboxDatabaseCopy -Identity db_name\EXCH-MX-04 -Confirm:$False</code> удалить копии пассивной базы в DAG-группе (у БД должно быть отключено ведение циклического журнала) <br> <code>Remove-DatabaseAvailabilityGroupServer -Identity dag-01 -MailboxServer EXCH-MX-04 -ConfigurationOnly</code> удалить MX сервер из группы DAG <br> <code>Import-Module FailoverClusters</code> <br> <code>Get-ClusterNode EXCH-MX-04 | Remove-ClusterNode -Force</code> удалить отказавший узел из Windows Failover Cluster</p>
<p><code>Get-DatabaseAvailabilityGroup | Get-DatabaseAvailabilityGroupHealth</code> мониторинг</p>
<h3>Index</h3>
<p><code>Get-MailboxDatabaseCopyStatus * | select name,status,ContentIndexState,ContentIndexErrorMessage,ActiveDatabaseCopy,LatestCopyBackupTime,CopyQueueLength</code> узнать состояние работы индксов БД и текст ошибки, на каком сервере активная копия БД, дата последней копии и текущая очередь <br> <code>Get-MailboxDatabaseCopyStatus -Identity $db_name\* | Format-List Name,ContentIndexState</code> отобразить список всех копий конкретной БД на всех серверах, и статус их индексов, если у второго сервера статус Healthy, можно восстановить из него <br> <code>Get-MailboxDatabaseCopyStatus -Identity $db_name\EXCH-MX-04 | Update-MailboxDatabaseCopy -SourceServer EXCH-MX-01 -CatalogOnly</code> восстановить БД из копии <br> <code>cd %PROGRAMFILES%\Microsoft\Exchange Server\V14\Scripts</code> или v15 для Exchange 2016 <br> <code>.\ResetSearchIndex.ps1 $db_name</code> скрипт восстановления индекса</p>
<p><code>Get-MailboxDatabaseCopyStatus * | where {$_.ContentIndexState -eq "Failed" -or $_.ContentIndexState -eq "FailedAndSuspended"}</code> отобразить у какой БД произошел сбой работы (FailedAndSuspended) или индекса (ContentIndexState)</p>
<h1>TrueNAS</h1>
<p><code>import-Module TrueNas</code> <br> <code>(Get-Module TrueNas).ExportedCommands</code> <br> <code>Connect-TrueNasServer -Server tnas-01 -SkipCertificateCheck</code> <br> <code>Get-TrueNasCertificate</code> настройки сертификата <br> <code>Get-TrueNasSetting</code> настройки языка, time zone, syslog level и server, https port <br> <code>Get-TrueNasUser</code> список пользователей <br> <code>Get-TrueNasSystemVersion</code> характеристики (Physical Memory, Model, Cores) и Uptime <br> <code>Get-TrueNasSystemAlert</code> snmp для оповещений <br> <code>Get-TrueNasSystemNTP</code> список используемых NTP серверов <br> <code>Get-TrueNasDisk</code> список разделов физического диска <br> <code>Get-TrueNasInterface</code> сетевые интерфейсы <br> <code>Get-TrueNasGlobalConfig</code> сетевые настройки <br> <code>Get-TrueNasDnsServer</code> настроенные DNS-сервера <br> <code>Get-TrueNasIscsiTarget</code> отобразить ID группы инициаторов использующих таргет, используемый portal, authentification и authen-method <br> <code>Get-TrueNasIscsiInitiator</code> отобразить группы инициаторов <br> <code>Get-TrueNasIscsiPortal</code> слушатель (Listen) и порт <br> <code>Get-TrueNasIscsiExtent</code> список ISCSi Target (статус работы, путь) <br> <code>Get-TrueNasPool</code> список pool (Id, Path, Status, Healthy) <br> <code>Get-TrueNasVolume -Type FILESYSTEM</code> список pool файловых систем <br> <code>Get-TrueNasVolume -Type VOLUME</code> список разделов в pool и их размер <br> <code>Get-TrueNasService | ft</code> список служб и их статус <br> <code>Start-TrueNasService ssh</code> запустить службу <br> <code>Stop-TrueNasService ssh</code> остановить службу</p>
<h1>Veeam</h1>
<p><code>Set-ExecutionPolicy AllSigned</code> or Set-ExecutionPolicy Bypass -Scope Process <br> <code>Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))</code> <br> <code>choco install veeam-backup-and-replication-console</code> <br> <code>Get-Module Veeam.Backup.PowerShell</code> <br> <code>Get-Command -Module Veeam.Backup.PowerShell</code> or Get-VBRCommand <br> <code>Connect-VBRServer -Server $srv -Credential $cred</code> or -User and -Password<code> - Port 9392</code> default <br> <code>Get-VBRJob</code> <br> <code>Get-VBRCommand *get*backup*</code> <br> <code>Get-VBRComputerBackupJob</code> <br> <code>Get-VBRBackup</code> <br> <code>Get-VBRBackupRepository</code> <br> <code>Get-VBRBackupSession</code> <br> <code>Get-VBRBackupServerCertificate</code> <br> <code>Get-VBRRestorePoint</code> <br> <code>Get-VBRViProxy</code></p>
<h1>REST API</h1>
<p><code>$iwr = Invoke-WebRequest -Uri $url</code> <br> <code>$iwr | Get-Member</code> <br> <code>$iwr.Content</code> <br> <code>$iwr.StatusCode -eq 200</code> <br> <code>$iwr.Headers</code> <br> <code>$iwr.ParsedHtml | Select lastModified</code> <br> <code>$iwr.Links | fl title,innerText,href</code> <br> <code>$iwr.Images.src</code></p>
<h3>Methods</h3>
<p><strong>GET</strong> - Read <br> <strong>POST</strong> - Create <br> <strong>PATCH</strong> - Partial update/modify <br> <strong>PUT</strong> - Update/replace <br> <strong>DELETE</strong> - Remove</p>
<h3>Download Image</h3>
<pre><code class="language-PowerShell">function Download-Image {
param (
[Parameter(Mandatory = $True)]$url
)
$folder = $url -replace "http.+://" -replace "/","-" -replace "-$"
$path = "$home\Pictures\$folder"
if (Test-Path $path) {
Remove-Item $path -Recurse -Force
New-Item -ItemType Directory $path > $null
} else {
New-Item -ItemType Directory $path > $null
}
$irm = Invoke-WebRequest -Uri $url
foreach ($img in $irm.Images.src) {
$name = $img -replace ".+/"
Start-Job {
Invoke-WebRequest $using:img -OutFile "$using:path\$using:name"
} > $null
}
while ($True){
$status_job = (Get-Job).State[-1]
if ($status_job -like "Completed"){
Get-Job | Remove-Job -Force
break
}}
$count_all = $irm.Images.src.Count
$count_down = (Get-Item $path\*).count
"Downloaded $count_down of $count_all files to $path"
}
</code></pre>
<p><code>Download-Image -url https://losst.pro/</code></p>
<h3>Token</h3>
<pre><code class="language-PowerShell">https://veeam-11:9419/swagger/ui/index.html
$Header = @{
"x-api-version" = "1.0-rev2"
}
$Body = @{
"grant_type" = "password"
"username" = "$login"
"password" = "$password"
}
$vpost = iwr "https://veeam-11:9419/api/oauth2/token" -Method POST -Headers $Header -Body $Body -SkipCertificateCheck
$vtoken = (($vpost.Content) -split '"')[3]
</code></pre>
<h3>GET</h3>
<pre><code class="language-PowerShell">$token = $vtoken | ConvertTo-SecureString -AsPlainText –Force
$vjob = iwr "https://veeam-11:9419/api/v1/jobs" -Method GET -Headers $Header -Authentication Bearer -Token $token -SkipCertificateCheck
$Header = @{
"x-api-version" = "1.0-rev1"
"Authorization" = "Bearer $vtoken"
}
$vjob = iwr "https://veeam-11:9419/api/v1/jobs" -Method GET -Headers $Header -SkipCertificateCheck
$vjob = $vjob.Content | ConvertFrom-Json
$vjob = Invoke-RestMethod "https://veeam-11:9419/api/v1/jobs" -Method GET -Headers $Header -SkipCertificateCheck
$vjob.data.virtualMachines.includes.inventoryObject
</code></pre>
<h1>Telegram</h1>
<p><code>@BotFather (https://t.me/BotFather) /newbot</code> <br> <code>https://api.telegram.org/bot<token>/<endpoint></code></p>
<pre><code class="language-PowerShell">function Get-FromTelegram {
param (
$token = "687...:AAF...",
[switch]$last,
[switch]$date
)
$endpoint = "getUpdates"
$url = "https://api.telegram.org/bot$token/$endpoint"
$result = Invoke-RestMethod -Uri $url
if ($date) {
$Collections = New-Object System.Collections.Generic.List[System.Object]
foreach ($r in $($result.result)) {
$EpochTime = [DateTime]"1/1/1970"
$TimeZone = Get-TimeZone
$UTCTime = $EpochTime.AddSeconds($r.message.date)
$d = $UTCTime.AddMinutes($TimeZone.BaseUtcOffset.TotalMinutes)
#$d
$Collections.Add([PSCustomObject]@{
Message = $r.message.text;
Date = $d
})
}
$Collections
} else {
if ($last) {
$result.result.message.text[-1] # прочитать последнее сообщение
} else {
$result.result.message.text
}
#$result.result.message.chat.id[-1] # получить индивидуальный chat_id с ботом
}
}
</code></pre>
<p><code>Get-FromTelegram</code> <br> <code>Get-FromTelegram -last</code> <br> <code>Get-FromTelegram -date</code></p>
<p><a href="https://core.telegram.org/bots/api#sendmessage">https://core.telegram.org/bots/api#sendmessage</a></p>
<pre><code class="language-PowerShell">function Send-ToTelegram {
param (
[Parameter(Mandatory = $True)]$Text,
$token = "687...:AAF...",
$chat = "125468108"
)
$endpoint = "sendMessage"
$url = "https://api.telegram.org/bot$token/$endpoint"
$Body = @{
chat_id = $Chat
text = $Text
}
Invoke-RestMethod -Uri $url -Body $Body
}
</code></pre>
<p><code>Send-ToTelegram -Text "Send test from powershell"</code></p>
<pre><code class="language-PowerShell">$LastDate = (Get-FromTelegram -date)[-1].Date
while ($true) {
$LastMessage = (Get-FromTelegram -date)[-1]
Start-Sleep 1
$LastDateTest = $LastMessage.Date
if (($LastMessage.Message -match "/Service") -and ($LastDate -ne $LastDateTest)) {
$ServiceName = $($LastMessage.Message -split " ")[-1]
$Result = $(Get-Service $ServiceName -ErrorAction Ignore).Status
if ($Result) {
Send-ToTelegram -Text $Result
} else {
Send-ToTelegram -Text "Service not found"
}
$LastDate = $LastDateTest
}
}
</code></pre>
<p><code>/Service vpnagent</code> <br> <code>/Service WinRM</code> <br> <code>/Service test</code></p>
<h1>Pode</h1>
<pre><code class="language-PowerShell">Start-PodeServer {
Add-PodeEndpoint -Address localhost -Port "8080" -Protocol "HTTP"
### Get info endpoints
Add-PodeRoute -Path "/" -Method "GET" -ScriptBlock {
Write-PodeJsonResponse -Value @{
"service"="/api/service";
"process"="/api/process"
}
}
### GET
Add-PodeRoute -Path "/api/service" -Method "GET" -ScriptBlock {
Write-PodeJsonResponse -Value $(
Get-Service | Select-Object Name,@{
Name="Status"; Expression={[string]$_.Status}
},@{
Name="StartType"; Expression={[string]$_.StartType}
} | ConvertTo-Json
)
}
Add-PodeRoute -Path "/api/process" -Method "GET" -ScriptBlock {
Write-PodeJsonResponse -Value $(
Get-Process | Sort-Object -Descending CPU | Select-Object -First 15 ProcessName,
@{Name="ProcessorTime"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
@{Name="Memory"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}}
)
}
Add-PodeRoute -Path "/api/process-html" -Method "GET" -ScriptBlock {
Write-PodeHtmlResponse -Value (
Get-Process | Sort-Object -Descending CPU | Select-Object -First 15 ProcessName,
@{Name="ProcessorTime"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
@{Name="Memory"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}} # Auto ConvertTo-Html
)
}
### POST
Add-PodeRoute -Path "/api/service" -Method "POST" -ScriptBlock {
# https://pode.readthedocs.io/en/latest/Tutorials/WebEvent/
# $WebEvent | Out-Default
$Value = $WebEvent.Data["ServiceName"]
$Status = (Get-Service -Name $Value).Status
Write-PodeJsonResponse -Value @{
"Name"="$Value";
"Status"="$Status";
}
}
}
</code></pre>
<p><code>irm http://localhost:8080/api/service -Method Get</code> <br> <code>irm http://localhost:8080/api/process -Method Get</code> <br> <code>http://localhost:8080/api/process-html</code> использовать браузер <br> <code>irm http://localhost:8080/api/service -Method Post -Body @{"ServiceName" = "AnyDesk"}</code></p>
<h1>Selenium</h1>
<p><code>Invoke-Expression(New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/Lifailon/Deploy-Selenium/rsa/Deploy-Selenium-Drivers.ps1")</code> установка всех драйверов и Chromium подходящей версии для драйвера</p>
<pre><code class="language-PowerShell">$path = "$home\Documents\Selenium\"
$ChromeDriver = "$path\ChromeDriver.exe"
$WebDriver = "$path\WebDriver.dll"
$SupportDriver = "$path\WebDriver.Support.dll"
$Chromium = (Get-ChildItem $path -Recurse | Where-Object Name -like chrome.exe).FullName
Add-Type -Path $WebDriver
Add-Type -Path $SupportDriver
try {
$ChromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$ChromeOptions.BinaryLocation = $Chromium
$ChromeOptions.AddArgument("start-maximized")
$ChromeOptions.AcceptInsecureCertificates = $True
$Selenium = New-Object OpenQA.Selenium.Chrome.ChromeDriver($ChromeDriver, $ChromeOptions)
$Selenium.Navigate().GoToUrl("https://translate.google.la/")
$buttons = $selenium.FindElements([OpenQA.Selenium.By]::TagName('button')) # найти все элементы по TagName
$buttons = $selenium.FindElements([OpenQA.Selenium.By]::CssSelector('button')) # найти все Button используя CSS selector
$Image = $buttons | Where-Object Text -Match "Изображения" # отфильтровать элементы по Label или Text
$Image.Click() # нажать на Button
$Text = $buttons | Where-Object Text -Match "Текст"
$Text.Click()
$textarea = $Selenium.FindElements([OpenQA.Selenium.By]::TagName("textarea")) # найти все элементы с тэгом textarea
$textarea.Count # количество найденных элементов
$text1 = $textarea | Where-Object ComputedAccessibleLabel -like "Исходный текст" # отфильтровать по Lable
$text1 = $textarea | Where-Object ComputedAccessibleRole -like combobox # отфильтровать по роли
$text1 = $selenium.FindElements([OpenQA.Selenium.By]::ClassName("er8xn")) # найти элемент по имени класса (class="")
$text1.SendKeys("Hello") # ввести текст в поле
Start-Sleep 1
$text2 = $selenium.FindElements([OpenQA.Selenium.By]::ClassName("ryNqvb"))
$out = $text2.Text # получить результат перевода из второго textarea
Write-Host $out -ForegroundColor Green
}
finally {
$Selenium.Close()
$Selenium.Quit()
}
</code></pre>
<h1>IE</h1>
<p><code>$ie.document.IHTMLDocument3_getElementsByTagName("input") | select name</code> получить имена всех Input Box <br> <code>$ie.document.IHTMLDocument3_getElementsByTagName("button") | select innerText</code> получить имена всех Button <br> <code>$ie.Document.documentElement.innerHTML</code> прочитать сырой Web Content (<input name="login" tabindex="100" class="input__control input__input" id="uniq32005644019429136" spellcheck="false" placeholder="Логин") <br> <code>$All_Elements = $ie.document.IHTMLDocument3_getElementsByTagName("*")</code> забрать все элементы <br> <code>$Go_Button = $All_Elements | ? innerText -like "go"</code> поиск элемента по имени <br> <code>$Go_Button | select ie9_tagName</code> получить TagName (SPAN) для быстрого дальнейшего поиска <br> <code>$SPAN_Elements = $ie.document.IHTMLDocument3_getElementsByTagName("SPAN")</code></p>
<pre><code class="language-PowerShell">$ie = New-Object -ComObject InternetExplorer.Application
$ie.navigate("https://yandex.ru")
$ie.visible = $true
$ie.document.IHTMLDocument3_getElementByID("login").value = "Login"
$ie.document.IHTMLDocument3_getElementByID("passwd").value = "Password"
$Button_Auth = ($ie.document.IHTMLDocument3_getElementsByTagName("button")) | ? innerText -match "Войти"
$Button_Auth.Click()
$Result = $ie.Document.documentElement.innerHTML
$ie.Quit()
</code></pre>
<h1>COM</h1>
<p><code>$wshell = New-Object -ComObject Wscript.Shell</code> <br> <code>$wshell | Get-Member</code> <br> <code>$link = $wshell.CreateShortcut("$Home\Desktop\Yandex.lnk")</code> создать ярлык <br> <code>$link | Get-Member</code> <br> <code>$link.TargetPath = "https://yandex.ru"</code> куда ссылается (метод TargetPath объекта $link где хранится объект CreateShortcut) <br> <code>$link.Save()</code> сохранить</p>
<p><code>Set-WinUserLanguageList -LanguageList en-us,ru -Force</code> изменить языковую раскладку клавиатуры</p>
<h3>Wscript.Shell.SendKeys</h3>
<p><code>(New-Object -ComObject Wscript.shell).SendKeys([char]173)</code> включить/выключить звук <br> <code>$wshell.Exec("notepad.exe")</code> запустить приложение <br> <code>$wshell.AppActivate("Блокнот")</code> развернуть запущенное приложение</p>
<p><code>$wshell.SendKeys("Login")</code> текст <br> <code>$wshell.SendKeys("{A 5}")</code> напечатать букву 5 раз подряд <br> <code>$wshell.SendKeys("%{TAB}")</code> ALT+TAB <br> <code>$wshell.SendKeys("^")</code> CTRL <br> <code>$wshell.SendKeys("%")</code> ALT <br> <code>$wshell.SendKeys("+")</code> SHIFT <br> <code>$wshell.SendKeys("{DOWN}")</code> вниз <br> <code>$wshell.SendKeys("{UP}")</code> вверх <br> <code>$wshell.SendKeys("{LEFT}")</code> влево <br> <code>$wshell.SendKeys("{RIGHT}")</code> вправо <br> <code>$wshell.SendKeys("{PGUP}")</code> PAGE UP <br> <code>$wshell.SendKeys("{PGDN}")</code> PAGE DOWN <br> <code>$wshell.SendKeys("{BACKSPACE}")</code> BACKSPACE/BKSP/BS <br> <code>$wshell.SendKeys("{DEL}")</code> DEL/DELETE <br> <code>$wshell.SendKeys("{INS}")</code> INS/INSERT <br> <code>$wshell.SendKeys("{PRTSC}")</code> PRINT SCREEN <br> <code>$wshell.SendKeys("{ENTER}")</code> <br> <code>$wshell.SendKeys("{ESC}")</code> <br> <code>$wshell.SendKeys("{TAB}")</code> <br> <code>$wshell.SendKeys("{END}")</code> <br> <code>$wshell.SendKeys("{HOME}")</code> <br> <code>$wshell.SendKeys("{BREAK}")</code> <br> <code>$wshell.SendKeys("{SCROLLLOCK}")</code> <br> <code>$wshell.SendKeys("{CAPSLOCK}")</code> <br> <code>$wshell.SendKeys("{NUMLOCK}")</code> <br> <code>$wshell.SendKeys("{F1}")</code> <br> <code>$wshell.SendKeys("{F12}")</code> <br> <code>$wshell.SendKeys("{+}{^}{%}{~}{(}{)}{[}{]}{{}{}}")</code></p>
<pre><code class="language-PowerShell">function Get-AltTab {
(New-Object -ComObject wscript.shell).SendKeys("%{Tab}")
Start-Sleep $(Get-Random -Minimum 30 -Maximum 180)
Get-AltTab
}
Get-AltTab
</code></pre>
<h3>Wscript.Shell.Popup</h3>
<p><code>$wshell = New-Object -ComObject Wscript.Shell</code> <br> <code>$output = $wshell.Popup("Выберите действие?",0,"Заголовок",4)</code> <br> <code>if ($output -eq 6) {"yes"} elseif ($output -eq 7) {"no"} else {"no good"}</code></p>
<pre><code>Type:
0 ОК
1 ОК и Отмена
2 Стоп, Повтор, Пропустить
3 Да, Нет, Отмена
4 Да и Нет
5 Повтор и Отмена
16 Stop
32 Question
48 Exclamation
64 Information
Output:
-1 Timeout
1 ОК
2 Отмена
3 Стоп
4 Повтор
5 Пропустить
6 Да
7 Нет
</code></pre>
<h3>WScript.Network</h3>
<p><code>$wshell = New-Object -ComObject WScript.Network</code> <br> <code>$wshell | Get-Member</code> <br> <code>$wshell.UserName</code> <br> <code>$wshell.ComputerName</code> <br> <code>$wshell.UserDomain</code></p>
<h3>Shell.Application</h3>
<p><code>$wshell = New-Object -ComObject Shell.Application</code> <br> <code>$wshell | Get-Member</code> <br> <code>$wshell.Explore("C:\")</code> <br> <code>$wshell.Windows() | Get-Member</code> получить доступ к открытым в проводнике или браузере Internet Explorer окон</p>
<p><code>$shell = New-Object -Com Shell.Application</code> <br> <code>$RecycleBin = $shell.Namespace(10)</code> <br> <code>$RecycleBin.Items()</code></p>
<h3>Outlook</h3>
<p><code>$Outlook = New-Object -ComObject Outlook.Application</code> <br> <code>$Outlook | Get-Member</code> <br> <code>$Outlook.Version</code></p>
<pre><code class="language-PowerShell">$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")
$Folder = $namespace.GetDefaultFolder(4)` исходящие
$Folder = $namespace.GetDefaultFolder(6)` входящие
$Explorer = $Folder.GetExplorer()
$Explorer.Display()
$Outlook.Quit()
</code></pre>
<h3>Microsoft.Update</h3>
<p><code>(New-Object -com 'Microsoft.Update.AutoUpdate').Settings</code> <br> <code>(New-Object -com 'Microsoft.Update.AutoUpdate').Results</code> <br> <code>(New-Timespan -Start ((New-Object -com 'Microsoft.Update.AutoUpdate').Results|Select -ExpandProperty LastInstallationSuccessDate) -End (Get-Date)).hours</code> кол-во часов, прошедших с последней даты установки обновления безопасности в Windows.</p>
<h1>dotNET</h1>
<p><code>[System.Diagnostics.EventLog] | select Assembly,Module</code> <br> <code>$EventLog = [System.Diagnostics.EventLog]::new("Application")</code> <br> <code>$EventLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application,192.168.3.100</code> <br> <code>$EventLog | Get-Member -MemberType Method</code> <br> <code>$EventLog.MaximumKilobytes</code> максимальный размер журнала <br> <code>$EventLog.Entries</code> просмотреть журнал <br> <code>$EventLog.Clear()</code> очистить журнал</p>
<p><code>Join-Path C: Install Test</code> <br> <code>[System.IO.Path]::Combine("C:", "Install", "Test")</code></p>
<h3>Match</h3>
<p><code>[System.Math] | Get-Member -Static -MemberType Methods</code> <br> <code>[System.Math]::Max(2,7)</code> <br> <code>[System.Math]::Min(2,7)</code> <br> <code>[System.Math]::Floor(3.9)</code> <br> <code>[System.Math]::Truncate(3.9)</code></p>
<h3>GeneratePassword</h3>
<p><code>Add-Type -AssemblyName System.Web</code> <br> <code>[System.Web.Security.Membership]::GeneratePassword(10,2)</code></p>
<h3>SoundPlayer</h3>
<pre><code class="language-PowerShell">$CriticalSound = New-Object System.Media.SoundPlayer
$CriticalSound.SoundLocation = "C:\WINDOWS\Media\Windows Critical Stop.wav"
$CriticalSound.Play()
$GoodSound = New-Object System.Media.SoundPlayer
$GoodSound.SoundLocation = "C:\WINDOWS\Media\tada.wav"
$GoodSound.Play()
</code></pre>
<h3>Static Class</h3>
<p><code>[System.Environment] | Get-Member -Static</code> <br> <code>[System.Environment]::OSVersion</code> <br> <code>[System.Environment]::Version</code> <br> <code>[System.Environment]::MachineName</code> <br> <code>[System.Environment]::UserName</code></p>
<p><code>[System.Diagnostics.Process] | Get-Member -Static</code> <br> <code>[System.Diagnostics.Process]::Start('notepad.exe')</code></p>
<h3>[Clicker]</h3>
<pre><code class="language-PowerShell">$cSource = @'
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public class Clicker
{
//https://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx
[StructLayout(LayoutKind.Sequential)]
struct INPUT
{
public int type; // 0 = INPUT_MOUSE,
// 1 = INPUT_KEYBOARD
// 2 = INPUT_HARDWARE
public MOUSEINPUT mi;
}
//https://msdn.microsoft.com/en-us/library/windows/desktop/ms646273(v=vs.85).aspx
[StructLayout(LayoutKind.Sequential)]
struct MOUSEINPUT
{
public int dx ;
public int dy ;
public int mouseData ;
public int dwFlags;
public int time;
public IntPtr dwExtraInfo;
}
//This covers most use cases although complex mice may have additional buttons
//There are additional constants you can use for those cases, see the msdn page
const int MOUSEEVENTF_MOVED = 0x0001 ;
const int MOUSEEVENTF_LEFTDOWN = 0x0002 ;
const int MOUSEEVENTF_LEFTUP = 0x0004 ;
const int MOUSEEVENTF_RIGHTDOWN = 0x0008 ;
const int MOUSEEVENTF_RIGHTUP = 0x0010 ;
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020 ;
const int MOUSEEVENTF_MIDDLEUP = 0x0040 ;
const int MOUSEEVENTF_WHEEL = 0x0080 ;
const int MOUSEEVENTF_XDOWN = 0x0100 ;
const int MOUSEEVENTF_XUP = 0x0200 ;
const int MOUSEEVENTF_ABSOLUTE = 0x8000 ;
const int screen_length = 0x10000 ;
//https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx
[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
public static void LeftClickAtPoint(int x, int y)
{
//Move the mouse
INPUT[] input = new INPUT[3];
input[0].mi.dx = x*(65535/System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width);
input[0].mi.dy = y*(65535/System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
input[0].mi.dwFlags = MOUSEEVENTF_MOVED | MOUSEEVENTF_ABSOLUTE;
//Left mouse button down
input[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
//Left mouse button up
input[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(3, input, Marshal.SizeOf(input[0]));
}
}
'@
</code></pre>
<p><code>Add-Type -TypeDefinition $cSource -ReferencedAssemblies System.Windows.Forms,System.Drawing</code> <br> <code>[Clicker]::LeftClickAtPoint(1900,1070)</code></p>
<h3>[Audio]</h3>
<pre><code class="language-PowerShell">Add-Type -Language CsharpVersion3 -TypeDefinition @"
using System.Runtime.InteropServices;
[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IAudioEndpointVolume {
// f(), g(), ... are unused COM method slots. Define these if you care
int f(); int g(); int h(); int i();
int SetMasterVolumeLevelScalar(float fLevel, System.Guid pguidEventContext);
int j();
int GetMasterVolumeLevelScalar(out float pfLevel);
int k(); int l(); int m(); int n();
int SetMute([MarshalAs(UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext);
int GetMute(out bool pbMute);
}
[Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMMDevice {
int Activate(ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);
}
[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMMDeviceEnumerator {
int f(); // Unused
int GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice endpoint);
}
[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject { }
public class Audio {
static IAudioEndpointVolume Vol() {
var enumerator = new MMDeviceEnumeratorComObject() as IMMDeviceEnumerator;
IMMDevice dev = null;
Marshal.ThrowExceptionForHR(enumerator.GetDefaultAudioEndpoint(/*eRender*/ 0, /*eMultimedia*/ 1, out dev));
IAudioEndpointVolume epv = null;
var epvid = typeof(IAudioEndpointVolume).GUID;
Marshal.ThrowExceptionForHR(dev.Activate(ref epvid, /*CLSCTX_ALL*/ 23, 0, out epv));
return epv;
}
public static float Volume {
get {float v = -1; Marshal.ThrowExceptionForHR(Vol().GetMasterVolumeLevelScalar(out v)); return v;}
set {Marshal.ThrowExceptionForHR(Vol().SetMasterVolumeLevelScalar(value, System.Guid.Empty));}
}
public static bool Mute {
get { bool mute; Marshal.ThrowExceptionForHR(Vol().GetMute(out mute)); return mute; }
set { Marshal.ThrowExceptionForHR(Vol().SetMute(value, System.Guid.Empty)); }
}
}
"@
</code></pre>
<p><code>[Audio]::Volume = 0.50</code> <br> <code>[Audio]::Mute = $true</code></p>
<h3>NetSessionEnum</h3>
<p>Function: <a href="https://learn.microsoft.com/ru-ru/windows/win32/api/lmshare/nf-lmshare-netsessionenum?redirectedfrom=MSDN">https://learn.microsoft.com/ru-ru/windows/win32/api/lmshare/nf-lmshare-netsessionenum?redirectedfrom=MSDN</a> <br> Source: <a href="https://fuzzysecurity.com/tutorials/24.html">https://fuzzysecurity.com/tutorials/24.html</a></p>
<pre><code class="language-PowerShell">function Invoke-NetSessionEnum {
param (
[Parameter(Mandatory = $True)][string]$HostName
)
Add-Type -TypeDefinition @"
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public struct SESSION_INFO_10
{
[MarshalAs(UnmanagedType.LPWStr)]public string OriginatingHost;
[MarshalAs(UnmanagedType.LPWStr)]public string DomainUser;
public uint SessionTime;
public uint IdleTime;
}
public static class Netapi32
{
[DllImport("Netapi32.dll", SetLastError=true)]
public static extern int NetSessionEnum(
[In,MarshalAs(UnmanagedType.LPWStr)] string ServerName,
[In,MarshalAs(UnmanagedType.LPWStr)] string UncClientName,
[In,MarshalAs(UnmanagedType.LPWStr)] string UserName,
Int32 Level,
out IntPtr bufptr,
int prefmaxlen,
ref Int32 entriesread,
ref Int32 totalentries,
ref Int32 resume_handle);
[DllImport("Netapi32.dll", SetLastError=true)]
public static extern int NetApiBufferFree(
IntPtr Buffer);
}
"@
# Create SessionInfo10 Struct
$SessionInfo10 = New-Object SESSION_INFO_10
$SessionInfo10StructSize = [System.Runtime.InteropServices.Marshal]::SizeOf($SessionInfo10)` Grab size to loop bufptr
$SessionInfo10 = $SessionInfo10.GetType()` Hacky, but we need this ;))
# NetSessionEnum params
$OutBuffPtr = [IntPtr]::Zero` Struct output buffer
$EntriesRead = $TotalEntries = $ResumeHandle = 0` Counters & ResumeHandle
$CallResult = [Netapi32]::NetSessionEnum($HostName, "", "", 10, [ref]$OutBuffPtr, -1, [ref]$EntriesRead, [ref]$TotalEntries, [ref]$ResumeHandle)
if ($CallResult -ne 0){
echo "Mmm something went wrong!`nError Code: $CallResult"
}
else {
if ([System.IntPtr]::Size -eq 4) {
echo "`nNetapi32::NetSessionEnum Buffer Offset --> 0x$("{0:X8}" -f $OutBuffPtr.ToInt32())"
}
else {
echo "`nNetapi32::NetSessionEnum Buffer Offset --> 0x$("{0:X16}" -f $OutBuffPtr.ToInt64())"
}
echo "Result-set contains $EntriesRead session(s)!"
# Change buffer offset to int
$BufferOffset = $OutBuffPtr.ToInt64()
# Loop buffer entries and cast pointers as SessionInfo10
for ($Count = 0; ($Count -lt $EntriesRead); $Count++){
$NewIntPtr = New-Object System.Intptr -ArgumentList $BufferOffset
$Info = [system.runtime.interopservices.marshal]::PtrToStructure($NewIntPtr,[type]$SessionInfo10)
$Info
$BufferOffset = $BufferOffset + $SessionInfo10StructSize
}
echo "`nCalling NetApiBufferFree, no memleaks here!"
[Netapi32]::NetApiBufferFree($OutBuffPtr) |Out-Null
}
}
</code></pre>
<p><code>Invoke-NetSessionEnum localhost</code></p>
<h3>CopyFile</h3>
<p>Function: <a href="https://learn.microsoft.com/ru-ru/windows/win32/api/winbase/nf-winbase-copyfile">https://learn.microsoft.com/ru-ru/windows/win32/api/winbase/nf-winbase-copyfile</a> <br> Source: <a href="https://devblogs.microsoft.com/scripting/use-powershell-to-interact-with-the-windows-api-part-1/">https://devblogs.microsoft.com/scripting/use-powershell-to-interact-with-the-windows-api-part-1/</a></p>
<pre><code class="language-PowerShell">$MethodDefinition = @"
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern bool CopyFile(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);
"@
$Kernel32 = Add-Type -MemberDefinition $MethodDefinition -Name "Kernel32" -Namespace "Win32" -PassThru
$Kernel32::CopyFile("$($Env:SystemRoot)\System32\calc.exe", "$($Env:USERPROFILE)\Desktop\calc.exe", $False)
</code></pre>
<h3>ShowWindowAsync</h3>
<p>Function: <a href="https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-showwindowasync">https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-showwindowasync</a></p>
<pre><code class="language-PowerShell">$Signature = @"
[DllImport("user32.dll")]public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
"@
$ShowWindowAsync = Add-Type -MemberDefinition $Signature -Name "Win32ShowWindowAsync" -Namespace Win32Functions -PassThru
$ShowWindowAsync | Get-Member -Static
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $pid).MainWindowHandle, 2)
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $Pid).MainWindowHandle, 3)
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $Pid).MainWindowHandle, 4)
</code></pre>
<h3>GetAsyncKeyState</h3>
<p>Function: <a href="https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-getasynckeystate">https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-getasynckeystate</a></p>
<p><code>Add-Type -AssemblyName System.Windows.Forms</code> <br> <code>[int][System.Windows.Forms.Keys]::F1</code> определить номер [Int] клавиши по ее названию <br> <code>65..90 | % {"{0} = {1}" -f $_, [System.Windows.Forms.Keys]$_}</code> порядковый номер букв (A..Z)</p>
<pre><code class="language-PowerShell">function Get-ControlKey {
$key = 112
$Signature = @'
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern short GetAsyncKeyState(int virtualKeyCode);
'@
Add-Type -MemberDefinition $Signature -Name Keyboard -Namespace PsOneApi
[bool]([PsOneApi.Keyboard]::GetAsyncKeyState($key) -eq -32767)
}
Write-Warning 'Press F1 to exit'
while ($true) {
Write-Host '.' -NoNewline
if (Get-ControlKey) {
break
}
Start-Sleep -Seconds 0.5
}
</code></pre>
<h1>Console API</h1>
<p>Source: <a href="https://powershell.one/tricks/input-devices/detect-key-press">https://powershell.one/tricks/input-devices/detect-key-press</a></p>
<p><code>[Console] | Get-Member -Static</code> <br> <code>[Console]::BackgroundColor = "Blue"</code> <br> <code>[Console]::OutputEncoding</code> используемая кодировка в текущей сессии <br> <code>[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("utf-8")</code> изменить кодировку для отображения кириллицы <br> <code>[Console]::outputEncoding = [System.Text.Encoding]::GetEncoding("cp866")</code> для ISE <br> <code>[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("windows-1251")</code> для ps2exe <br> <code>Get-Service | Out-File $home\Desktop\Service.txt -Encoding oem</code> > <br> <code>Get-Service | Out-File $home\Desktop\Service.txt -Append</code> >></p>
<pre><code class="language-PowerShell">do {
if ([Console]::KeyAvailable) {
$keyInfo = [Console]::ReadKey($true)
break
}
Write-Host "." -NoNewline
sleep 1
} while ($true)
Write-Host
$keyInfo
function Get-KeyPress {
param (
[Parameter(Mandatory)][ConsoleKey]$Key,
[System.ConsoleModifiers]$ModifierKey = 0
)
if ([Console]::KeyAvailable) {
$pressedKey = [Console]::ReadKey($true)
$isPressedKey = $key -eq $pressedKey.Key
if ($isPressedKey) {
$pressedKey.Modifiers -eq $ModifierKey
} else {
[Console]::Beep(1800, 200)
$false
}}}
Write-Warning 'Press Ctrl+Shift+Q to exit'
do {
Write-Host "." -NoNewline
$pressed = Get-KeyPress -Key Q -ModifierKey 'Control,Shift'
if ($pressed) {break}
sleep 1
} while ($true)
</code></pre>
<h1>Drawing</h1>
<p>API: <a href="https://learn.microsoft.com/en-us/dotnet/api/system.drawing?view=net-7.0&redirectedfrom=MSDN">https://learn.microsoft.com/en-us/dotnet/api/system.drawing?view=net-7.0&redirectedfrom=MSDN</a></p>
<pre><code class="language-PowerShell">Add-Type -AssemblyName System.Drawing
$Width = 800
$Height = 400
$image = New-Object System.Drawing.Bitmap($Width,$Height)
$graphic = [System.Drawing.Graphics]::FromImage($image)
$background_color = [System.Drawing.Brushes]::Blue # задать цвет фона (синий)
$graphic.FillRectangle($background_color, 0, 0, $image.Width, $image.Height)
$text_color = [System.Drawing.Brushes]::White # задать цвет текста (белый)
$font = New-Object System.Drawing.Font("Arial", 20, [System.Drawing.FontStyle]::Bold) # задать шрифт
$text = "PowerShell" # указать текст
$text_position = New-Object System.Drawing.RectangleF(320, 180, 300, 100) # задать положение текста (x, y, width, height)
$graphic.DrawString($text, $font, $text_color, $text_position) # нанести текст на изображение
$image.Save("$home\desktop\powershell_image.bmp", [System.Drawing.Imaging.ImageFormat]::Bmp) # сохранить изображение
$image.Dispose() # освобождение ресурсов
</code></pre>
<p><code>$path = "$home\desktop\powershell_image.bmp"</code> <br> <code>Invoke-Item $path</code></p>
<pre><code class="language-PowerShell">$src_image = [System.Drawing.Image]::FromFile($path)
$Width = 400
$Height = 200
$dst_image = New-Object System.Drawing.Bitmap -ArgumentList $src_image, $Width, $Height # изменить размер изображения
$dst_image.Save("$home\desktop\powershell_image_resize.bmp", [System.Drawing.Imaging.ImageFormat]::Bmp)
$rotated_image = $src_image.Clone() # создать копию исходного изображения
$rotated_image.RotateFlip([System.Drawing.RotateFlipType]::Rotate180FlipNone) # перевернуть изображение на 180 градусов
$rotated_image.Save("$home\desktop\powershell_image_rotated.bmp", [System.Drawing.Imaging.ImageFormat]::Bmp)
$src_image.Dispose() # закрыть (отпустить) исходный файл
</code></pre>
<h1>ObjectEvent</h1>
<pre><code class="language-PowerShell">$Timer = New-Object System.Timers.Timer
$Timer.Interval = 1000
Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Output -Action {
$Random = Get-Random -Min 0 -Max 100
Write-Host $Random
}
$Timer.Enabled = $True
</code></pre>
<p><code>$Timer.Enabled = $False</code> остановить <br> <code>$Timer | Get-Member -MemberType Event</code> отобразить список всех событий объекта <br> <code>Get-EventSubscriber</code> список зарегистрированных подписок на события в текущей сессии <br> <code>Unregister-Event -SourceIdentifier Timer.Output</code> удаляет регистрацию подписки на событие по имени события (EventName) или все * <br> <code>-Forward</code> перенаправляет события из удаленного сеанса (New-PSSession) в локальный сеанс <br> <code>-SupportEvent</code> не выводит результат регистрации события на экран (и Get-EventSubscriber и Get-Job)</p>
<pre><code>Register-EngineEvent -SourceIdentifier PowerShell.Exiting -Action {
$date = Get-Date -f hh:mm:ss
(New-Object -ComObject Wscript.Shell).Popup("PowerShell Exit: $date",0,"Action",64)
}
</code></pre>
<h1>Sockets</h1>
<h3>UDP Socket</h3>
<p>Source: <a href="https://cloudbrothers.info/en/test-udp-connection-powershell/">https://cloudbrothers.info/en/test-udp-connection-powershell/</a></p>
<pre><code class="language-PowerShell">function Start-UDPServer {
param(
$Port = 5201
)
$RemoteComputer = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Any, 0)
do {
$UdpObject = New-Object System.Net.Sockets.UdpClient($Port)
$ReceiveBytes = $UdpObject.Receive([ref]$RemoteComputer)
$UdpObject.Close()
$ASCIIEncoding = New-Object System.Text.ASCIIEncoding
[string]$ReturnString = $ASCIIEncoding.GetString($ReceiveBytes)
[PSCustomObject]@{
LocalDateTime = $(Get-Date -UFormat "%Y-%m-%d %T")
ClientIP = $RemoteComputer.address.ToString()
ClientPort = $RemoteComputer.Port.ToString()
Message = $ReturnString
}
} while (1)
}
</code></pre>
<p><code>Start-UDPServer -Port 5201</code></p>
<h3>Test-NetUDPConnection</h3>
<pre><code class="language-PowerShell">function Test-NetUDPConnection {
param(
[string]$ComputerName = "127.0.0.1",
[int32]$PortServer = 5201,
[int32]$PortClient = 5211,
$Message
)
begin {
$UdpObject = New-Object system.Net.Sockets.Udpclient($PortClient)
$UdpObject.Connect($ComputerName, $PortServer)
}
process {
$ASCIIEncoding = New-Object System.Text.ASCIIEncoding
if (!$Message) {$Message = Get-Date -UFormat "%Y-%m-%d %T"}
$Bytes = $ASCIIEncoding.GetBytes($Message)
[void]$UdpObject.Send($Bytes, $Bytes.length)
}
end {
$UdpObject.Close()
}
}
</code></pre>
<p><code>Test-NetUDPConnection -ComputerName 127.0.0.1 -PortServer 5201</code> <br> <code>Test-NetUDPConnection -ComputerName 127.0.0.1 -PortServer 514 -Message "<30>May 31 00:00:00 HostName multipathd[784]: Test message"</code></p>
<h3>TCP Socket</h3>
<pre><code class="language-PowerShell">function Start-TCPServer {
param(
$Port = 5201
)
do {
$TcpObject = New-Object System.Net.Sockets.TcpListener($port)
$ReceiveBytes = $TcpObject.Start()
$ReceiveBytes = $TcpObject.AcceptTcpClient()
$TcpObject.Stop()
$ReceiveBytes.Client.RemoteEndPoint | select Address,Port
} while (1)
}
</code></pre>
<p><code>Start-TCPServer -Port 5201</code> <br> <code>Test-NetConnection -ComputerName 127.0.0.1 -Port 5201</code></p>
<h3>WakeOnLan</h3>
<p>Broadcast package consisting of 6 byte filled "0xFF" and then 96 byte where the mac address is repeated 16 times</p>
<pre><code class="language-PowerShell">function Send-WOL {
param (
[Parameter(Mandatory = $True)]$Mac,
$IP,
[int]$Port = 9
)
$Mac = $Mac.replace(":", "-")
if (!$IP) {$IP = [System.Net.IPAddress]::Broadcast}
$SynchronizationChain = [byte[]](,0xFF * 6)
$ByteMac = $Mac.Split("-") | %{[byte]("0x" + $_)}
$Package = $SynchronizationChain + ($ByteMac * 16)
$UdpClient = New-Object System.Net.Sockets.UdpClient
$UdpClient.Connect($IP, $port)
$UdpClient.Send($Package, $Package.Length)
$UdpClient.Close()
}
</code></pre>
<p><code>Send-WOL -Mac "D8-BB-C1-70-A3-4E"</code> <br> <code>Send-WOL -Mac "D8-BB-C1-70-A3-4E" -IP 192.168.3.100</code></p>
<h3>Encoding</h3>
<p><code>$ByteText = [System.Text.Encoding]::UTF8.GetBytes("password")</code> <br> <code>$Text = [System.Text.Encoding]::UTF8.GetString($ByteText)</code></p>
<h3>Base64</h3>
<p><code>$text = "password"</code> <br> <code>$byte = [System.Text.Encoding]::Unicode.GetBytes($text)</code> <br> <code>$base64 = [System.Convert]::ToBase64String($byte)</code> <br> <code>$decode_base64 = [System.Convert]::FromBase64String($base64)</code> <br> <code>$decode_string = [System.Text.Encoding]::Unicode.GetString($decode_base64)</code></p>
<p><code>$path_image = "$home\Documents\1200x800.jpg"</code> <br> <code>$BBase64 = [System.Convert]::ToBase64String((Get-Content $path_image -Encoding Byte))</code> <br> <code>Add-Type -assembly System.Drawing</code> <br> <code>$Image = [System.Drawing.Bitmap]::FromStream([IO.MemoryStream][Convert]::FromBase64String($BBase64))</code> <br> <code>$Image.Save("$home\Desktop\1200x800.jpg")</code></p>
<h3>HTTP Listener</h3>
<pre><code class="language-PowerShell">$httpListener = New-Object System.Net.HttpListener
$httpListener.Prefixes.Add("http://+:8888/")
$httpListener.Start()
while (!([console]::KeyAvailable)) {
$info = Get-Service | select name,status | ConvertTo-HTML
$context = $httpListener.GetContext()
$context.Response.StatusCode = 200
$context.Response.ContentType = 'text/HTML'
$WebContent = $info
$EncodingWebContent = [Text.Encoding]::UTF8.GetBytes($WebContent)
$context.Response.OutputStream.Write($EncodingWebContent , 0, $EncodingWebContent.Length)
$context.Response.Close()
Get-NetTcpConnection -LocalPort 8888
(Get-Date).datetime
}
$httpListener.Close()
</code></pre>
<h3>WebClient</h3>
<p><code>[System.Net.WebClient] | Get-Member</code> <br> <code>(New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/Lifailon/PowerShell-Commands/rsa/README.md")</code></p>
<h3>Certificate</h3>
<pre><code class="language-PowerShell">function Get-WebCertificate ($srv) {
$iwr = iwr $srv
$status_code = $iwr.StatusCode
$status = $iwr.BaseResponse.StatusCode
$info = $iwr.BaseResponse.Server
$spm = [System.Net.ServicePointManager]::FindServicePoint($srv)
$date_end = $spm.Certificate.GetExpirationDateString()
$cert_name = ($spm.Certificate.Subject) -replace "CN="
$cert_owner = ((($spm.Certificate.Issuer) -split ", ") | where {$_ -match "O="}) -replace "O="
$Collections = New-Object System.Collections.Generic.List[System.Object]
$Collections.Add([PSCustomObject]@{
Host = $srv;
Server = $info;
Status = $status;
StatusCode = $status_code;
Certificate = $cert_name;
Issued = $cert_owner;
End = $date_end
})
$Collections
}
</code></pre>
<p><code>Get-WebCertificate https://google.com</code></p>
<h1>Excel</h1>
<pre><code class="language-PowerShell">$path = "$home\Desktop\Services-to-Excel.xlsx"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false` отключить открытие GUI
$ExcelWorkBook = $Excel.Workbooks.Add()` Создать книгу
$ExcelWorkSheet = $ExcelWorkBook.Worksheets.Item(1)` Создать лист
$ExcelWorkSheet.Name = "Services"` задать имя листа
$ExcelWorkSheet.Cells.Item(1,1) = "Name service"
# Задать имена столбцов:
$ExcelWorkSheet.Cells.Item(1,2) = "Description"
$ExcelWorkSheet.Cells.Item(1,3) = "Status"
$ExcelWorkSheet.Cells.Item(1,4) = "Startup type"
$ExcelWorkSheet.Rows.Item(1).Font.Bold = $true` выделить жирным шрифтом
$ExcelWorkSheet.Rows.Item(1).Font.size=14
# Задать ширину колонок:
$ExcelWorkSheet.Columns.Item(1).ColumnWidth=30
$ExcelWorkSheet.Columns.Item(2).ColumnWidth=80
$ExcelWorkSheet.Columns.Item(3).ColumnWidth=15
$ExcelWorkSheet.Columns.Item(4).ColumnWidth=25
$services = Get-Service
$counter = 2` задать начальный номер строки для записи
foreach ($service in $services) {
$status = $service.Status
if ($status -eq 1) {
$status_type = "Stopped"
} elseif ($status -eq 4) {
$status_type = "Running"
}
$Start = $service.StartType
if ($Start -eq 1) {
$start_type = "Delayed start"
} elseif ($Start -eq 2) {
$start_type = "Automatic"
} elseif ($Start -eq 3) {
$start_type = "Manually"
} elseif ($Start -eq 4) {
$start_type = "Disabled"
}
$ExcelWorkSheet.Columns.Item(1).Rows.Item($counter) = $service.Name
$ExcelWorkSheet.Columns.Item(2).Rows.Item($counter) = $service.DisplayName
$ExcelWorkSheet.Columns.Item(3).Rows.Item($counter) = $status_type
$ExcelWorkSheet.Columns.Item(4).Rows.Item($counter) = $start_type
if ($status_type -eq "Running") {
$ExcelWorkSheet.Columns.Item(3).Rows.Item($counter).Font.Bold = $true
}
$counter++` +1 увеличить для счетчика строки Rows
}
$ExcelWorkBook.SaveAs($path)
$ExcelWorkBook.close($true)
$Excel.Quit()
</code></pre>
<h3>Excel.Application.Open</h3>
<pre><code class="language-PowerShell">$path = "$home\Desktop\Services-to-Excel.xlsx"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$ExcelWorkBook = $excel.Workbooks.Open($path)` открыть xlsx-файл
$ExcelWorkBook.Sheets | select Name,Index` отобразить листы
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item(1)` открыть лист по номеру Index
1..100 | %{$ExcelWorkSheet.Range("A$_").Text}` прочитать значение из столбца А строки c 1 по 100
$Excel.Quit()
</code></pre>
<h3>ImportExcel</h3>
<p><code>Install-Module -Name ImportExcel</code> <br> <code>$data | Export-Excel .\Data.xlsx</code> <br> <code>$data = Import-Excel .\Data.xlsx</code></p>
<p><code>$data = ps</code> <br> <code>$Chart = New-ExcelChartDefinition -XRange CPU -YRange WS -Title "Process" -NoLegend</code> <br> <code>$data | Export-Excel .\ps.xlsx -AutoNameRange -ExcelChartDefinition $Chart -Show</code></p>
<h1>CSV</h1>
<p><code>Get-Service | Select Name,DisplayName,Status,StartType | Export-Csv -path "$home\Desktop\Get-Service.csv" -Append -Encoding Default</code> экспортировать в csv (-Encoding UTF8) <br> <code>Import-Csv "$home\Desktop\Get-Service.csv" -Delimiter ","</code> импортировать массив</p>
<pre><code class="language-PowerShell">$data = ConvertFrom-Csv @"
Region,State,Units,Price
West,Texas,927,923.71
$null,Tennessee,466,770.67
"@
</code></pre>
<p><code>$systeminfo = systeminfo /FO csv | ConvertFrom-Csv</code> вывод работы программы в CSV и конвертация в объект <br> <code>$systeminfo."Полный объем физической памяти"</code> <br> <code>$systeminfo."Доступная физическая память"</code></p>
<h3>ConvertFrom-String</h3>
<pre><code class="language-PowerShell">'
log =
{
level = 4;
};
' | ConvertFrom-String` создает PSCustomObject (разбивает по пробелам, удаляет все пробелы и пустые строки)
</code></pre>
<h3>ConvertFrom-StringData</h3>
<pre><code class="language-PowerShell">"
key1 = value1
key2 = value2
" | ConvertFrom-StringData # создает Hashtable
</code></pre>
<h1>XML</h1>
<pre><code class="language-PowerShell">$xml = [xml](Get-Content $home\desktop\test.rdg)` прочитать содержимое XML-файла
$xml.load("$home\desktop\test.rdg")` открыть файл
$xml.RDCMan.file.group.properties.name` имена групп
$xml.RDCMan.file.group.server.properties` имена всех серверов
$xml.RDCMan.file.group[3].server.properties` список серверов в 4-й группе
($xml.RDCMan.file.group[3].server.properties | ? name -like ADIRK).Name = "New-Name"` изменить значение
$xml.RDCMan.file.group[3].server[0].properties.displayName = "New-displayName"
$xml.RDCMan.file.group[3].server[1].RemoveAll()` удалить объект (2-й сервер в списке)
$xml.Save($file)` сохранить содержимое объекта в файла
</code></pre>
<p><code>Get-Service | Export-Clixml -path $home\desktop\test.xml</code> экспортировать объект PowerShell в XML <br> <code>Import-Clixml -Path $home\desktop\test.xml</code> импортировать объект XML в PowerShell <br> <code>ConvertTo-Xml (Get-Service)</code></p>
<h3>Get-CredToXML</h3>
<pre><code class="language-PowerShell">function Get-CredToXML {
param (
$CredFile = "$home\Documents\cred.xml"
)
if (Test-Path $CredFile) {
Import-Clixml -path $CredFile
}
elseif (!(Test-Path $CredFile)) {
$Cred = Get-Credential -Message "Enter credential"
if ($Cred -ne $null) {
$Cred | Export-CliXml -Path $CredFile
$Cred
}
else {
return
}
}
}
</code></pre>
<p><code>$Cred = Get-CredToXML</code> <br> <code>$Login = $Cred.UserName</code> <br> <code>$PasswordText = $Cred.GetNetworkCredential().password</code> получить пароль в текстовом виде</p>
<h3>XmlWriter (Extensible Markup Language)</h3>
<pre><code class="language-PowerShell">$XmlWriterSettings = New-Object System.Xml.XmlWriterSettings
$XmlWriterSettings.Indent = $true` включить отступы
$XmlWriterSettings.IndentChars = " "` задать отступ
$XmlFilePath = "$home\desktop\test.xml"
$XmlObjectWriter = [System.XML.XmlWriter]::Create($XmlFilePath, $XmlWriterSettings)` создать документ
$XmlObjectWriter.WriteStartDocument()` начать запись в документ
$XmlObjectWriter.WriteComment("Comment")
$XmlObjectWriter.WriteStartElement("Root")` создать стартовый элемент, который содержит дочерние объекты
$XmlObjectWriter.WriteStartElement("Configuration")` создать первый дочерний элемент для BaseSettings
$XmlObjectWriter.WriteElementString("Language","RU")
$XmlObjectWriter.WriteStartElement("Fonts") # <Fonts>
$XmlObjectWriter.WriteElementString("Name","Arial")
$XmlObjectWriter.WriteElementString("Size","12")
$XmlObjectWriter.WriteEndElement() # </Fonts>
$XmlObjectWriter.WriteEndElement()` конечный элемент </Configuration>
$XmlObjectWriter.WriteEndElement()` конечный элемент </Root>
$XmlObjectWriter.WriteEndDocument()` завершить запись в документ
$XmlObjectWriter.Flush()
$XmlObjectWriter.Close()
</code></pre>
<h3>CreateElement</h3>
<pre><code class="language-PowerShell">$xml = [xml](gc $home\desktop\test.xml)
$xml.Root.Configuration.Fonts
$NewElement = $xml.CreateElement("Fonts")` выбрать элемент куда добавить
$NewElement.set_InnerXML("<Name>Times New Roman</Name><Size>14</Size>")` Заполнить значениями дочерние элементы Fonts
$xml.Root.Configuration.AppendChild($NewElement)` добавить элемент новой строкой в Configuration (родитель Fonts)
$xml.Save("$home\desktop\test.xml")
</code></pre>
<h1>JSON</h1>
<pre><code class="language-PowerShell">$log = '
{
"log": {
"level": 7
}
}
' | ConvertFrom-Json
Get-Service | ConvertTo-Json
$OOKLA = '
{
"result" :
{"date":1683534970,"id":"14708271987","connection_icon":"wireless","download":33418,"upload":35442,"latency":15,"distance":50,"country_code":"RU","server_id":2707,"server_name":"Bryansk","sponsor_name":"DOM.RU","sponsor_url":null,"connection_mode":"multi","isp_name":"Resource Link","isp_rating":"4.0","test_rank":63,"test_grade":"B-","test_rating":4,"idle_latency":"17","download_latency":"116","upload_latency":"75","additional_servers":
[{"server_id":8191,"server_name":"Bryansk","sponsor_name":"SectorTelecom.ru"},{"server_id":46278,"server_name":"Fokino","sponsor_name":"Fokks - Promyshlennaya avtomatika Ltd."},{"server_id":18218,"server_name":"Bryansk","sponsor_name":"RIA-link Ltd."}],
"path":"result\u002F14708271987","hasSecondary":true
}
}
' | ConvertFrom-Json
$ookla.result
</code></pre>
<h1>YAML</h1>
<pre><code class="language-PowerShell">Import-Module PSYaml` используется в Docker/Ansible
$netplan = "
network:` словарь по типу - ключ : значение с вложенными словарями
ethernets:
ens160:
dhcp4: yes
dhcp6: no
nameservers:
addresses:` [8.8.8.8, 1.1.1.1]` список данных (строк)
- 8.8.8.8
- 1.1.1.1
version: 2
"
$network = ConvertFrom-Yaml $netplan
$network.Values.ethernets.ens160.nameservers
$DataType = "
int: !!int 10.1
flo: !!float 10.1
str: !!str string
bool: !!bool` boolean
"
</code></pre>
<h1>HTML</h1>
<h3>ConvertFrom-Html</h3>
<pre><code class="language-PowerShell">function ConvertFrom-Html {
param (
[Parameter(ValueFromPipeline)]$url
)
$irm = Invoke-RestMethod $url
$HTMLFile = New-Object -ComObject HTMLFile
$Bytes = [System.Text.Encoding]::Unicode.GetBytes($irm)
$HTMLFile.write($Bytes)
($HTMLFile.all | where {$_.tagname -eq "body"}).innerText
}
$apache_status = "http://192.168.3.102/server-status"
$apache_status | ConvertFrom-Html
</code></pre>
<h3>ConvertTo-Html</h3>
<p><code>Get-Process | select Name, CPU | ConvertTo-Html -As Table > "$home\desktop\proc-table.html"</code> вывод в формате List (Format-List) или Table (Format-Table)</p>
<pre><code class="language-PowerShell">$servers = "ya.ru","ya.com","google.com"
$path = "$home\Desktop\Ping.html"
$header = @"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Отчет о статусе серверов</title>
<style type="text/css">
<!--
body {
background-color: #E0E0E0;
font-family: sans-serif
}
table, th, td {
background-color: white;
border-collapse:collapse;
border: 1px solid black;
padding: 5px
}
-->
</style>
"@
$body = @"
<h1>Ping status</h1>
<p>$(get-date -Format "dd.MM.yyyy hh:mm").</p>
"@
$results = foreach ($server in $servers) {
if (Test-Connection $server -Count 1 -ea 0 -Quiet) {
$status = "Up"
}
else {
$status = "Down"
}
[PSCustomObject]@{
Name = $server
Status = $status
}
}
$results | ConvertTo-Html -head $header -body $body | foreach {
$_ -replace "<td>Down</td>","<td style='background-color:#FF8080'>Down</td>" -replace "<td>Up</td>","<td style='background-color:#5BCCF3'>Up</td>"
} | Out-File $path
Invoke-Item $path
</code></pre>
<h3>PSWriteHTML</h3>
<pre><code class="language-PowerShell">Import-Module PSWriteHTML
(Get-Module PSWriteHTML).ExportedCommands
Get-Service | Out-GridHtml -FilePath ~\Desktop\Get-Service-Out-GridHtml.html
</code></pre>
<h3>HtmlReport</h3>
<pre><code class="language-PowerShell">Import-Module HtmlReport
$topVM = ps | Sort PrivateMemorySize -Descending | Select -First 10 | %{,@(($_.ProcessName + " " + $_.Id), $_.PrivateMemorySize)}
$topCPU = ps | Sort CPU -Descending | Select -First 10 | %{,@(($_.ProcessName + " " + $_.Id), $_.CPU)}
New-Report -Title "Piggy Processes" -Input {
New-Chart Bar "Top VM Users" -input $topVm
New-Chart Column "Top CPU Overall" -input $topCPU
ps | Select ProcessName, Id, CPU, WorkingSet, *MemorySize | New-Table "All Processes"
} > ~\Desktop\Get-Process-HtmlReport.html
</code></pre>
<h1>SQLite</h1>
<pre><code class="language-PowerShell">$path = "$home\Documents\Get-Service.db"
$Module = Get-Module MySQLite
if ($Module -eq $null) {
Install-Module MySQLite -Repository PSGallery -Scope CurrentUser
}
Import-Module MySQLite
New-MySQLiteDB -Path $path # создать БД
Invoke-MySQLiteQuery -Path $path -Query "CREATE TABLE Service (Name TEXT NOT NULL, DisplayName TEXT NOT NULL, Status TEXT NOT NULL);" # создать таблицу
$Service = Get-Service | select Name,DisplayName,Status
foreach ($S in $Service) {
$Name = $S.Name
$DName = $S.DisplayName
$Status = $S.Status
Invoke-MySQLiteQuery -Path $path -Query "INSERT INTO Service (Name, DisplayName, Status) VALUES ('$Name', '$DName', '$Status');"
}
</code></pre>
<p><code>(Get-MySQLiteDB $path).Tables</code> список таблиц в базе <br> <code>Invoke-MySQLiteQuery -Path $path -Query "SELECT name FROM sqlite_master WHERE type='table';"</code> список таблиц в базе <br> <code>Invoke-MySQLiteQuery -Path $path -Query "DROP TABLE Service;"</code> удалить таблицу</p>
<pre><code class="language-PowerShell">$TableName = "Service"
Invoke-MySQLiteQuery -Path $path -Query "SELECT * FROM $TableName" # прочитать содержимое таблицы (в формате объекта)
</code></pre>
<p><code>Get-Service | select Name,DisplayName,Status | ConvertTo-MySQLiteDB -Path $path -TableName Service -force</code> конвертировать объект в таблицу</p>
<h3>Database password</h3>
<pre><code class="language-PowerShell">$Connection = New-SQLiteConnection -DataSource $path
$Connection.ChangePassword("password")
$Connection.Close()
Invoke-SqliteQuery -Query "SELECT * FROM Service" -DataSource "$path;Password=password"
</code></pre>
<h1>MySQL</h1>
<p><code>apt -y install mysql-server mysql-client</code> <br> <code>mysql -V</code> <br> <code>systemctl status mysql</code> <br> <code>mysqladmin -u root password</code> задать пароль root</p>
<p><code>nano /etc/mysql/mysql.conf.d/mysqld.cnf</code></p>
<pre><code>[mysqld]
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# tmpdir = /tmp
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
log_error = /var/log/mysql/error.log
</code></pre>
<p><code>systemctl restart mysql</code> <br> <code>ss -tulnp | grep 3306</code> <br> <code>ufw allow 3306/tcp</code> <br> <code>nc -zv 192.168.1.253 3306</code> <br> <code>tnc 192.168.1.253 -p 3306</code></p>
<p><code>mysql -u root -p</code> <br> <code>SELECT user(), now(), version();</code> <br> <code>quit;</code></p>
<p><code>mysql -u root -p -e 'SHOW TABLES FROM db_aduser;'</code> отобразить список таблиц без подключения к консоли MySQL</p>
<p><code>CREATE</code> создать БД, пользователя, таблицу <br> <code>ALTER</code> управление столбцами таблице <br> <code>DROP</code> удалить БД, пользователя, таблицу <br> <code>USE</code> выбрать БД <br> <code>SHOW</code> вывесли список БД, прав доступа пользователя (GRANTS), названия столбцов и их свойства <br> <code>GRANT</code> дать доступ пользователю к БД <br> <code>REVOKE</code> удалить доступ пользователя к БД <br> <code>UPDATE</code> изменить права доступа, значения с таблице <br> <code>FLUSH</code> обновить права доступа <br> <code>SELECT</code> отобразить выбранную БД, вывести список пользователей, выборка данных в таблице <br> <code>INSERT</code> внести данные <br> <code>DELETE</code> удалить данные в (FROM) таблице</p>
<h3>DATA TYPE</h3>
<p><code>VARCHAR(N)</code> строка переменной длины, в формате ASCII, где один символ занимает 1 байт, числом N указывается максимальная возможная длина строки <br> <code>NVARCHAR(N)</code> строка переменной длины, в формате Unicode, где один символ занимает 2 байта <br> <code>CHAR(N)/nchar(N)</code> строка фиксированной длины, которая всегда дополняется справа пробелами до длины N и в базе данных она занимает ровно N символов <br> <code>INT</code> целое число, от -2147483648 до 2147483647, занимает 4 байта <br> <code>FLOAT</code> число, в котором может присутствовать десятичная точка (запятая) <br> <code>BIT</code> флаг, Да - 1 или Нет - 0 <br> <code>DATE</code> формат даты, например 25.05.2023 <br> <code>TIME</code> 23:30:55.1234567 <br> <code>DATETIME</code> 25.05.2023 23:30:55.1234567</p>
<h3>DATABASE</h3>
<pre><code>SHOW databases; # вывести список БД
CREATE DATABASE db_aduser; # создать БД
CREATE DATABASE db_rep DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; # создать БД с кодировкой UTF-8
DROP DATABASE db_rep; # удалить БД
USE db_aduser; # выбрать/переключиться на выбранную БД
SELECT database(); # отобразить выбранную БД
</code></pre>
<h3>USER</h3>
<pre><code>SELECT USER,HOST FROM mysql.user; # вывести список УЗ
CREATE USER posh@localhost IDENTIFIED BY '1qaz!QAZ'; # создать УЗ, которая будет подключаться с локального сервера
CREATE USER posh@localhost IDENTIFIED BY '1qaz!QAZ'; # создать УЗ, которая будет подключаться с указанного сервера
CREATE USER posh@'192.168.3.99' IDENTIFIED BY '1qaz!QAZ'; # УЗ для доступа с конкретного сервера
CREATE USER 'admin'@'%' IDENTIFIED BY 'Admin12#'; # УЗ для доступа с любого сервера (% - wildcard)
DROP USER posh@localhost; # удалить пользователя
SHOW GRANTS FOR posh@'%'; # отобразить права доступа пользователя
GRANT ALL PRIVILEGES ON db_aduser.* TO posh@'192.168.3.99'; # полный доступ для posh к БД db_aduser
GRANT ALL PRIVILEGES ON *.* TO posh@'%'; # доступ к всем БД c любого клиентского хоста
GRANT SELECT,DELETE ON mysql.* TO posh@'%'; # права SELECT и DELETE на встроенную БД mysql
REVOKE DELETE ON mysql.* FROM posh@'%'; # удалить доступ DELETE
UPDATE mysql.user SET super_priv='Y' WHERE USER='posh' AND host='%'; # изменить привелегии для пользователя
SELECT USER,HOST,super_priv FROM mysql.user; # список УЗ и таблица с правами SUPER privilege
FLUSH PRIVILEGES; # обновить права доступа
</code></pre>
<h3>TABLE</h3>
<pre><code>SHOW TABLES; # отобразить список всех таблиц
SHOW TABLES LIKE '%user'; # поиск таблицы по wildcard-имени
CREATE TABLE table_aduser (id INT NOT NULL AUTO_INCREMENT, Name VARCHAR(100), email VARCHAR(100), PRIMARY KEY (ID)); # создать таблицу
DROP TABLE table_aduser; # удалить таблицу
</code></pre>
<h3>COLUMN</h3>
<pre><code>SHOW COLUMNS FROM table_aduser; # отобразить название стобцов и их свойства
ALTER TABLE table_aduser DROP COLUMN id; # удалить столбец id
ALTER TABLE table_aduser ADD COLUMN info VARCHAR(10); # добавить столбец info
ALTER TABLE table_aduser CHANGE info new_info VARCHAR(100); # изменить имя столбца info на new_info и его тип данных
ALTER TABLE table_aduser ADD COLUMN (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID)); # добавить столбец id
</code></pre>
<h3>INSERT</h3>
<pre><code>INSERT table_aduser (Name,email) VALUES ('Alex','no-email');
INSERT table_aduser (Name,email) VALUES ('Alex','no-email');
INSERT table_aduser (Name) VALUES ('Support');
INSERT table_aduser (Name) VALUES ('Jack');
</code></pre>
<h3>SELECT</h3>
<pre><code>SELECT * FROM table_aduser; # содержимое всех стобцов в выбранной (FROM) таблице
SELECT Name,email FROM table_aduser; # содержимое указанных стобцов
SELECT DISTINCT Name,Email FROM table_aduser; # отобразить уникальные записи (без повторений)
SELECT * FROM table_aduser ORDER BY Name; # отсортировать по Name
SELECT * FROM table_aduser ORDER BY Name DESC; # обратная сортировка
SELECT COUNT(*) FROM table_aduser; # количество строк в таблице
SELECT COUNT(new_info) FROM table_aduser; # количество строк в столбце
</code></pre>
<h3>WHERE</h3>
<pre><code>NOT; AND; OR # по приоритетам условий
SELECT * FROM table_aduser WHERE Name = 'Alex'; # поиск по содержимому
SELECT * FROM table_aduser WHERE NOT Name != 'Alex'; # условие NOT где Name не равен значению
SELECT * FROM table_aduser WHERE email != ''; # вывести строки, где содержимое email не рано null
SELECT * FROM table_aduser WHERE email != '' OR id > 1000; # или id выше 1000
SELECT * FROM table_aduser WHERE Name RLIKE "support"; # регистронезависемый (RLIKE) поиск
SELECT * FROM table_aduser WHERE Name RLIKE "^support"; # начинаются только с этого словосочетания
</code></pre>
<h3>DELETE</h3>
<pre><code>SELECT * FROM table_aduser WHERE Name RLIKE "alex"; # найти и проверить значения перед удалением
DELETE FROM table_aduser WHERE Name RLIKE "alex"; # Query OK, 2 rows affected # удалено две строки
DELETE FROM table_aduser; # удалить ВСЕ значения
</code></pre>
<h3>UPDATE</h3>
<pre><code>SELECT * FROM table_aduser WHERE Name = 'Jack'; # найти и проверить значение перед изменением
UPDATE table_aduser SET Name = 'Alex' WHERE Name = 'Jack'; # изменить значение 'Jack' на 'Alex'
UPDATE db_aduser.table_aduser SET Name='BCA' WHERE id=1; # изменить значение в строке с ID 1
</code></pre>
<h3>CHECK</h3>
<pre><code>CHECK TABLE db_aduser.table_aduser; # проверить
ANALYZE TABLE db_aduser.table_aduser; # анализировать
OPTIMIZE TABLE db_aduser.table_aduser; # оптимизировать
REPAIR TABLE db_aduser.table_aduser; # восстановить
TRUNCATE TABLE db_aduser.table_aduser; # очистить
</code></pre>
<h3>DUMP</h3>
<pre><code>mysqldump -u root -p --databases db_aduser > /bak/db_aduser.sql
mysql -u root -p db_aduser < /bak/db_aduser.sql
crontab -e
00 22 * * * /usr/bin/mysqldump -uroot -p1qaz!QAZ db_zabbix | /bin/bzip2 > `date +/dump/zabbix/zabbix-\%d-\%m-\%Y-\%H:\%M.bz2`
00 23 * * * /usr/bin/mysqldump -uroot -p1qaz!QAZ db_zabbix > `date +/dump/smb/zabbix-\%d-\%m-\%Y-\%H:\%M.sql`
0 0 * * * find /dump/zabbix -mtime +7 -exec rm {} \;
mysqldump -u root --single-transaction db_zabbix > /dump/zabbix/db_zabbix.sql
mysql -u user_zabbix -p -e 'CREATE DATABASE db_zabbix;'
mysql -u user_zabbix -p db_zabbix < /root/db_zabbix.sql
</code></pre>
<h3>innodb_force_recovery</h3>
<pre><code>sed -i '/innodb_force_recovery/d' /etc/mysql/my.cnf # удалить
mode=6; sed -i "/^\[mysqld\]/{N;s/$/\ninnodb_force_recovery=$mode/}" /etc/mysql/my.cnf # добавить mode 6
systemctl restart mysql
[mysqld]
innodb_force_recovery=1 # сервер пытается начать работу независимо от того, есть ли поврежденные данные InnoDB или нет
innodb_force_recovery=2 # удается восстановить работу за счет остановки потока команд, которые были частично выполнены или не выполнены (не запускает фоновые операции)
innodb_force_recovery=3 # отменяет откат после восстановления поврежденных файлов (не пытается откатить транзакции)
innodb_force_recovery=6 # запуск СУБД в режиме read only
</code></pre>
<h3>MySQL Connector NET</h3>
<h3>Add-ADUser</h3>
<pre><code class="language-PowerShell">$ip = "192.168.1.253"
$user = "posh"
$pass = "1qaz!QAZ"
$db = "db_aduser"
Add-Type –Path "$home\Documents\MySQL-Connector-NET\8.0.31-4.8\MySql.Data.dll"
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{
ConnectionString="server=$ip;uid=$user;pwd=$pass;database=$db"
}
$Connection.Open()
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand
$Command.Connection = $Connection
$UserList = Get-ADUser -filter * -properties name,EmailAddress
foreach ($user in $UserList) {
$uname=$user.Name
$uemail=$user.EmailAddress
$Command.CommandText = "INSERT INTO table_aduser (Name,Email) VALUES ('$uname','$uemail')"
$Command.ExecuteNonQuery()
}
$Connection.Close()
</code></pre>
<h3>Get-ADUser</h3>
<pre><code class="language-PowerShell">$ip = "192.168.1.253"
$user = "posh"
$pass = "1qaz!QAZ"
$db = "db_aduser"
Add-Type –Path "$home\Documents\MySQL-Connector-NET\8.0.31-4.8\MySql.Data.dll"
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{
ConnectionString = "server=$ip;uid=$user;pwd=$pass;database=$db"
}
$Connection.Open()
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand
$Command.Connection = $Connection
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$Command.CommandText = "SELECT * FROM table_aduser"
$MYSQLDataAdapter.SelectCommand = $Command
$NumberOfDataSets = $MYSQLDataAdapter.Fill($MYSQLDataSet, "data")
$Collections = New-Object System.Collections.Generic.List[System.Object]
foreach($DataSet in $MYSQLDataSet.tables[0]) {
$Collections.Add([PSCustomObject]@{
Name = $DataSet.name;
Mail = $DataSet.email
})
}
$Connection.Close()
$Collections
</code></pre>
<h1>MSSQL</h1>
<p><code>wget -qO- https://packages.microsoft.com/keys/microsoft.asc | apt-key add -</code> импортировать GPG-ключ для репозитория <br> <code>https://packages.microsoft.com/config/ubuntu/</code> выбрать репозиторий и скопировать URL <br> <code>add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"</code> <br> <code>apt-get update</code> обновить список пакетов <br> <code>apt-get install mssql-server</code> <br> <code>/opt/mssql/bin/mssql-conf setup</code> скрипт начальной конфигурации (выбрать редакцию, 3 - express и русский язык 9 из 11) <br> <code>systemctl status mssql-server</code> <br> <code>curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -</code> установить клиент <br> <code>curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | tee /etc/apt/sources.list.d/msprod.list</code> <br> <code>apt-get update</code> <br> <code>apt-get install mssql-tools</code> <br> <code>echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc</code> добавить в домашний каталог файла bashrc, что бы не писать путь к исполняемому файлу <br> <code>export PATH="$PATH:/opt/mssql-tools/bin"</code> <br> <code>iptables -I INPUT 1 -p tcp --dport 1433 -j ACCEPT</code></p>
<pre><code>sqlcmd -S localhost -U SA
CREATE DATABASE itinvent
go
SELECT name FROM master.dbo.sysdatabases
go
</code></pre>
<h3>System.Data.SqlClient</h3>
<pre><code class="language-PowerShell">$user = "itinvent"
$pass = "itinvent"
$db = "itinvent"
$srv = "192.168.3.103"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "server=$srv;database=$db;user id=$user;password=$pass;Integrated Security=false"
$SqlCommand = New-Object System.Data.SqlClient.SqlCommand` класс формата команды
$SqlCommand.CommandText = "SELECT * FROM ITINVENT.dbo.USERS"` отобразить содержимое таблицы
#$SqlCommand.CommandText = "SELECT LICENCE_DATE,DESCR,MODEL_NO,TYPE_NO FROM ITINVENT.dbo.ITEMS where LICENCE_DATE IS NOT NULL"
$SqlCommand.Connection = $SqlConnection` передать формат подключения
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter` создать адаптер подключения для выполнения SELECT запросов к БД
$SqlAdapter.SelectCommand = $SqlCommand` передать команду
$DataSet = New-Object System.Data.DataSet` создать объект приема данных формата XML
$SqlAdapter.Fill($DataSet)` заполнить данными полученные от адаптера (возвращает кол-во объектов)
$SqlConnection.Close()
$Data = $DataSet.Tables
$Data[0] | ft
</code></pre>
<h3>SqlClient INSERT</h3>
<pre><code class="language-PowerShell">$user = "itinvent"
$pass = "itinvent"
$db = "db_test"
$srv = "192.168.3.103"
$sql = "INSERT INTO table_test (column_user) VALUES ('lifailon')"` добавить данные в таблицу table_test в колонку column_user
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "server=$srv;database=$db;user id=$user;password=$pass;Integrated Security=false"
$SqlCommand = New-Object System.Data.SqlClient.SqlCommand
$SqlCommand.CommandText = $sql
$SqlCommand.Connection = $SqlConnection
$SqlConnection.Open()
$rowsAffected = $SqlCommand.ExecuteNonQuery();` для запросов INSERT/UPDATE/DELETE не используется SqlDataAdapter
$SqlConnection.Close()
</code></pre>
<h3>SSMS INSERT</h3>
<pre><code>USE [db_test]
GO
INSERT INTO [dbo].[table_test]
([column_user])
VALUES
('lifailon')
GO
SELECT TOP (1000) [column_user]
FROM [db_test].[dbo].[table_test]
</code></pre>
<h3>T-SQL</h3>
<ul>
<li> <p>DDL (Data Definition Language / Язык определения данных). К этому типу относятся команды, которые создают базу данных, таблицы, индексы, хранимые процедуры. <br> <code>CREATE</code> создает объекты базы данных (саму базу даных, таблицы, индексы и т.д.) <br> <code>ALTER</code> изменяет объекты базы данных <br> <code>DROP</code> удаляет объекты базы данных <br> <code>TRUNCATE</code> удаляет все данные из таблиц</p> </li>
<li> <p>DML (Data Manipulation Language / Язык манипуляции данными). К этому типу относят команды по выбору, обновлению, добавлению и удалению данных. <br> <code>SELECT</code> извлекает данные из БД <br> <code>UPDATE</code> обновляет данные <br> <code>INSERT</code> добавляет новые данные <br> <code>DELETE</code> удаляет данные</p> </li>
<li> <p>DCL (Data Control Language / Язык управления доступа к данным). К этому типу относят команды, которые управляют правами по доступу к данным. <br> <code>GRANT</code> предоставляет права для доступа к данным <br> <code>REVOKE</code> отзывает права на доступ к данным</p> </li>
</ul>
<pre><code>-- Переменные
DECLARE @text NVARCHAR(20), @int INT;
SET @text='Test';
SET @int = 21;
select @text,@int
-- Имена сервера и экземпляра
Select @@SERVERNAME as [Server\Instance];
-- версия SQL Server
Select @@VERSION as SQLServerVersion;
-- Текущая БД (БД, в контексте которой выполняется запрос)
Select DB_NAME() AS CurrentDB_Name;
-- Время работы с момента запуска сервера
SELECT @@Servername AS ServerName ,
create_date AS ServerStarted ,
DATEDIFF(s, create_date, GETDATE()) / 86400.0 AS DaysRunning ,
DATEDIFF(s, create_date, GETDATE()) AS SecondsRunnig
FROM sys.databases
WHERE name = 'tempdb';
-- Количество активных соединений
SELECT @@Servername AS Server ,
DB_NAME(database_id) AS DatabaseName ,
COUNT(database_id) AS Connections ,
Login_name AS LoginName ,
MIN(Login_Time) AS Login_Time ,
MIN(COALESCE(last_request_end_time, last_request_start_time))
AS Last_Batch
FROM sys.dm_exec_sessions
WHERE database_id > 0
AND DB_NAME(database_id) NOT IN ( 'master', 'msdb' )
GROUP BY database_id ,
login_name
ORDER BY DatabaseName;
-- Статус Backup
SELECT @@Servername AS ServerName ,
d.Name AS DBName ,
MAX(b.backup_finish_date) AS LastBackupCompleted
FROM sys.databases d
LEFT OUTER JOIN msdb..backupset b
ON b.database_name = d.name
AND b.[type] = 'D'
GROUP BY d.Name
ORDER BY d.Name;
-- Путь к Backup
SELECT @@Servername AS ServerName ,
d.Name AS DBName ,
b.Backup_finish_date ,
bmf.Physical_Device_name
FROM sys.databases d
INNER JOIN msdb..backupset b ON b.database_name = d.name
AND b.[type] = 'D'
INNER JOIN msdb.dbo.backupmediafamily bmf ON b.media_set_id = bmf.media_set_id
ORDER BY d.NAME ,
b.Backup_finish_date DESC;
-- Вывести список всех БД, модели восстановления и путь к mdf/ldf
EXEC sp_helpdb;
SELECT @@SERVERNAME AS Server ,
d.name AS DBName ,
create_date ,
recovery_model_Desc AS RecoveryModel ,
m.physical_name AS FileName
FROM sys.databases d
JOIN sys.master_files m ON d.database_id = m.database_id
ORDER BY d.name;
-- Размер БД
with fs
as
(
select database_id, type, size * 8.0 / 1024 size
from sys.master_files
)
select
name,
(select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataFileSizeMB,
(select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogFileSizeMB
from sys.databases
-- Поиск таблицы по маске имени (вывод: названия схемы где распологается объект, тип объекта, дата создания и последней модификации):
select [object_id], [schema_id],
schema_name([schema_id]) as [schema_name],
[name],
[type],
[type_desc],
[create_date],
[modify_date]
from sys.all_objects
-- where [name]='INVENT';
where [name] like '%INVENT%';
-- Кол-во строк в таблицах
SELECT @@ServerName AS Server ,
DB_NAME() AS DBName ,
OBJECT_SCHEMA_NAME(p.object_id) AS SchemaName ,
OBJECT_NAME(p.object_id) AS TableName ,
i.Type_Desc ,
i.Name AS IndexUsedForCounts ,
SUM(p.Rows) AS Rows
FROM sys.partitions p
JOIN sys.indexes i ON i.object_id = p.object_id
AND i.index_id = p.index_id
WHERE i.type_desc IN ( 'CLUSTERED', 'HEAP' )
-- This is key (1 index per table)
AND OBJECT_SCHEMA_NAME(p.object_id) <> 'sys'
GROUP BY p.object_id ,
i.type_desc ,
i.Name
ORDER BY SchemaName ,
TableName;
-- Найти строковое (nvarchar) значение 2023 по всем таблицам базы данных
-- Отображается в какой таблице и столбце хранится значение, а также количество найденных пары таблица-колонка
set nocount on
declare @name varchar(128), @substr nvarchar(4000), @column varchar(128)
set @substr = '%2023%'
declare @sql nvarchar(max);
create table`rslt
(table_name varchar(128), field_name varchar(128), [value] nvarchar(max))
declare s cursor for select table_name as table_name from information_schema.tables where table_type = 'BASE TABLE' order by table_name
open s
fetch next from s into @name
while @@fetch_status = 0
begin
declare c cursor for
select quotename(column_name) as column_name from information_schema.columns
where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname', 'int', 'tinyint') and table_name = @name
set @name = quotename(@name)
open c
fetch next from c into @column
while @@fetch_status = 0
begin
--print 'Processing table - ' + @name + ', column - ' + @column
set @sql='insert into`rslt select ''' + @name + ''' as Table_name, ''' + @column + ''', cast(' + @column +
' as nvarchar(max)) from' + @name + ' where cast(' + @column + ' as nvarchar(max)) like ''' + @substr + '''';
print @sql;
exec(@sql);
fetch next from c into @column;
end
close c
deallocate c
fetch next from s into @name
end
select table_name as [Table Name], field_name as [Field Name], count(*) as [Found Mathes] from`rslt
group by table_name, field_name
order by table_name, field_name
drop table`rslt
close s
deallocate s
-- Поиск в таблице [CI_HISTORY] и столбцу [HIST_ID]:
SELECT * FROM ITINVENT.dbo.CI_HISTORY where [HIST_ID] like '%2023%';
-- Узнать фрагментацию индексов
DECLARE @db_id SMALLINT;
SET @db_id = DB_ID(N'itinvent');
IF @db_id IS NULL
BEGIN;
PRINT N'Неправильное имя базы';
END;
ELSE
BEGIN;
SELECT
object_id AS [ID объекта],
index_id AS [ID индекса],
index_type_desc AS [Тип индекса],
avg_fragmentation_in_percent AS [Фрагментация в %]
FROM sys.dm_db_index_physical_stats(@db_id, NULL, NULL, NULL , 'LIMITED')
ORDER BY [avg_fragmentation_in_percent] DESC;
END;
GO
-- TempDB
-- Initial size - начальный/минимальный размер БД (1024 MB)
-- Autogrowh - прирост (512MB)
-- По умолчанию tempdb настроена на авто-расширение (Autogrow) и при каждой перезагрузке SQL Server пересоздаёт файлы этой БД с минимальным размером инициализации.
-- Увеличив размер инициализации файлов tempdb, можно свести к минимуму затраты системных ресурсов на операции авто-расширения.
-- Изменить путь к БД:
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'F:\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp2, FILENAME = 'F:\tempdb_mssql_2.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp3, FILENAME = 'F:\tempdb_mssql_3.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp4, FILENAME = 'F:\tempdb_mssql_4.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp5, FILENAME = 'F:\tempdb_mssql_5.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp6, FILENAME = 'F:\tempdb_mssql_6.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp7, FILENAME = 'F:\tempdb_mssql_7.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp8, FILENAME = 'F:\tempdb_mssql_8.ndf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'F:\templog.ldf');
GO
-- Указать размер файла:
MODIFY FILE (NAME = temp2, FILENAME = 'F:\tempdb_mssql_2.ndf' , SIZE = 1048576KB , FILEGROWTH = 524288KB);
</code></pre>
<h3>Тип резервной копии</h3>
<ul>
<li>Full (Полная копия). Когда стартует полное резервирование, записывается Log Sequence Number (LSN - последовательный номер журнала), а так же LSN записывается и при завершении полного резервирования. Этот LSN является механизмом, используемым SQL Server, чтобы знать, в каком порядке выполнялись операторы INSERT, UPDATE или DELETE. При этом наличие записанных LSN начала и окончания, как части полного бэкапа, обеспечивает согласованное с точки зрения транзакций резервное копирование, поскольку при полном резервном копировании учитываются изменения, произошедшие во время резервного копирования. Это обеспечивает обработку таких транзакций в процессе восстановления бэкапа.</li>
<li>Differential (дифференциальная/разностная копия). Хранит данных, изменившиеся с момента последней Полной резервной копии. При восстановлении нужно сначала восстановить Полную резервную копию в режиме NORECOVERY, потом можно применить любую из последующих Разностных копий, без предыдущей Полной резервной копии Разностная копия бесполезна. Каждая последующая Разностная копия будет хранить все данные, входящие в предыдущую Разностную резервную копию, сделанную после предыдущей Полной копии.</li>
<li>Incremental (инкрементальная/копия журналов транзакций). Резервное копирования журнала транзакций копирует все транзакции, которые произошли с момента последнего резервного копирования, а затем урезает журнал транзакций для освобождения дискового пространства. Транзакции происходят в определенном порядке (LSN), бэкап журнала поддерживает этот порядок транзакций. Бэкапы журналов транзакций должны восстанавливаться по порядку. Для восстановления базы данных потребуется вся цепочка резервных копий: полная и все последующие инкрементальные журнала транзакций.</li>
</ul>
<h3>Модели восстановления</h3>
<ul>
<li>Simple (Простая). Хранится только необходимый для жизни остаток журнала транзакций. Журнал транзакций (лог) автоматически очищается. Создание резервных копий журнала транзакций невозможна, поэтому остается самое ограниченное число опций по восстановлению. Недоступен функционал: Always On, Point-In-Time восстановление, Резервные копии журнала транзакций.</li>
<li>Full (Полная). Хранится журнал транзакций всех изменений в БД с момента последнего резервного копирования журнала транзакций. Журнал транзакций не будет очищаться до тех пор, пока не будет сделана резервная копия журнала транзакций.</li>
<li>Bulk logged (С неполным протоколированием). Идентична Full, за исключение: SELECT INTO, BULK INSERT и BCP, INSERT INTO SELECT, операции с индексами (CREATE INDEX, ALTER INDEX REBUILD, DROP INDEX)</li>
</ul>
<h3>Системные БД</h3>
<ul>
<li>master. Хранятся все данные системного уровня (конфигурация системы, сведенья об учетных записях входа, информация обо всех других базах данных) для экземпляра SQL Server.</li>
<li>tempdb. Рабочее пространство для временных объектов, таких как глобальные или локальные временные таблицы, временные хранимые процедуры, табличные переменные и курсоры. Пересоздаётся при каждом запуске SQL Server.</li>
<li>model. Используется в качестве шаблона для всех баз данных, создаваемых в экземпляре SQL Server, все содержимое базы данных model, включая параметры базы данных, копируется в создаваемую базу данных. Так как база данных tempdb создается каждый раз при запуске SQL Server, база данных model всегда должна существовать в системе SQL Server.</li>
<li>msdb. Используется агентом SQL Server для создания расписания предупреждений (оператор) и выполнение заданий, а также другими компонентами. SQL Server хранит полный журнал резервного копирования и восстановления в базе данных msdb. Для отправки почты оператору используется: USE [msdb].</li>
<li>resource. Доступная только для чтения база данных, которая содержит все системные объекты, например sys.objects, физически хранятся в базе данных resource, но логически присутствуют в схеме sys каждой базы данных.</li>
</ul>
<h3>Регламентные операции</h3>
<ul>
<li>Проверка целостности базы данных</li>
</ul>
<p><code>DBCC CHECKDB</code></p>
<ul>
<li> <p>Индексы. Индексы используются для быстрого поиска данных без необходимости поиска/просмотра всех строк в таблице базы данных при каждом обращении к таблице базы данных. Индекс ускоряет процесс запроса, предоставляя быстрый доступ к строкам данных в таблице, аналогично тому, как указатель в книге помогает вам быстро найти необходимую информацию. Индексы предоставляют путь для быстрого поиска данных на основе значений в этих столбцах. Для каждого индекса обязательно хранится его статистика. MS SQL Server самостоятельно создает и изменяет индексы при работе с базой. С течением времени данные в индексе становятся фрагментированными, т.е. разбросанными по базе данных, что серьезно снижает производительность запросов. Если фрагментация составляет от 5 до 30% (стандартно в задании 15%), то рекомендуется ее устранить с помощью реорганизации, при фрагментации выше 30% (по умолчанию в задаче > 30% фрагментации и число страниц > 1000) необходимо полное перестроение индексов. После перестроения планово используется только реорганизация.</p> </li>
<li> <p>Реорганизация (Reorganize) или дефрагментация индекса — это серия небольших локальных перемещений страниц так, чтобы индекс не был фрагментирован. После реорганизации статистика не обновляется. Во время выполнения почти все данные доступны, пользователи смогут работать.</p> </li>
</ul>
<p><code>sp_msforeachtable N'DBCC INDEXDEFRAG (<имя базы данных>, ''?'')'</code></p>
<ul>
<li>Перестроение (Rebuild) индексов (или задача в мастере планов обслуживания: Восстановить индекс) запускает процесс полного построения индексов. В версии MS SQL Server Standard происходит отключение всех клиентов от базы на время выполнения операции. После перестроения обязательно обновляется статистика.</li>
</ul>
<p><code>sp_msforeachtable N'DBCC DBREINDEX (''?'')'</code></p>
<ul>
<li>Обновление статистики. Статистика — небольшая таблица (обычно до 200 строк), в которой хранится обобщенная информация о том, какие значения и как часто встречаются в таблице. На основании статистики сервер принимает решение, как лучше построить запрос. Когда происходят запросы к БД (например, SELECT) вы получаете данные, но не описываете то, как эти данные должны быть извлечены. В получении и обработке данных помогает статистика. Во время выполнения процедуры обновления статистики данные не блокируются.</li>
</ul>
<p><code>exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'</code></p>
<ul>
<li>Очистка процедурного кэша, выполняется после обновления статистики. Оптимизатор MS SQL Server кэширует планы запросов для их повторного выполнения. Это делается для того, чтобы экономить время, затрачиваемое на компиляцию запроса в том случае, если такой же запрос уже выполнялся и его план известен. После обновия статистики, не будет очищен процедурный кэш, то SQL Server может выбрать старый (неоптимальный) план запроса из кэша вместо того, чтобы построить новый (более оптимальный) план.</li>
</ul>
<p><code>DBCC FREEPROCCACHE</code></p>
<h1>InfluxDB</h1>
<p><a href="https://community.influxdata.com/t/influxdb-1-7-11-download-links/18898%60">https://community.influxdata.com/t/influxdb-1-7-11-download-links/18898`</a> InfluxDB1 <br> <code>wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.1-windows-amd64.zip -UseBasicParsing -OutFile influxdb2-2.7.1-windows-amd64.zip</code> скачать InfluxDB2 <br> <code>Expand-Archive .\influxdb2-2.7.1-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influxdb\'</code> разархивировать <br> <code>cd "C:\Program Files\InfluxData\influxdb\influxdb2_windows_amd64"</code> <br> <code>.\influxd.exe</code> <br> <code>.\influxd -h</code> <br> <code>http://localhost:8086/</code> базовая настройка <br> API Token: <code>wqsqOIR3d-PYmiJQYir4sX_NjtKKyh8ZWbfX1ZlfEEpAH3Z2ylcHx3XZzUA36XO3HIosiCFkhi4EoWfHxwIlAA==</code></p>
<h3>CLI Client</h3>
<p><code>wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.7.3-windows-amd64.zip?_gl=1*76m6hu*_ga*MTg0OTc4MzkzNC4xNjg4MTM5NzQ4*_ga_CNWQ54SDD8*MTY4ODE2MjA0My41LjEuMTY4ODE2MzI5Ni4yMi4wLjA. -UseBasicParsing -OutFile influxdb2-client-2.7.3-windows-amd64.zip</code> <br> <code>Expand-Archive .\influxdb2-client-2.7.3-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influx'</code> <br> <code>cd "C:\Program Files\InfluxData\influx"</code></p>
<p><code>.\influx org list</code> отобразить список пользователей организаций <br> <code>.\influx auth list</code> отобразить список пользователей и токенов <br> <code>.\influx v1 shell</code> консоль <br> <code>.\influx v1 dbrp list</code> список БД</p>
<pre><code>.\influx config create --config-name main `
--host-url "http://localhost:8086" `
--org "test" `
--token "wqsqOIR3d-PYmiJQYir4sX_NjtKKyh8ZWbfX1ZlfEEpAH3Z2ylcHx3XZzUA36XO3HIosiCFkhi4EoWfHxwIlAA==" `
--active` создать и активировать конфигурацию, что бы не передавать свой хост InfluxDB, токен API и организацию с каждой командой
</code></pre>
<p><code>.\influx config list</code> список конфигураций <br> <code>.\influx config list --json | ConvertFrom-Json</code> отобразить конфигурацию с выводом токена <br> <code>.\influx server-config | ConvertFrom-Json</code> текущая конфигурация сервера</p>
<h3>bucket</h3>
<p><code>.\influx bucket create --name test-bucket -c main</code> создать корзину <br> <code>.\influx write --bucket test-bucket --url https://influx-testdata.s3.amazonaws.com/air-sensor-data-annotated.csv</code> записать данные из CSV в созданную корзину (Flux language) <br> <code>.\influx query 'from(bucket:\"test-bucket\") |> range(start:-30m) |> mean()'</code> получить записанные данные</p>
<h3>user</h3>
<p><code>.\influx user create -n root -o test</code> создать пользователя (-o
<org-name>
)
<br>
<code>.\influx user password -n admin -p "password"</code> изменить/задать пароль
<br>
<code>.\influx user list</code> список пользователей
<br>
<code>influx user delete -i <user-id></code>
</org-name></p>
<h3>deb</h3>
<p><code>wget https://repos.influxdata.com/debian/packages/influxdb2-2.7.1-amd64.deb</code> <br> <code>dpkg -i influxdb2-2.7.1-amd64.deb</code> <br> <code>systemctl start influxd.service</code> <br> <code>systemctl status influxd.service</code> <br> <code>netstat -natpl | grep 80[8-9][3-9]</code> <br> <code>ps aux | grep influxdb | grep -Ev "grep"</code></p>
<p><code>nano /etc/influxdb/config.toml</code> v2 <br> <code>http-bind-address = "192.168.3.101:8086"</code></p>
<p><code>nano /etc/influxdb/influxdb.conf</code> v1</p>
<pre><code>[http]
enabled = true` включить API
bind-address = "192.168.3.104:8086"
auth-enabled = true` включить авторизацию
</code></pre>
<p><code>apt install influxdb-client</code> <br> <code>influx</code> <br> <code>influx --host 192.168.3.104 --username admin --password password</code></p>
<h3>USERS</h3>
<p><code>SHOW USERS</code> отобразить пользователей и их права доступа <br> <code>CREATE USER admin WITH PASSWORD 'password' WITH ALL PRIVILEGES</code> создать пользователя <br> <code>GRANT ALL PRIVILEGES TO "admin"</code> предоставить права доступа <br> <code>GRANT READ ON "database" TO "admin"</code> доступ на чтение для БД или запись (WRITE) <br> <code>REVOKE ALL PRIVILEGES FROM "admin"</code> отозвать права доступа <br> <code>SHOW GRANTS FOR "admin"</code> БД и привелегии доступа для указанного пользователя <br> <code>SET PASSWORD FOR "admin" = 'new_password'</code> изменить пароль <br> <code>DROP USER "admin"</code> удалить пользователя</p>
<h3>DATABASE</h3>
<p><code>CREATE DATABASE powershell</code> создать БД <br> <code>SHOW DATABASES</code> отобразить список БД <br> <code>DROP DATABASE powershell</code> удалить БД <br> <code>USE powershell</code> <br> <code>SHOW measurements</code> отобразить все таблицы <br> <code>INSERT performance,host=console,counter=CPU value=0.88</code> записать данные в таблицу performance</p>
<h3>SELECT/WHERE</h3>
<p><code>SELECT * FROM performance</code> отобразить все данные в таблице <br> <code>SELECT value FROM performance</code> отфильтровать по столбцу value (только Field Keys) <br> <code>SELECT * FROM performance limit 10</code> отобразить 10 единиц данных <br> <code>SELECT * FROM performance WHERE time > now() -2d</code> отобразить данные за последние 2 дня <br> <code>SELECT * FROM performance WHERE time > now() +3h -5m</code> данные за последние 5 минут (+3 часа от текущего времени по UTC 0 -5 минут) <br> <code>SELECT * FROM performance WHERE counter = 'CPU'</code> выборка по тэгу <br> <code>SELECT upload/1000 FROM speedtest WHERE upload/1000 <= 250</code> выборка по столбцу upload и разделить вывод на 1000, вывести upload меньше 250 <br> <code>DELETE FROM performance WHERE time > now() -1h</code> удалить данные за последние 1/4 часа <br> <code>DELETE FROM performance WHERE time < now() -24h</code> удалить данные старше 24 часов</p>
<h3>REGEX</h3>
<p><code>SELECT * FROM "performance" WHERE host =~ /.*-Pro/</code> приблизительно равно любое значение и на конце -Pro <br> <code>SELECT * FROM "win_pdisk" WHERE instance =~/.*C:/ and time > now() - 5m</code> и <br> <code>SELECT * FROM "win_pdisk" WHERE instance =~/.*E:/ or instance =~ /.*F:/</code> или <br> <code>SELECT * FROM "win_pdisk" WHERE instance !~ /.*Total/</code> не равно (исключить) \</p>
<h3>GROUP BY tag_key</h3>
<p><code>SELECT * FROM "win_pdisk" WHERE instance !~ /.*Total/ and instance !~/.*C:/ GROUP BY instance</code> группировать результаты по тегу</p>
<h3>Functions(field_key)</h3>
<p><a href="https://docs.influxdata.com/influxdb/v1.8/query_language/functions/">https://docs.influxdata.com/influxdb/v1.8/query_language/functions/</a> \</p>
<p><code>SELECT instance,LAST(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance</code> отфильтровать вывод по последнему/текущему значению <br> <code>SELECT instance,FIRST(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance</code> отфильтровать вывод по первому значению за весь или указанный отрезок времени <br> <code>SELECT instance,MIN(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance</code> отфильтровать вывод с отображением минимального значения <br> <code>SELECT instance,MAX(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance</code> отфильтровать вывод с отображением максимального значения <br> <code>SELECT SUM(Bytes_Received_persec) FROM "win_net" GROUP BY instance</code> суммах всех значений <br> <code>SELECT COUNT(Bytes_Received_persec) FROM "win_net" WHERE Bytes_Received_persec >= 0 GROUP BY instance</code> кол-во данных, где значение выше или равно 0 <br> <code>SELECT MEAN(Bytes_Received_persec) FROM "win_net" WHERE Bytes_Received_persec < 1000 GROUP BY instance</code> среднее значение данных с показателем от 0 до 1000 (509)</p>
<h3>POLICY</h3>
<p><code>CREATE DATABASE powershell WITH DURATION 48h REPLICATION 1 NAME "del2d"</code> создать БД с политикой хранения 2 дня <br> <code>CREATE RETENTION POLICY del2h ON powershell DURATION 2h REPLICATION 1</code> создать новую политику хранения для БД <br> <code>CREATE RETENTION POLICY del6h ON powershell DURATION 6h REPLICATION 1 SHARD DURATION 2h</code> указать период хранения 6 часов + 2 часа до очистки (по умолчанию 1ч или больше) <br> <code>ALTER RETENTION POLICY del6h ON powershell DEFAULT</code> изменить (ALTER) политику хранения для БД на del6h (DEFAULT) <br> <code>DROP RETENTION POLICY del2d ON powershell</code> удаление политики хранения приводит к безвозвратному удалению всех измерений (таблиц) и данных, хранящихся в политике хранения</p>
<h3>API POST</h3>
<p>Вместо таблиц в InfluxDB имеются измерения. Вместо столбцов в ней есть теги и поля.</p>
<pre><code> Table Tag (string/int) Field (double/int) TIMESTAMP
measurement,Tag_Keys1=Tag_Values1,Tag_Keys2=Tag_Values2 Field_Keys1="Values",Field_Keys2="Values" 0000000000000000000
1 2 3
$ip = "192.168.3.104"
$port = "8086"
$db = "powershell"
$table = "speedtest"
$ipp = $ip+":"+$port
$url = "http://$ipp/write?db=$db"
$user = "admin"
$pass = "password" | ConvertTo-SecureString -AsPlainText -Force
$cred = [System.Management.Automation.PSCredential]::new($user,$pass)
$unixtime = (New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds
$timestamp = ([string]$unixtime -replace "\..+") + "000000000"
Invoke-RestMethod -Method POST -Uri $url -Body "$table,host=$(hostname) download=200000,upload=300000,ping=3 $timestamp"
</code></pre>
<h3>API GET</h3>
<p><code>curl http://192.168.3.104:8086/query --data-urlencode "q=SHOW DATABASES"</code> pwsh7 (ConvertFrom-Json) and bash</p>
<p><code>$dbs = irm "http://192.168.3.104:8086/query?q=SHOW DATABASES"</code> <br> <code>$dbs = irm "http://192.168.3.104:8086/query?epoch=ms&u=admin&p=password&q=SHOW DATABASES"</code> <br> <code>$dbs.results.series.values</code></p>
<pre><code class="language-PowerShell">$ip = "192.168.3.104"
$port = "8086"
$db = "powershell"
$table = "speedtest"
$query = "SELECT * FROM $table"
$ipp = $ip+":"+$port
$url = "http://$ipp/query?db=$db&q=$query"
$data = Invoke-RestMethod -Method GET -Uri $url` -Credential $cred
$data.results.series.name ` имя таблицы
$data.results.series.columns` столбцы/ключи
$data.results.series.values ` данные построчно
</code></pre>
<h3>Endpoints</h3>
<p><a href="https://docs.influxdata.com/influxdb/v1.7/tools/api/">https://docs.influxdata.com/influxdb/v1.7/tools/api/</a></p>
<pre><code class="language-PowerShell">$stats = irm http://192.168.3.104:8086/debug/vars` статистика сервера
$stats."database:powershell".values` кол-во таблиц к БД
$stats.queryExecutor.values` количество query-запросов (обращений к endpoint /query)
$stats.write.values` количество write-запросов
$stats.system.uptime
</code></pre>
<p><code>http://192.168.3.104:8086/debug/requests</code> кол-во клиентских HTTP-запросов к конечным точкам /writeи /query <br> <code>http://192.168.3.104:8086/debug/pprof</code> <br> <code>http://192.168.3.104:8086/ping</code> <br> <code>http://192.168.3.104:8086/query</code> <br> <code>http://192.168.3.104:8086/write</code></p>
<p><code>http://192.168.3.99:8086/api/v2/setup</code> <br> <code>http://192.168.3.99:8086/api/v2/config</code> <br> <code>http://192.168.3.99:8086/api/v2/write</code></p>
<h3>PingTo-InfluxDB</h3>
<pre><code class="language-PowerShell">while ($true) {
$tz = (Get-TimeZone).BaseUtcOffset.TotalMinutes
$unixtime = (New-TimeSpan -Start (Get-Date "01/01/1970") -End ((Get-Date).AddMinutes(-$tz))).TotalSeconds` -3h UTC
$timestamp = ([string]$unixtime -replace "\..+") + "000000000"
$tnc = tnc 8.8.8.8
$Status = $tnc.PingSucceeded
$RTime = $tnc.PingReplyDetails.RoundtripTime
Invoke-RestMethod -Method POST -Uri "http://192.168.3.104:8086/write?db=powershell" -Body "ping,host=$(hostname) status=$status,rtime=$RTime $timestamp"
sleep 1
}
</code></pre>
<p><code>SELECT * FROM ping WHERE status = false</code></p>
<h3>PerformanceTo-InfluxDB</h3>
<pre><code class="language-PowerShell">function ConvertTo-Encoding ([string]$From, [string]$To) {
Begin {
$encFrom = [System.Text.Encoding]::GetEncoding($from)
$encTo = [System.Text.Encoding]::GetEncoding($to)
}
Process {
$bytes = $encTo.GetBytes($_)
$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
$encTo.GetString($bytes)
}
}
$localization = (Get-Culture).LCID` текущая локализация
if ($localization -eq 1049) {
$performance = "\\$(hostname)\Процессор(_Total)\% загруженности процессора" | ConvertTo-Encoding UTF-8 windows-1251` декодировать кириллицу
} else {
$performance = "\Processor(_Total)\% Processor Time"
}
$tz = (Get-TimeZone).BaseUtcOffset.TotalMinutes
while ($true) {
$unixtime = (New-TimeSpan -Start (Get-Date "01/01/1970") -End ((Get-Date).AddMinutes(-$tz))).TotalSeconds` -3h UTC
$timestamp = ([string]$unixtime -replace "\..+") + "000000000"
[double]$value = (Get-Counter $performance).CounterSamples.CookedValue.ToString("0.00").replace(",",".")` округлить в тип данных Double
Invoke-RestMethod -Method POST -Uri "http://192.168.3.104:8086/write?db=powershell" -Body "performance,host=$(hostname),counter=CPU value=$value $timestamp"
sleep 5
}
</code></pre>
<h3>Service</h3>
<pre><code class="language-PowerShell">$powershell_Path = (Get-Command powershell).Source
$NSSM_Path = "C:\NSSM\NSSM-2.24.exe"
$Script_Path = "C:\NSSM\PerformanceTo-InfluxDB.ps1"
$Service_Name = "PerformanceTo-InfluxDB"
& $NSSM_Path install $Service_Name $powershell_Path -ExecutionPolicy Bypass -NoProfile -f $Script_Path
Get-Service $Service_Name | Start-Service
Get-Service $Service_Name | Set-Service -StartupType Automatic
</code></pre>
<h1>Telegraf</h1>
<p>Plugins: <a href="https://docs.influxdata.com/telegraf/v1.27/plugins/#input-plugins">https://docs.influxdata.com/telegraf/v1.27/plugins/#input-plugins</a></p>
<p><code>iwr https://dl.influxdata.com/telegraf/releases/telegraf-1.27.1_windows_amd64.zip -UseBasicParsing -OutFile telegraf-1.27.1_windows_amd64.zip</code> <br> <code>Expand-Archive .\telegraf-1.27.1_windows_amd64.zip -DestinationPath "C:\Telegraf"</code> <br> <code>rm telegraf-1.27.1_windows_amd64.zip</code> <br> <code>cd C:\Telegraf</code> <br> <code>.\telegraf.exe -sample-config --input-filter cpu:mem:dns_query --output-filter influxdb > telegraf_nt.conf</code> создать конфигурацию с выбарнными плагинами для сбора метрик <br> <code>Start-Process notepad++ C:\Telegraf\telegraf_nt.conf</code></p>
<pre><code>[[outputs.influxdb]]
urls = ["http://192.168.3.104:8086"]
database = "telegraf_nt"
username = "user"
password = "pass"
[[inputs.cpu]]
percpu = false
totalcpu = true
[[inputs.dns_query]]
servers = ["8.8.8.8"]
network = "udp"
domains = ["."]
record_type = "A"
port = 53
timeout = "2s"
</code></pre>
<p><code>.\telegraf.exe --test -config C:\Telegraf\telegraf_nt.conf</code> тест конфигурации (получения метрик с выводом в консоль) <br> <code>C:\Telegraf\telegraf.exe -config C:\Telegraf\telegraf_nt.conf</code> запустить telegraf (тест отправки данных) <br> <code>.\telegraf.exe --config "C:\Telegraf\telegraf_nt.conf" --service install</code> создать службу <br> <code>Get-Service telegraf | Start-Service</code> <br> <code>.\telegraf.exe --service uninstall</code></p>
<p><code>USE telegraf</code> <br> <code>SELECT usage_idle,usage_system,usage_user FROM cpu</code></p>
<h1>Elasticsearch</h1>
<p><code>Install-Module -Name Elastic.Console -AllowPrerelease</code> <a href="https://github.com/elastic/powershell/raw/master/Elastic.Console/README.md">https://github.com/elastic/powershell/blob/master/Elastic.Console/README.md</a> <br> <code>Get-Command -Module Elastic.Console</code> <br> <code>Get-ElasticsearchVersion</code> <br> <code>Set-ElasticsearchVersion 7.3.0</code> <br> <code>Invoke-Elasticsearch</code> REST API запросы</p>
<h1>CData</h1>
<p><a href="https://www.powershellgallery.com/profiles/CData">https://www.powershellgallery.com/profiles/CData</a> <br> <a href="https://www.cdata.com/kb/tech/elasticsearch-ado-powershell.rst">https://www.cdata.com/kb/tech/elasticsearch-ado-powershell.rst</a></p>
<p><code>Install-Module ElasticsearchCmdlets</code> <a href="https://www.powershellgallery.com/packages/ElasticsearchCmdlets/23.0.8565.1">https://www.powershellgallery.com/packages/ElasticsearchCmdlets/23.0.8565.1</a> <br> <code>Import-Module ElasticsearchCmdlets</code> <br> <code>Get-Command -Module ElasticsearchCmdlets</code></p>
<pre><code class="language-PowerShell">$elasticsearch = Connect-Elasticsearch -Server "$Server" -Port "$Port" -User "$User" -Password "$Password"
$shipcity = "New York"
$orders = Select-Elasticsearch -Connection $elasticsearch -Table "Orders" -Where "ShipCity = `'$ShipCity`'"` поиск и получение данных
$orders = Invoke-Elasticsearch -Connection $elasticsearch -Query 'SELECT * FROM Orders WHERE ShipCity = @ShipCity' -Params @{'@ShipCity'='New York'}` SQL запросы
</code></pre>
<h3>ADO.NET Assembly</h3>
<p><code>Install-Package CData.Elasticsearch</code> <a href="https://www.nuget.org/packages/CData.Elasticsearch">https://www.nuget.org/packages/CData.Elasticsearch</a> <br> <code>[Reflection.Assembly]::LoadFile("C:\Program Files\PackageManagement\NuGet\Packages\CData.Elasticsearch.23.0.8565\lib\net40\System.Data.CData.Elasticsearch.dll")</code></p>
<pre><code class="language-PowerShell">$connect = New-Object System.Data.CData.Elasticsearch.ElasticsearchConnection("Server=127.0.0.1;Port=9200;User=admin;Password=123456;")
$connect.Open()
$sql = "SELECT OrderName, Freight from Orders"
$da = New-Object System.Data.CData.Elasticsearch.ElasticsearchDataAdapter($sql, $conn)
$dt = New-Object System.Data.DataTable
$da.Fill($dt)
$dt.Rows | foreach {
Write-Host $_.ordername $_.freight
}
</code></pre>
<h3>UPDATE</h3>
<pre><code class="language-PowerShell">Update-Elasticsearch -Connection $Elasticsearch -Columns @('OrderName','Freight') -Values @('MyOrderName', 'MyFreight') -Table Orders -Id "MyId"
$cmd = New-Object System.Data.CData.Elasticsearch.ElasticsearchCommand("UPDATE Orders SET ShipCity='New York' WHERE Id = @myId", $conn)
$cmd.Parameters.Add(new System.Data.CData.Elasticsearch.ElasticsearchParameter("@myId","10456255-0015501366"))
$cmd.ExecuteNonQuery()
</code></pre>
<h3>INSERT</h3>
<pre><code class="language-PowerShell">Add-Elasticsearch -Connection $Elasticsearch -Table Orders -Columns @("OrderName", "Freight") -Values @("MyOrderName", "MyFreight")
$cmd = New-Object System.Data.CData.Elasticsearch.ElasticsearchCommand("INSERT INTO Orders (ShipCity) VALUES (@myShipCity)", $conn)
$cmd.Parameters.Add(new System.Data.CData.Elasticsearch.ElasticsearchParameter("@myShipCity","New York"))
$cmd.ExecuteNonQuery()
</code></pre>
<h3>DELETE</h3>
<pre><code class="language-PowerShell">Remove-Elasticsearch -Connection $Elasticsearch -Table "Orders" -Id "MyId"
$cmd = New-Object System.Data.CData.Elasticsearch.ElasticsearchCommand("DELETE FROM Orders WHERE Id=@myId", $conn)
$cmd.Parameters.Add(new System.Data.CData.Elasticsearch.ElasticsearchParameter("@myId","001d000000YBRseAAH"))
$cmd.ExecuteNonQuery()
</code></pre>
<h1>ODBC</h1>
<p><code>Get-Command -Module Wdac</code> <br> <code>Get-OdbcDriver | ft</code> список установленных драйверов</p>
<p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-client-apps-ps1.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-client-apps-ps1.html</a></p>
<pre><code class="language-PowerShell">$connectstring = "DSN=Local Elasticsearch;"
$sql = "SELECT * FROM library"
$conn = New-Object System.Data.Odbc.OdbcConnection($connectstring)
$conn.open()
$cmd = New-Object system.Data.Odbc.OdbcCommand($sql,$conn)
$da = New-Object system.Data.Odbc.OdbcDataAdapter($cmd)
$dt = New-Object system.Data.datatable
$null = $da.fill($dt)
$conn.close()
$dt
</code></pre>
<h1>PostgreSQL</h1>
<p>Скачать и установить драйвер: <a href="https://www.postgresql.org/ftp/odbc/versions/msi/">https://www.postgresql.org/ftp/odbc/versions/msi/</a></p>
<pre><code class="language-PowerShell">$dbServer = "192.168.3.101"
$port = "5432"
$dbName = "test"
$dbUser = "admin"
$dbPass = "admin"
$szConnect = "Driver={PostgreSQL Unicode(x64)};Server=$dbServer;Port=$port;Database=$dbName;Uid=$dbUser;Pwd=$dbPass;"
$cnDB = New-Object System.Data.Odbc.OdbcConnection($szConnect)
$dsDB = New-Object System.Data.DataSet
try {
$cnDB.Open()
$adDB = New-Object System.Data.Odbc.OdbcDataAdapter
$adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand("SELECT id, name, age, login FROM public.users" , $cnDB)
$adDB.Fill($dsDB)
$cnDB.Close()
}
catch [System.Data.Odbc.OdbcException] {
$_.Exception
$_.Exception.Message
$_.Exception.ItemName
}
foreach ($row in $dsDB[0].Tables[0].Rows) {
$row.login
$row.age
}
</code></pre>
<h1>WMI</h1>
<h3>WMI/CIM (Windows Management Instrumentation/Common Information Model)</h3>
<p><code>Get-WmiObjec -ComputerName localhost -Namespace root -class "__NAMESPACE" | select name,__namespace</code> отобразить дочернии Namespace (логические иерархические группы) <br> <code>Get-WmiObject -List</code> отобразить все классы пространства имен "root\cimv2" (по умолчанию), свойства (описывают конфигурацию и текущее состояние управляемого ресурса) и их методы (какие действия позволяет выполнить над этим ресурсом) <br> <code>Get-WmiObject -List | Where-Object {$_.name -match "video"}</code> поиск класса по имени, его свойств и методов <br> <code>Get-WmiObject -ComputerName localhost -Class Win32_VideoController</code> отобразить содержимое свойств класса</p>
<p><code>gwmi -List | where name -match "service" | ft -auto</code> если в таблице присутствуют Methods, то можно взаимодействовать {StartService, StopService} <br> <code>gwmi -Class win32_service | select *</code> отобразить список всех служб и всех их свойств <br> <code>Get-CimInstance Win32_service</code> обращается на прямую к "root\cimv2" <br> <code>gwmi win32_service -Filter "name='Zabbix Agent'"</code> отфильтровать вывод по имени <br> <code>(gwmi win32_service -Filter "name='Zabbix Agent'").State</code> отобразить конкретное свойство <br> <code>gwmi win32_service -Filter "State = 'Running'"</code> отфильтровать запущенные службы <br> <code>gwmi win32_service -Filter "StartMode = 'Auto'"</code> отфильтровать службы по методу запуска <br> <code>gwmi -Query 'select * from win32_service where startmode="Auto"'</code> WQL-запрос (WMI Query Language) <br> <code>gwmi win32_service | Get-Member -MemberType Method</code> отобразить все методы взаимодействия с описание применения (Delete, StartService) <br> <code>(gwmi win32_service -Filter 'name="Zabbix Agent"').Delete()</code> удалить службу <br> <code>(gwmi win32_service -Filter 'name="MSSQL$MSSQLE"').StartService()</code> запустить службу</p>
<p><code>Get-CimInstance -ComputerName $srv Win32_OperatingSystem | select LastBootUpTime</code> время последнего включения <br> <code>gwmi -ComputerName $srv -Class Win32_OperatingSystem | select LocalDateTime,LastBootUpTime</code> текущее время и время последнего включения <br> <code>gwmi Win32_OperatingSystem | Get-Member -MemberType Method</code> методы reboot и shutdown <br> <code>(gwmi Win32_OperatingSystem -EnableAllPrivileges).Reboot()</code> используется с ключем повышения привелегий <br> <code>(gwmi Win32_OperatingSystem -EnableAllPrivileges).Win32Shutdown(0)</code> завершение сеанса пользователя</p>
<pre><code class="language-PowerShell">$system = Get-WmiObject -Class Win32_OperatingSystem
$InstallDate = [Management.ManagementDateTimeconverter]::ToDateTime($system.installdate)` Получаем дату установки ОС
$AfterInstallDays = ((Get-Date) — $Installdate).Days` Вычисляем время, прошедшее с момента установки
$ShortInstallDate = "{0:yyyy-MM-dd HH:MM}" -f ($InstallDate)
"Система установлена: $ShortInstallDate (Прошло $AfterInstalldays дней)"
</code></pre>
<p><code>(Get-WmiObject win32_battery).estimatedChargeRemaining</code> заряд батареи в процентах <br> <code>gwmi Win32_UserAccount</code> доменные пользователи <br> <code>(gwmi Win32_SystemUsers).PartComponent</code> <br> <code>Get-CimInstance -ClassName Win32_LogonSession</code> <br> <code>Get-CimInstance -ClassName Win32_BIOS</code></p>
<p><code>gwmi -list -Namespace root\CIMV2\Terminalservices</code> <br> <code>(gwmi -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices).AllowTSConnections</code> <br> <code>(gwmi -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices).SetAllowTSConnections(1)</code> включить RDP</p>
<pre><code>$srv = "localhost"
gwmi Win32_logicalDisk -ComputerName $srv | where {$_.Size -ne $null} | select @{
Label="Value"; Expression={$_.DeviceID}}, @{Label="AllSize"; Expression={
[string]([int]($_.Size/1Gb))+" GB"}},@{Label="FreeSize"; Expression={
[string]([int]($_.FreeSpace/1Gb))+" GB"}}, @{Label="Free%"; Expression={
[string]([int]($_.FreeSpace/$_.Size*100))+" %"}}
</code></pre>
<h3>NLA (Network Level Authentication)</h3>
<p><code>(gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -Filter "TerminalName='RDP-tcp'").UserAuthenticationRequired</code> <br> <code>(gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(1)</code> включить NLA <br> <code>Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name SecurityLayer</code> отобразить значение (2) <br> <code>Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name UserAuthentication</code> отобразить значение (1) <br> <code>Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name SecurityLayer -Value 0</code> изменить значение <br> <code>Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name UserAuthentication -Value 0</code> <br> <code>REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2</code> отключить на клиентском компьютере проверку версии CredSSP, если на целевом комьютере-сервере не установлены обновления KB4512509 от мая 2018 года</p>
<h1>Regedit</h1>
<p><code>Get-PSDrive</code> список всех доступных дисков/разделов, их размер и веток реестра <br> <code>cd HKLM:\</code> HKEY_LOCAL_MACHINE <br> <code>cd HKCU:\</code> HKEY_CURRENT_USER <br> <code>Get-Item</code> получить информацию о ветке реестра <br> <code>New-Item</code> создать новый раздел реестра <br> <code>Remove-Item</code> удалить ветку реестра <br> <code>Get-ItemProperty</code> получить значение ключей/параметров реестра (это свойства ветки реестра, аналогично свойствам файла) <br> <code>Set-ItemProperty</code> изменить название или значение параметра реестра <br> <code>New-ItemProperty</code> создать параметр реестра <br> <code>Remove-ItemProperty</code> удалить параметр</p>
<p><code>Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select DisplayName</code> список установленных программ <br> <code>Get-Item HKCU:\SOFTWARE\Microsoft\Office\16.0\Outlook\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002</code> посмотреть содержимое Items <br> <code>(Get-ItemProperty HKCU:\SOFTWARE\Microsoft\Office\16.0\Outlook\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002)."New Signature"</code> отобразить значение (Value) свойства (Property) Items <br> <code>$reg_path = "HKCU:\SOFTWARE\Microsoft\Office\16.0\Outlook\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002"</code> <br> <code>$sig_name = "auto"</code> <br> <code>Set-ItemProperty -Path $reg_path -Name "New Signature" -Value $sig_name</code> изменить или добавить в корне ветки (Path) свойство (Name) со значением (Value) <br> <code>Set-ItemProperty -Path $reg_path -Name "Reply-Forward Signature" -Value $sig_name</code></p>
<pre><code>Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe]
"Debugger"="\"C:\\Windows\\System32\\Taskmgr.exe\""
</code></pre>
<h1>Performance</h1>
<p><code>(Get-Counter -ListSet *).CounterSetName</code> вывести список всех доступных счетчиков производительности в системе <br> <code>(Get-Counter -ListSet *memory*).Counter</code> поиск по wildcard-имени во всех счетчиках (включая дочернии) <br> <code>Get-Counter "\Memory\Available MBytes"</code> объем свободной оперативной памяти <br> <code>Get-Counter -cn $srv "\LogicalDisk(*)\% Free Space"</code> % свободного места на всех разделах дисков <br> <code>(Get-Counter "\Process(*)\ID Process").CounterSamples</code> <br> <code>Get-Counter "\Processor(_Total)\% Processor Time" –ComputerName $srv -MaxSamples 5 -SampleInterval 2</code> 5 проверок каждые 2 секунды <br> <code>Get-Counter "\Процессор(_Total)\% загруженности процессора" -Continuous</code> непрерывно <br> <code>(Get-Counter "\Процессор(*)\% загруженности процессора").CounterSamples</code></p>
<p><code>(Get-Counter -ListSet *интерфейс*).Counter</code> найти все счетчики <br> <code>Get-Counter "\Сетевой интерфейс(*)\Всего байт/с"</code> отобразить все адаптеры (выбрать действующий по трафику)</p>
<pre><code class="language-PowerShell">$WARNING = 25
$CRITICAL = 50
$TransferRate = ((Get-Counter "\\huawei-mb-x-pro\сетевой интерфейс(intel[r] wi-fi 6e ax211 160mhz)\всего байт/с"
).countersamples | select -ExpandProperty CookedValue)*8
$NetworkUtilisation = [math]::round($TransferRate/1000000000*100,2)
if ($NetworkUtilisation -gt $CRITICAL){
Write-Output "CRITICAL: $($NetworkUtilisation) % Network utilisation, $($TransferRate.ToString('N0')) b/s"
#exit 2
}
if ($NetworkUtilisation -gt $WARNING){
Write-Output "WARNING: $($NetworkUtilisation) % Network utilisation, $($TransferRate.ToString('N0')) b/s"
#exit 1
}
Write-Output "OK: $($NetworkUtilisation) % Network utilisation, $($TransferRate.ToString('N0')) b/s"
#exit 0
</code></pre>
<h1>SNMP</h1>
<h3>Setup SNMP Service</h3>
<p><code>Install-WindowsFeature SNMP-Service,SNMP-WMI-Provider -IncludeManagementTools</code> установить роль SNMP и WMI провайдер через Server Manager <br> <code>Get-WindowsFeature SNMP*</code> <br> <code>Add-WindowsCapability -Online -Name SNMP.Client~~~~0.0.1.0</code> установить компонент Feature On Demand для Windows 10/11<code>\</code>Get-Service SNMP*<code>\</code>Get-NetFirewallrule -DisplayName <em>snmp</em> | ft<code>\</code>Get-NetFirewallrule -DisplayName <em>snmp</em> | Enable-NetFirewallRule`</p>
<h3>Setting SNMP Service via Regedit</h3>
<p>Agent: <br> <code>New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent" -Name "sysContact" -Value "lifailon-user"</code> создать (New) или изменить (Set) <br> <code>New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent" -Name "sysLocation" -Value "plex-server"</code></p>
<p>Security: <br> <code>New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\public"</code> создать новый community string <br> <code>New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities" -Name "public" -Value 16</code> назначить права на public <br> <code>1 — NONE</code> <br> <code>2 — NOTIFY</code> позволяет получать SNMP ловушки <br> <code>4 — READ ONLY</code> позволяет получать данные с устройства <br> <code>8 — READ WRITE</code> позволяет получать данные и изменять конфигурацию устройства <br> <code>16 — READ CREATE</code> позволяет читать данные, изменять и создавать объекты <br> <code>New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\PermittedManagers" -Name "1" -Value "192.168.3.99"</code> от кого разрешено принимать запросы <br> <code>Get-Service SNMP | Restart-Service</code></p>
<h3>snmpwalk</h3>
<p><code>snmpwalk -v 2c -c public 192.168.3.100</code> <br> <code>snmpwalk -v 2c -c public -O e 192.168.3.100</code></p>
<h3>Modules</h3>
<p><code>Install-Module -Name SNMP</code> <br> <code>Get-SnmpData -IP 192.168.3.100 -OID 1.3.6.1.2.1.1.4.0 -UDPport 161 -Community public</code> <br> <code>(Get-SnmpData -IP 192.168.3.100 -OID 1.3.6.1.2.1.1.4.0).Data</code> <br> <code>Invoke-SnmpWalk -IP 192.168.3.100 -OID 1.3.6.1.2.1.1</code> пройтись по дереву OID <br> <code>Invoke-SnmpWalk -IP 192.168.3.100 -OID 1.3.6.1.2.1.25.6.3.1.2</code> список установленного ПО <br> <code>Invoke-SnmpWalk -IP 192.168.3.100 -OID 1.3.6.1.2.1.25.2.3.1</code> список разделов и памяти (C: D: Virtual Memory и Physical Memory) <br> <code>Set-SnmpData</code> изменение данных на удаленном устройстве</p>
<p><code>Install-Module -Name SNMPv3</code> <br> <code>Invoke-SNMPv3Get</code> получение данных по одному OID <br> <code>Invoke-SNMPv3Set</code> изменение данных <br> <code>Invoke-SNMPv3Walk</code> обход по дереву OID <br> <code>Invoke-SNMPv3Walk -UserName lifailon -Target 192.168.3.100 -AuthSecret password -PrivSecret password -OID 1.3.6.1.2.1.1 -AuthType MD5 -PrivType AES128</code></p>
<h3>Lextm.SharpSnmpLib</h3>
<p><a href="https://api.nuget.org/v3-flatcontainer/lextm.sharpsnmplib/12.5.2/lextm.sharpsnmplib.12.5.2.nupkg">https://api.nuget.org/v3-flatcontainer/lextm.sharpsnmplib/12.5.2/lextm.sharpsnmplib.12.5.2.nupkg</a> <br> <code>Add-Type -LiteralPath "$home\Desktop\lextm.sharpsnmplib-12.5.2\net471\SharpSnmpLib.dll"</code></p>
<pre><code class="language-PowerShell">$port = 161
$OID = "1.3.6.1.2.1.1.4.0"
$variableList = New-Object Collections.Generic.List[Lextm.SharpSnmpLib.Variable]
$variableList.Add([Lextm.SharpSnmpLib.Variable]::new([Lextm.SharpSnmpLib.ObjectIdentifier]::new($OID)))
$timeout = 3000
[Net.IPAddress]$ip = "192.168.3.100"
$endpoint = New-Object Net.IpEndPoint $ip, $port
$Community = "public"
[Lextm.SharpSnmpLib.VersionCode]$Version = "V2"
$message = [Lextm.SharpSnmpLib.Messaging.Messenger]::Get(
$Version,
$endpoint,
$Community,
$variableList,
$TimeOut
)
$message.Data.ToString()
</code></pre>
<h3>Walk</h3>
<pre><code class="language-PowerShell">[Lextm.SharpSnmpLib.ObjectIdentifier]$OID = "1.3.6.1.2.1.1" # дерево или конечный OID
$WalkMode = [Lextm.SharpSnmpLib.Messaging.WalkMode]::WithinSubtree # режим обхода по дереву
$results = New-Object Collections.Generic.List[Lextm.SharpSnmpLib.Variable]
$message = [Lextm.SharpSnmpLib.Messaging.Messenger]::Walk(
$Version,
$endpoint,
$Community,
$OID,
$results,
$TimeOut,
$WalkMode
)
$results
$results2 = @()
foreach ($d in $results) {
$results2 +=[PSCustomObject]@{'ID'=$d.id.ToString();'Data'=$d.Data.ToString()} # перекодировать вывод построчно в строку
}
$results2
</code></pre>
<h1>Zabbix</h1>
<h3>Zabbix Agent Deploy</h3>
<pre><code class="language-PowerShell">$url = "https://cdn.zabbix.com/zabbix/binaries/stable/6.4/6.4.5/zabbix_agent2-6.4.5-windows-amd64-static.zip"
$path = "$home\Downloads\zabbix-agent2-6.4.5.zip"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($url, $path)` скачать файл
Expand-Archive $path -DestinationPath "C:\zabbix-agent2-6.4.5\"` разархивировать
Remove-Item $path` удалить архив
New-NetFirewallRule -DisplayName "Zabbix-Agent" -Profile Any -Direction Inbound -Action Allow -Protocol TCP -LocalPort 10050,10051` открыть порты в FW
$Zabbix_Server = "192.168.3.102"
$conf = "C:\zabbix-agent2-6.4.5\conf\zabbix_agent2.conf"
$cat = cat $conf
$rep = $cat -replace "Server=.+","Server=$Zabbix_Server"
$rep | Select-String Server=
$rep > $conf
$exe = "C:\zabbix-agent2-6.4.5\bin\zabbix_agent2.exe"
.$exe --config $conf --install` установить службу
Get-Service *Zabbix*Agent* | Start-Service` запустить службу
#.$exe --config $conf --uninstall` удалить службу
</code></pre>
<h3>zabbix_sender</h3>
<p>Создать host - задать произвольное имя (powershell-host) и добавить в группу <br> Создать Items: <br> Name: Service Count <br> Type: Zabbix trapper <br> Key: service.count <br> Type of Information: Numeric</p>
<pre><code class="language-PowerShell">$path = "C:\zabbix-agent2-6.4.5\bin"
$scount = (Get-Service).Count
.$path\zabbix_sender.exe -z 192.168.3.102 -s "powershell-host" -k service.count -o $scount
</code></pre>
<h3>zabbix_get</h3>
<p><code>apt install zabbix-get</code> <br> <code>nano /etc/zabbix/zabbix_agentd.conf</code> <br> <code>Server=127.0.0.1,192.168.3.102,192.168.3.99</code> добавить сервера для получения данных zabbix_get с агента (как их запрашивает сервер)</p>
<p><code>.$path\zabbix_get -s 192.168.3.101 -p 10050 -k agent.version</code> проверить версию агента <br> <code>.$path\zabbix_get -s 192.168.3.101 -p 10050 -k agent.ping</code> 1 - ok <br> <code>.$path\zabbix_get -s 192.168.3.101 -p 10050 -k net.if.discovery</code> список сетевых интерфейсов <br> <code>.$path\zabbix_get -s 192.168.3.101 -p 10050 -k net.if.in["ens33"]</code> <br> <code>.$path\zabbix_get -s 192.168.3.101 -p 10050 -k net.if.out["ens33"]</code></p>
<h3>UserParameter</h3>
<p><code>UserParameter=process.count,powershell -Command "(Get-Process).Count"</code> <br> <code>UserParameter=process.vm[*],powershell -Command "(Get-Process $1).ws"</code></p>
<p>Test: <br> <code>C:\zabbix-agent2-6.4.5\bin\zabbix_get.exe -s 127.0.0.1 -p 10050 -k process.count</code> <br> <code>C:\zabbix-agent2-6.4.5\bin\zabbix_get.exe -s 127.0.0.1 -p 10050 -k process.vm[zabbix_agent2] </code><br> <code>C:\zabbix-agent2-6.4.5\bin\zabbix_get.exe -s 127.0.0.1 -p 10050 -k process.vm[powershell]</code></p>
<p>Создать новые Items: <br> key: <code>process.count</code> <br> key: <code>process.vm[zabbix_agent2]</code></p>
<h3>Include</h3>
<ul>
<li> <p>Добавить параметр Include для включения конфигурационных файлов подключаемых плагинов <code>'Include=.\zabbix_agent2.d\plugins.d\*.conf' >> C:\zabbix-agent2-6.4.5\conf\zabbix_agent2.conf</code></p> </li>
<li> <p>Создать конфигурационный файл с пользовательскими параметрами в каталоге, путь к которому указан в zabbix_agentd.conf <br> <code>'UserParameter=Get-Query-Param[*],powershell.exe -noprofile -executionpolicy bypass -File C:\zabbix-agent2-6.4.5\conf\zabbix_agent2.d\scripts\User-Sessions\Get-Query-Param.ps1 $1' > C:\zabbix-agent2-6.4.5\conf\zabbix_agent2.d\plugins.d\User-Sessions.conf</code></p> </li>
<li> <p>Поместить скрипт Get-Query-Param.ps1 в каталог, путь к которому указан в User-Sessions.conf. Скрипт содержим пользовательские параметры, которые он принимает от Zabbix сервера для передачи их в функции скрипта.</p> </li>
</ul>
<pre><code class="language-PowerShell">Param([string]$select)
if ($select -eq "ACTIVEUSER") {
(Get-Query | where status -match "Active").User
}
if ($select -eq "INACTIVEUSER") {
(Get-Query | where status -match "Disconnect").User
}
if ($select -eq "ACTIVECOUNT") {
(Get-Query | where status -match "Active").Status.Count
}
if ($select -eq "INACTIVECOUNT") {
(Get-Query | where status -match "Disconnect").Status.Count
}
</code></pre>
<ul>
<li>Проверить работу скрипта:</li>
</ul>
<p><code>$path = "C:\zabbix-agent2-6.4.5\conf\zabbix_agent2.d\scripts\User-Sessions"</code> <br> <code>.$path\Get-Query-Param.ps1 ACTIVEUSER</code> <br> <code>.$path\Get-Query-Param.ps1 INACTIVEUSER</code> <br> <code>.$path\Get-Query-Param.ps1 ACTIVECOUNT</code> <br> <code>.$path\Get-Query-Param.ps1 INACTIVECOUNT</code></p>
<ul>
<li>Создать Items с ключами:</li>
</ul>
<p><code>Get-Query-Param[ACTIVEUSER]</code> Type: Text <br> <code>Get-Query-Param[INACTIVEUSER]</code> Type: Text <br> <code>Get-Query-Param[ACTIVECOUNT]</code> Type: Int <br> <code>Get-Query-Param[INACTIVECOUNT]</code> Type: Int</p>
<ul>
<li>Макросы:</li>
</ul>
<p><code>{$ACTIVEMAX} = 16</code> <br> <code>{$ACTIVEMIN} = 0</code></p>
<ul>
<li>Триггеры:</li>
</ul>
<p><code>last(/Windows-User-Sessions/Get-Query-Param[ACTIVECOUNT])>{$ACTIVEMAX}</code> <br> <code>min(/Windows-User-Sessions/Get-Query-Param[ACTIVECOUNT],24h)={$ACTIVEMIN}</code></p>
<h3>zabbix_agent2.conf</h3>
<pre><code># Агент может работать в пассивном (сервер забирает сам информацию) и активном режиме (агент сам отправляет):
Server=192.168.3.102
ServerActive=192.168.3.102
# Требуется указать hostname для ServerActive:
Hostname=huawei-book-01
# Если не указано, используется для генерации имени хоста (игнорируется, если имя хоста определено):
# HostnameItem=system.hostname
# Как часто обновляется список активных проверок, в секундах (Range: 60-3600):
RefreshActiveChecks=120
# IP-адрес источника для исходящих соединений:
# SourceIP=
# Агент будет слушать на этом порту соединения с сервером (Range: 1024-32767):
# ListenPort=10050
# Список IP-адресов, которые агент должен прослушивать через запятую
# ListenIP=0.0.0.0
# Агент будет прослушивать этот порт для запросов статуса HTTP (Range: 1024-32767):
# StatusPort=
ControlSocket=\\.\pipe\agent.sock
# Куда вести журнал (file/syslog/console):
LogType=file
LogFile=C:\zabbix-agent2-6.4.5\zabbix_agent2.log
# Размер лога от 0-1024 MB (0 - отключить автоматическую ротацию логов)
LogFileSize=100
# Уровень логирования. 4 - для отладки (выдает много информации)
DebugLevel=4
</code></pre>
<h3>API Token</h3>
<p><a href="https://www.zabbix.com/documentation/current/en/manual/api/reference">https://www.zabbix.com/documentation/current/en/manual/api/reference</a></p>
<p><code>$ip = "192.168.3.102"</code> <br> <code>$url = "http://$ip/zabbix/api_jsonrpc.php"</code></p>
<pre><code class="language-PowerShell">$data = @{
"jsonrpc"="2.0";
"method"="user.login";
"params"=@{
"username"="Admin";` в версии до 6.4 параметр "user"
"password"="zabbix";
};
"id"=1;
}
$token = (Invoke-RestMethod -Method POST -Uri $url -Body ($data | ConvertTo-Json) -ContentType "application/json").Result
</code></pre>
<p><code>$token = "2eefd25fdf1590ebcdb7978b5bcea1fff755c65b255da8cbd723181b639bb789"</code> сгенерировать токен в UI (<a href="http://192.168.3.102/zabbix/zabbix.php?action=token.list">http://192.168.3.102/zabbix/zabbix.php?action=token.list</a>)</p>
<h3>user.get</h3>
<pre><code class="language-PowerShell">$data = @{
"jsonrpc"="2.0";
"method"="user.get";
"params"=@{
};
"auth"=$token;
"id"=1;
}
$users = (Invoke-RestMethod -Method POST -Uri $url -Body ($data | ConvertTo-Json) -ContentType "application/json").Result
</code></pre>
<h3>problem.get</h3>
<pre><code class="language-PowerShell">$data = @{
"jsonrpc"="2.0";
"method"="problem.get";
"params"=@{
};
"auth"=$token;
"id"=1;
}
(Invoke-RestMethod -Method POST -Uri $url -Body ($data | ConvertTo-Json) -ContentType "application/json").Result
</code></pre>
<h3>host.get</h3>
<p>Получить список всех хостов (имя и id)</p>
<p><a href="https://www.zabbix.com/documentation/current/en/manual/api/reference/host">https://www.zabbix.com/documentation/current/en/manual/api/reference/host</a></p>
<p>host.create - creating new hosts <br> host.delete - deleting hosts <br> host.get - retrieving hosts <br> host.massadd - adding related objects to hosts <br> host.massremove - removing related objects from hosts <br> host.massupdate - replacing or removing related objects from hosts <br> host.update - updating hosts</p>
<pre><code class="language-PowerShell">$data = @{
"jsonrpc"="2.0";
"method"="host.get";
"params"=@{
"output"=@(` отфильтровать вывод
"hostid";
"host";
);
};
"id"=2;
"auth"=$token;
}
$hosts = (Invoke-RestMethod -Method POST -Uri $url -Body ($data | ConvertTo-Json) -ContentType "application/json").Result
$host_id = $hosts[3].hostid` забрать id хоста по индексу
</code></pre>
<h3>item.get</h3>
<p>Получить id элементов данных по наименованию ключа для конкретного хоста</p>
<pre><code class="language-PowerShell">$data = @{
"jsonrpc"="2.0";
"method"="item.get";
"params"=@{
"hostids"=@($host_id);` отфильтровать по хосту
};
"auth"=$token;
"id"=1;
}
$items = (Invoke-RestMethod -Method POST -Uri $url -Body ($data | ConvertTo-Json) -ContentType "application/json").Result
$items_id = ($items | where key_ -match system.uptime).itemid` забрать id элемента данных
</code></pre>
<h3>history.get</h3>
<p>Получить всю историю элемента данных по его id</p>
<pre><code class="language-PowerShell">$data = @{
"jsonrpc"="2.0";
"method"="history.get";
"params"=@{
"hostids"=@($host_id); ` фильтрация по хосту
"itemids"=@($items_id);` фильтрация по элементу данных
};
"auth"=$token;
"id"=1;
}
$items_data_uptime = (Invoke-RestMethod -Method POST -Uri $url -Body ($data | ConvertTo-Json) -ContentType "application/json").Result` получить все данные по ключу у конкретного хоста
</code></pre>
<h3>Convert Secconds To TimeSpan and DateTime</h3>
<p><code>$sec = $items_data_uptime.value</code></p>
<pre><code class="language-PowerShell">function ConvertSecondsTo-TimeSpan {
param (
$insec
)
$TimeSpan = [TimeSpan]::fromseconds($insec)
"{0:dd' day 'hh\:mm\:ss}" -f $TimeSpan
}
</code></pre>
<p><code>$UpTime = ConvertSecondsTo-TimeSpan $sec[-1]</code></p>
<h3>Convert From Unix Time</h3>
<p><code>$time = $items_data_uptime.clock</code></p>
<pre><code class="language-PowerShell">function ConvertFrom-UnixTime {
param (
$intime
)
$EpochTime = [DateTime]"1/1/1970"
$TimeZone = Get-TimeZone
$UTCTime = $EpochTime.AddSeconds($intime)
$UTCTime.AddMinutes($TimeZone.BaseUtcOffset.TotalMinutes)
}
</code></pre>
<p><code>$GetDataTime = ConvertFrom-UnixTime $time[-1]</code></p>
<p><code>($hosts | where hostid -eq $host_id).host</code> получить имя хоста <br> <code>$UpTime</code> последнее полученное значение времени работы хоста <br> <code>$GetDataTime</code> время последнего полученного значения</p>
<h1>pki</h1>
<p><code>New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "$env:computername" -FriendlyName "Test Certificate" -NotAfter (Get-Date).AddYears(5)</code> создать самоподписанный сертификат (в LocalMachine\My - Сертификаты компьютера\Личное) с сроком действия 5 лет</p>
<p><code>Get-ChildItem -Path Cert:\CurrentUser\Root\</code> список всех установленных сертификатов в хранилище Доверенные корневые ЦС Текущего пользователя <br> <code>Get-ChildItem -Path Cert:\CurrentUser\My\</code> список самозаверяющих сертификатов в Личное хранилище Текущего пользователя <br> <code>Get-ChildItem -Path Cert:\LocalMachine\My\</code> список самозаверяющих сертификатов в Личное хранилище Локального компьютера <br> <code>Get-ChildItem -Path Cert:\LocalMachine\My\ | select NotBefore,NotAfter,Thumbprint,Subject</code> срок действия сертификата <br> <code>Get-ChildItem -Path Cert:\LocalMachine\My\ | where Thumbprint -eq D9356FB774EE0E6206B7D5B59B99102CA5B17BDA</code> поиск сертификат по отпечатку</p>
<p><code>Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Certificates\</code> сертификаты в файловой системе, каждый файл соответствует сертификату, установленному в личном хранилище текущего пользователя <br> <code>Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Keys\</code> ссылки на объекты закрытых ключей, созданных поставщиком хранилища ключей (KSP) <br> <code>Get-ChildItem -Path HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates | ft -AutoSize</code> список сертификатов в реестре вошедшего в систему пользователя</p>
<p><code>$cert = (Get-ChildItem -Path Cert:\CurrentUser\My\)[1]</code> выбрать сертификат <br> <code>$cert | Remove-Item</code> удалить сертификат</p>
<p><code>Export-Certificate -FilePath $home\Desktop\certificate.cer -Cert $cert</code> экспортировать сертификат <br> <code>$cert.HasPrivateKey</code> проверить наличие закрытого ключа <br> <code>$pass = "password" | ConvertTo-SecureString -AsPlainText -Force</code> создать пароль для шифрования закрытого ключа <br> <code>Export-PfxCertificate -FilePath $home\Desktop\certificate.pfx -Password $pass -Cert $certificate</code> экспортировать сертификат с закрытым ключем</p>
<p><code>Import-Certificate -FilePath $home\Desktop\certificate.cer -CertStoreLocation Cert:\CurrentUser\My</code> импортировать сертификат <br> <code>Import-PfxCertificate -Exportable -Password $pass -CertStoreLocation Cert:\CurrentUser\My -FilePath $home\Desktop\certificate.pfx</code></p>
<h1>OpenSSL</h1>
<pre><code class="language-PowerShell">Invoke-WebRequest -Uri https://slproweb.com/download/Win64OpenSSL_Light-3_1_1.msi -OutFile $home\Downloads\OpenSSL-Light-3.1.1.msi
Start-Process $home\Downloads\OpenSSL-Light-3.1.1.msi -ArgumentList '/quiet' -Wait` установить msi пакет в тихом режиме (запуск от имени Администратора)
rm $home\Downloads\OpenSSL-Light-3.1.1.msi
cd "C:\Program Files\OpenSSL-Win64\bin"
</code></pre>
<ul>
<li> <p>Изменить пароль для PFX <br> <code>openssl pkcs12 -in "C:\Cert\domain.ru.pfx" -out "C:\Cert\domain.ru.pem" -nodes</code> экспортируем имеющийся сертификат и закрытый ключ в .pem-файл без пароля с указанием текущего пароля <br> <code>openssl pkcs12 -export -in "C:\Cert\domain.ru.pem" -out "C:\Cert\domain.ru_password.pfx" -nodes</code> конвертируем .pem обратно в .pfx c указанием нового пароля</p> </li>
<li> <p>Конвертация из закрытого и открытого ключа PEM в PFX <br> <code>openssl pkcs12 -export -in "C:\tmp\vpn\vpn.itproblog.ru-crt.pem" -inkey "C:\tmp\vpn\vpn.itproblog.ru-key.pem" -out "C:\tmp\vpn\vpn.iiproblog.ru.pfx"</code> <br> in – путь до файла с открытым ключом <br> inkey – путь до файла с закрытым ключом <br> out – путь до файла, в который будет конвертирован сертификат (pfx)</p> </li>
<li> <p>Конвертация PFX в CRT <br> <code>openssl pkcs12 -in "C:\OpenSSL-Win64\bin\_.domain.ru.pfx" -clcerts -out "C:\OpenSSL-Win64\bin\_.domain.ru.crt"</code> указывается текущий и 2 раза новый пароль PEM pass phrase (файл содержит EGIN CERTIFICATE и BEGIN ENCRYPTED PRIVATE KEY) <br> <code>openssl pkcs12 -in "C:\OpenSSL-Win64\bin\_.domain.ru.pfx" -clcerts -nokeys -out "C:\OpenSSL-Win64\bin\_.domain.ru.crt"</code> без ключа, получить открытую часть (файл содержит только EGIN CERTIFICATE)</p> </li>
<li> <p>Конвертация PFX в KEY <br> <code>openssl pkcs12 -in "C:\OpenSSL-Win64\bin\_.domain.ru.pfx" -nocerts -out "C:\OpenSSL-Win64\bin\_.domain.ru.key"</code> файл содержит только BEGIN ENCRYPTED PRIVATE KEY</p> </li>
<li> <p>Снять пароль к закрытого ключа .key <br> <code>openssl rsa -in "C:\OpenSSL-Win64\bin\_.domain.ru.key" -out "C:\OpenSSL-Win64\bin\_.domain.ru-decrypted.key"</code></p> </li>
<li> <p>CRT и KEY в PFX: <br> <code>openssl pkcs12 -inkey certificate.key -in certificate.crt -export -out certificate.pfx</code></p> </li>
</ul>
<h1>OpenVPN</h1>
<p><code>Invoke-WebRequest -Uri https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.5-I001-amd64.msi -OutFile $home\Downloads\OpenVPN-2.6.5.msi</code> <br> <code>Start-Process $home\Downloads\OpenVPN-2.6.5.msi -ArgumentList '/quiet /SELECT_OPENSSL_UTILITIES=1' -Wait</code> <br> <code>msiexec /i $home\Downloads\OpenVPN-2.6.5.msi ADDLOCAL=EasyRSA /passive /quiet # установить отдельный компонент EasyRSA Certificate Management Scripts</code> <br> <code># msiexec /i $home\Downloads\OpenVPN-2.6.5.msi ADDLOCAL=OpenVPN.Service,Drivers,Drivers.Wintun,OpenVPN,OpenVPN.GUI,OpenVPN.GUI.OnLogon,EasyRSA /passive</code> выборочная установка <br> <code># Invoke-WebRequest -Uri https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.5/EasyRSA-3.1.5-win64.zip -OutFile $home\Downloads\EasyRSA-3.1.5.zip</code> скачать отдельный пакет EasyRSA <br> <code>rm $home\Downloads\OpenVPN-2.6.5.msi</code></p>
<p><code>cd "C:\Program Files\OpenVPN\easy-rsa"</code> <br> <code>Copy-Item vars.example vars</code> файл конфигурации для EasyRSA</p>
<pre><code>set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI"
set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "MSK"
set_var EASYRSA_REQ_CITY "MSK"
set_var EASYRSA_REQ_ORG "FAILON.NET"
set_var EASYRSA_REQ_EMAIL "lifailon@domain.ru"
set_var EASYRSA_REQ_OU "IT"
#set_var EASYRSA_KEY_SIZE 2048
#set_var EASYRSA_CA_EXPIRE 3650
#set_var EASYRSA_CERT_EXPIRE 825
</code></pre>
<p><code>.\EasyRSA-Start.bat</code> среда EasyRSA Shell <br> <code>easyrsa init-pki</code> инициализация PKI, создает директорию: C:\Program Files\OpenVPN\easy-rsa\pki и читает переменные файла \easy-rsa\vars <br> <code>easyrsa build-ca</code> генерация корневого CA с указанием пароля и произвольное имя сервера (\pki\ca.crt и \pki\private\ca.key) <br> <code>easyrsa gen-req server nopass</code> генерация запроса сертификата и ключ для сервера OpenVPN - yes (\pki\reqs\server.req и \pki\private\server.key) <br> <code>easyrsa sign-req server server</code> подписать запрос на выпуск сертификата сервера с помощью CA - yes (\pki\issued\server.crt) <br> <code>easyrsa gen-dh</code> создать ключ Диффи-Хеллмана (\pki\dh.pem) <br> <code>easyrsa gen-req client1</code> nopass<code> генерация запроса сертификата и ключ для клиента OpenVPN (\pki\reqs\client1.req и \pki\private\client1.key)</code> <br> <code>easyrsa sign-req client client1</code> подписать запрос на выпуск сертификата клиента с помощью CA - yes (\pki\issued\client1.crt) <br> <code>easyrsa revoke client1</code> отозвать сертификат пользователя <br> <code>openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\client1.key" -out "C:\Program Files\OpenVPN\easy-rsa\pki\private\client1_nopass.key"</code> снять защиту паролем для ключа (BEGIN ENCRYPTED PRIVATE KEY -> BEGIN PRIVATE KEY) <br> <code>exit</code> <br> <code>cd "C:\Program Files\OpenVPN\bin"</code> <br> <code>.\openvpn --genkey secret ta.key</code> генерация ключа tls-auth (\bin\ta.key) <br> <code>Move-Item "C:\Program Files\OpenVPN\bin\ta.key" "C:\Program Files\OpenVPN\easy-rsa\pki\"</code></p>
<h3>server.ovpn</h3>
<p><code># Copy-Item "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"</code> <br> <code>New-Item -ItemType File -Path "C:\Program Files\OpenVPN\config-auto\server.ovpn"</code></p>
<pre><code>port 1194
proto udp
# Что именно инкапсулировать в туннеле (ethernet фреймы - tap или ip пакеты - tun)
dev tun
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
server 192.168.4.0 255.255.255.0
# Хранит список сопоставления ip для клиентов, что бы назначить тот же адрес при перезапуске сервера
# ifconfig-pool-persist "C:\\Program Files\\OpenVPN\\dhcp-client-list.txt"
# Разрешить клиентам подключаться под одним ключом
# duplicate-cn
# max-clients 30
# Разрешить обмен трафиком между клиентами
client-to-client
# compress
tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0
cipher AES-256-GCM
keepalive 20 60
# Не перечитавать файлы ключей при перезапуске туннеля
persist-key
# Оставляет без изменения устройства tun/tap при перезапуске OpenVPN
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 3
mute 20
windows-driver wintun
# Открыть доступ к подсети за сервером
push "route 192.168.3.0 255.255.255.0"
push "route 192.168.4.0 255.255.255.0"
# Завернуть все запросы клиента (в том числе Интернет трафик) на OpenVPN сервер
# push "redirect-gateway def1"
# push "dhcp-option DNS 192.168.3.101"
# push "dhcp-option DOMAIN failon.net"
</code></pre>
<p><code>New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow</code> на сервере <br> <code>New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP –LocalPort 1194 -Action Allow</code> на клиенте <br> <code>Get-Service *openvpn* | Restart-Service</code></p>
<h3>client.ovpn</h3>
<p><code># Copy-Item "C:\Program Files\OpenVPN\sample-config\client.ovpn" "C:\Program Files\OpenVPN\config-auto\client.ovpn"</code> <br> <code>New-Item -ItemType File -Path "C:\Program Files\OpenVPN\config-auto\client.ovpn"</code></p>
<pre><code>client
dev tun
proto udp
remote 26.115.154.67 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
# Использовать драйвер wintun и полный путь до сертификатов при использовании openvpn gui
windows-driver wintun
verb 3
</code></pre>
<h3>Client</h3>
<p><code>iwr -Uri https://openvpn.net/downloads/openvpn-connect-v3-windows.msi -OutFile "$home\downloads\OpenVPN-Connect-3.msi"</code> <br> Передать конфигурацию и ключи: <br> <code>client.ovpn</code> <br> <code>ca.crt</code> <br> <code>dh.pem</code> <br> <code>ta.key</code> <br> <code>client1.crt</code> <br> <code>client1.key</code></p>
<h1>Route</h1>
<p><code>Get-Service RemoteAccess | Stop-Service</code> <br> <code>Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "IPEnableRouter" -Value 1</code> включает IP маршрутизацию <br> <code>(Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters").IPEnableRouter</code> <br> <code>Get-NetIPInterface | select ifIndex,InterfaceAlias,AddressFamily,ConnectionState,Forwarding | ft</code> отобразить сетевые интерфейсы <br> <code>Set-NetIPInterface -ifIndex 13 -Forwarding Enabled</code> включить переадресацию на интерфейсе</p>
<p><code>sysctl net.ipv4.ip_forward=1</code> <br> <code>echo "sysctl net.ipv4.ip_forward = 1" >> /etc/sysctl.conf</code></p>
<p><code>Get-NetRoute</code> <br> <code>New-NetRoute -DestinationPrefix "192.168.3.0/24" -NextHop "192.168.4.1" -InterfaceIndex 8</code> <br> <code>route -p add 192.168.3.0 mask 255.255.255.0 192.168.4.1 metric 1</code> <br> <code>route -p change 192.168.3.0 mask 255.255.255.0 192.168.4.1 metric 2</code> <br> <code>route -p add 192.168.3.0 mask 255.255.255.0 192.168.4.1 metric 1 if 7</code> указать номер сетевого интерфейса на который необходимо посылать пакет (Wintun Userspace Tunnel) <br> <code>route print -4</code> <br> <code>route delete 192.168.3.0</code></p>
<p><code>tracert 192.168.3.101</code> с 192.168.4.6</p>
<pre><code>1 17 ms * 22 ms 192.168.4.1
2 12 ms 13 ms 14 ms 192.168.3.101
</code></pre>
<p><code>route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.3.100</code> <br> <code>route -e</code></p>
<p><code>traceroute 192.168.4.6</code> с 192.168.3.101</p>
<pre><code>1 192.168.3.100 (192.168.3.100) 0.148 ms 0.110 ms 0.106 ms
2 192.168.4.6 (192.168.4.6) 14.573 ms * *
</code></pre>
<p><code>ping 192.168.3.101 -t</code> с 192.168.4.6 <br> <code>tcpdump -n -i ens33 icmp</code> на 192.168.3.101</p>
<pre><code>14:36:34.533771 IP 192.168.4.6 > 192.168.3.101: ICMP echo request, id 1, seq 2962, length 40 # отправил запрос
14:36:34.533806 IP 192.168.3.101 > 192.168.4.6: ICMP echo reply, id 1, seq 2962, length 40 # отправил ответ
</code></pre>
<h1>NAT</h1>
<p><code>Get-Command -Module NetNat</code> <br> <code>New-NetNat -Name LocalNat -InternalIPInterfaceAddressPrefix "192.168.3.0/24"</code> <br> <code>Add-NetNatStaticMapping -NatName LocalNat -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 80 -InternalIPAddress 192.168.3.102 -InternalPort 80</code> <br> <code>Remove-NetNatStaticMapping -StaticMappingID 0</code> <br> <code>Remove-NetNat -Name LocalNat</code></p>
<h1>WireGuard</h1>
<p><code>Invoke-WebRequest "https://download.wireguard.com/windows-client/wireguard-amd64-0.5.3.msi" -OutFile "$home\Downloads\WireGuard-Client-0.5.3.msi"</code> <br> <code>msiexec.exe /i "$home\Downloads\WireGuard-Client-0.5.3.msi" DO_NOT_LAUNCH=1 /qn</code> <br> <code>Invoke-WebRequest "http://www.wiresock.net/downloads/wiresock-vpn-gateway-x64-1.1.4.1.msi" -OutFile "$home\Downloads\WireSock-VPN-Gateway-1.1.4.1.msi"</code> <br> <code>msiexec.exe /i "http://www.wiresock.net/downloads/wiresock-vpn-gateway-x64-1.1.4.1.msi" /qn</code> <br> <code>$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")</code> <br> <code>wg-quick-config -add -start</code> <br> <code>26.115.154.67:8181</code> <br> <code>192.168.21.4/24</code> <br> <code>Successfully saved client configuration: C:\ProgramData\NT KERNEL\WireSock VPN Gateway\wsclient_1.conf</code> <br> <code>Successfully saved server configuration: C:\ProgramData\NT KERNEL\WireSock VPN Gateway\wiresock.conf</code> <br> <code>get-service *wire*</code> <br> <code>wg show</code> <br> <code>wg-quick-config -add -restart</code> add client</p>
<p>wiresock.conf</p>
<pre><code>[Interface]
PrivateKey = gCHC0g2JPwr6sXPiaOL4/KTkMyjN9TculrJUA/GORV8=
Address = 192.168.21.5/24
ListenPort = 8181
[Peer]
PublicKey = NoSxjew2RCHiUzI6mlahjd4I+0EcLsoYom/H01z91yU=
AllowedIPs = 192.168.21.6/32
</code></pre>
<p>wsclient_1.conf (добавить маршруты для клиента в AllowedIPs)</p>
<pre><code>[Interface]
PrivateKey = yIpRQRmaGrrk9Y+49E8JhEpFmKzSeecvUAdeNgf1hUM=
Address = 192.168.21.6/24
DNS = 8.8.8.8, 1.1.1.1
MTU = 1420
[Peer]
PublicKey = Fp7674VSYeGj8CYt6RCKR7Qz1y/IKUXCw8ImOFhX3hk=
AllowedIPs = 192.168.21.0/24, 192.168.3.0/24
Endpoint = 26.115.154.67:8181
PersistentKeepalive = 25
</code></pre>
<h1>VpnClient</h1>
<p><code>Get-Command -Module VpnClient</code> <br> <code>Add-VpnConnection -Name "vpn-failon" -ServerAddress "26.115.154.67" -TunnelType L2TP -L2tpPsk "123098" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -AllUserConnection –PassThru -Force</code> <br> <code>-TunnelType PPTP/L2TP/SSTP/IKEv2/Automatic</code> <br> <code>-L2tpPsk</code> использовать общий ключ для аутентификации (без параметра, для L2TP аутентификации используется сертификат) <br> <code>-AuthenticationMethod Pap/Chap/MSChapv2/Eap/MachineCertificate</code> <br> <code>-EncryptionLevel NoEncryption/Optional/Required/Maximum/Custom</code> <br> <code>-SplitTunneling</code> заворачивать весь трафик через VPN-туннель (включение Use default gateway on remote network в настройках параметра VPN адаптера) <br> <code>-UseWinlogonCredential</code> использовать учетные данные текущего пользователя для аутентификации на VPN сервере <br> <code>-RememberCredential</code> разрешить сохранять учетные данные для VPN подключения (учетная запись и пароль сохраняются в диспетчер учетных данных Windows после первого успешного подключения) <br> <code>-DnsSuffix domain.local</code> <br> <code>-AllUserConnection</code> разрешить использовать VPN подключение для всех пользователей компьютера (сохраняется в конфигурационный файл: C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk)</p>
<p><code>Install-Module -Name VPNCredentialsHelper</code> модуль для сохранения логина и пароля в Windows Credential Manager для VPN подключения <br> <code>Set-VpnConnectionUsernamePassword -connectionname vpn-failon -username user1 -password password</code></p>
<p><code>rasdial "vpn-failon"</code> подключиться <br> <code>Get-VpnConnection -AllUserConnection | select *</code> список VPN подключения, доступных для всех пользователей, найстройки и текущий статус подключения (ConnectionStatus) <br> <code>Add-VpnConnectionRoute -ConnectionName vpn-failon -DestinationPrefix 192.168.3.0/24 –PassThru</code> динамически добавить в таблицу маршрутизации маршрут, который будет активен при подключении к VPN <br> <code>Remove-VpnConnection -Name vpn-failon -AllUserConnection -Force</code> удалить</p>
<p><code>Set-VpnConnection -Name "vpn-failon" -SplitTunneling $True</code> включить раздельное тунеллирование <br> <code>Add-VpnConnectionRoute -ConnectionName "vpn-failon" -DestinationPrefix 172.22.22.0/24</code> настроить маршрутизацию к указанной подсети через VPN-соединение <br> <code>(Get-VpnConnection -ConnectionName "vpn-failon").routes</code> отобразить таблицу маршрутизации для указанного соединения <br> <code>Remove-VpnConnectionRoute -ConnectionName "vpn-failon" -DestinationPrefix "172.22.23.0/24"</code></p>
<h1>Proxy</h1>
<p><code>$user = "lifailon"</code> <br> <code>$pass = "Proxy"</code> <br> <code>$SecureString = ConvertTo-SecureString $pass -AsPlainText -Force</code> <br> <code>$Credential = New-Object System.Management.Automation.PSCredential($user, $SecureString)</code> <br> <code>[System.Net.Http.HttpClient]::DefaultProxy = New-Object System.Net.WebProxy("http://192.168.3.100:9090")</code> <br> <code>[System.Net.Http.HttpClient]::DefaultProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials</code> <br> <code>[System.Net.Http.HttpClient]::DefaultProxy.Credentials = $Credential</code> <br> <code>Invoke-RestMethod http://ifconfig.me/ip</code> <br> <code>Invoke-RestMethod https://kinozal.tv/rss.xml</code></p>
<h1>OpenSSH</h1>
<p><code>Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'</code> <br> <code>Add-WindowsCapability -Online -Name OpenSSH.Client*</code> <br> <code>dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0</code> <br> <code>iwr https://github.com/PowerShell/Win32-OpenSSH/releases/download/v9.2.2.0p1-Beta/OpenSSH-Win64-v9.2.2.0.msi -OutFile $home\Downloads\OpenSSH-Win64-v9.2.2.0.msi</code> скачать <br> <code>msiexec /i $home\Downloads\OpenSSH-Win64-v9.2.2.0.msi</code> установить msi пакет <br> <code>Set-Service sshd -StartupType Automatic</code> <br> <code>Get-NetTCPConnection | where LocalPort -eq 22</code> <br> <code>New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22</code> <br> <code>Get-NetFirewallRule -Name *ssh*</code> <br> <code>Start-Process notepad++ C:\Programdata\ssh\sshd_config</code> конфигурационный файл <br> <code>GSSAPIAuthentication yes</code> включить Kerberos аутентификацию (через AD) <br> <code>SyslogFacility LOCAL0</code> включить локальное ведение журнала в файл (C:\ProgramData\ssh\logs\sshd.log) <br> <code>LogLevel INFO</code> <br> <code>Restart-Service sshd</code> <br> <code>ssh -K $srv</code> выполнить Kerberos аутентификацию <br> <code>ssh Lifailon@192.168.3.99 -p 22</code> <br> <code>pwsh -command Get-Service</code> <br> <code>ssh -L 3101:192.168.3.101:22 -R 3101:192.168.3.101:22 lifailon@192.168.3.101 -p 22</code> SSH Tunnel lifailon@localhost:3101 -> 192.168.3.101:3101</p>
<h1>WinRM</h1>
<p><code>Enter-PSSession -ComputerName $srv</code> подключиться к PowerShell сессии через PSRemoting. Подключение возможно только по FQDN-имени <br> <code>Invoke-Command $srv -ScriptBlock {Get-ComputerInfo}</code> выполнение команды через PSRemoting <br> <code>$session = New-PSSession $srv</code> открыть сессию <br> <code>Get-PSSession</code> отобразить активные сессии <br> <code>icm -Session $session {$srv = $using:srv}</code> передать переменную текущей сессии ($using) в удаленную <br> <code>Disconnect-PSSession $session</code> закрыть сессию <br> <code>Remove-PSSession $session</code> удалить сессию <br> <code>Import-Module -Name ActiveDirectory -PSSession $srv</code> импортировать модуль с удаленного компьютера в локальную сессию</p>
<h3>Windows Remote Management Configuration</h3>
<p><code>winrm quickconfig -quiet</code> изменит запуск службы WinRM на автоматический, задаст стандартные настройки WinRM и добавить исключения для портов в fw <br> <code>Enable-PSRemoting –Force</code> включить PowerShell Remoting, работает только для доменного и частного сетевых профилей Windows <br> <code>Enable-PSRemoting -SkipNetworkProfileCheck -Force</code> для настройки компьютера в общей (public) сети (работает с версии powershell 6)</p>
<p><code>$NetProfiles = Get-NetConnectionProfile</code> отобразить профили сетевых подключений <br> <code>Set-NetConnectionProfile -InterfaceIndex $NetProfiles[1].InterfaceIndex -NetworkCategory Private</code> изменить тип сети для профиля (DomainAuthenticated/Public) <br> <code>(Get-CimInstance -ClassName Win32_ComputerSystem).PartOfDomain</code> проверить, что компьютер добавлен в домен AD <br> <code>Get-Service WinRM | Set-Service -StartupType AutomaticDelayedStart</code> отложенный запуск <br> <code>Get-Service -Name winrm -RequiredServices</code> статус зависимых служб <br> <code>New-NetFirewallRule -Profile Any -DisplayName "WinRM HTTP" -Direction Inbound -Protocol TCP -LocalPort 5985,5986</code> <br> <code>Test-NetConnection $srv -port 5895</code> проверить порт <br> <code>Test-WSMan $srv -ErrorAction Ignore</code> проверить работу WinRM на удаленном компьютере (игнорировать вывод ошибок для скрипта) или локально (localhost)</p>
<p><code>$Cert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "$env:computername" -FriendlyName "WinRM HTTPS Certificate" -NotAfter (Get-Date).AddYears(5)</code> создать самоподписанный сертификат <br> <code>$Thumbprint = $Cert.Thumbprint</code> забрать отпечаток <br> <code>New-Item -Path WSMan:\Localhost\Listener -Transport HTTPS -Address * -CertificateThumbprint $Thumbprint -Name WinRM_HTTPS_Listener -Force</code> создать прослушиватель <br> <code>New-NetFirewallRule -DisplayName 'WinRM HTTPS' -Profile Domain,Private -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5986</code> открыть порт в fw</p>
<pre><code>$selector_set = @{
Address = "*"
Transport = "HTTPS"
}
$value_set = @{
CertificateThumbprint = "66ABFDA044D8C85135048186E2FDC0DBE6125163"
}
New-WSManInstance -ResourceURI "winrm/config/Listener" -SelectorSet $selector_set -ValueSet $value_set
</code></pre>
<p><code>winrm get winrm/config</code> отобразить всю конфигурацию (Client/Service) <br> <code>winrm get winrm/config/service/auth</code> конфигурация авторизации на сервере <br> <code>winrm enumerate winrm/config/listener</code> текущая конфигурация прослушивателей WinRM (отображает отпечаток сертификата для HTTPS 5986) <br> <code>Get-ChildItem -Path Cert:\LocalMachine\My\ | where Thumbprint -eq D9356FB774EE0E6206B7D5B59B99102CA5B17BDA | select *</code> информация о сертификате</p>
<p><code>ls WSMan:\localhost\Client</code> конфигурацию клиента <br> <code>ls WSMan:\localhost\Service</code> конфигурация сервера <br> <code>ls WSMan:\localhost\Service\auth</code> список всех конфигураций аутентификации WinRM сервера <br> <code>Set-Item -path WSMan:\localhost\Service\auth\basic -value $true</code> разрешить локальную аутентификацию к текущему серверу <br> <code>ls HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN</code> настройки в реестре (например, для включения аудентификации в \Service\auth_basic = 1) <br> <code>Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.* -Force</code> добавить доверенные хосты в конфигурацию на клиенте, чтобы работала Negotiate аутентификация через NTLM <br> <code>Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.3.100 -Concatenate -Force</code> добавить второй компьютер <br> <code>ls WSMan:\localhost\Client\TrustedHosts</code> <br> <code>Set-Item WSMan:\localhost\Client\AllowUnencrypted $true</code> включить передача незашифрованных данных конфигурации клиента <br> <code>Set-Item WSMan:\localhost\Service\AllowUnencrypted $true</code> включить передача незашифрованных данных конфигурации сервера (необходимо быть в private сети)</p>
<p><code>Get-PSSessionConfiguration</code> проверить, включен ли PSremoting и вывести список пользователей и групп, которым разрешено подключаться через WinRM <br> <code>Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI</code> назначить права доступа через дескриптор безопасности текущей сессии (до перезагруки) <br> <code>(Get-PSSessionConfiguration -Name "Microsoft.PowerShell").SecurityDescriptorSDDL</code> получить настройки дескриптора в формате SDDL <br> <code>Set-PSSessionConfiguration -Name Microsoft.PowerShell -SecurityDescriptorSDDL $SDDL</code> применить настройки дескриптора на другом компьютере без использования GUI \</p>
<p><code>New-LocalUser "WinRM-Writer" -Password (ConvertTo-SecureString -AsPlainText "123098")</code> создать пользователя <br> <code>Add-LocalGroupMember -Group "Remote Management Users" -Member "WinRM-Writer"</code> добавить пользователя WinRM-Writer в локальную группу доступа "Пользователи удаленного управления" <br> <code>cmdkey /add:192.168.3.99 /user:WinRM-Writer /pass:123098</code> сохранить пароль в CredentialManager <code>cmdkey /list</code> <br> <code>Import-Module CredentialManager</code> <br> <code>Add-Type -AssemblyName System.Web</code> <br> <code>New-StoredCredential -Target 192.168.3.99 -UserName WinRM-Writer -Password 123098 -Comment WinRM</code> сохранить пароль в CredentialManager (из PS5) <br> <code>Get-StoredCredential -AsCredentialObject</code> <br> <code>$cred = Get-StoredCredential -Target 192.168.3.99</code> <br> <code>Enter-PSSession -ComputerName 192.168.3.99 -Credential $cred -Authentication Negotiate</code> <br> <code>Enter-PSSession -ComputerName 192.168.3.99 -Credential $cred -Authentication Basic -Port 5985</code> работает при отключении allowunencrypted на стороне сервера и клиента <br> <code>winrs -r:http://192.168.3.100:5985/wsman -u:WinRM-Writer -p:123098 ipconfig</code> передать команду через winrs (-?) <br> <code>winrs -r:https://192.168.3.100:5985/wsman -u:WinRM-Writer -p:123098 -ssl ipconfig</code> через https <br> <code>pwsh -Command "Install-Module -Name PSWSMan"</code> установить модуль для использования в Linux системе</p>
<h3>Kerberos</h3>
<p><code>.\CheckMaxTokenSize.ps1 -Principals login -OSEmulation $true -Details $true</code> узнать размер токена пользователя в домене <br> <code>Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters | select maxtokensize</code> максимальный размер токена на сервере <br> <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters</code> изменить размера, если заголовок пакета аутентификации превышает 16 Кб (из за большого кол-ва групп) <br> <code>MaxFieldLength увеличить до 0000ffff (65535)</code> <br> <code>MaxRequestBytes увеличить до 0000ffff (65535)</code></p>
<h1>DSC</h1>
<p><code>Import-Module PSDesiredStateConfiguration</code> <br> <code>(Get-Module PSDesiredStateConfiguration).ExportedCommands</code> <br> <code>Get-DscLocalConfigurationManager</code></p>
<p><code>Get-DscResource</code> <br> <code>Get-DscResource -Name File -Syntax</code> <a href="https://learn.microsoft.com/ru-ru/powershell/dsc/reference/resources/windows/fileresource?view=dsc-1.1">https://learn.microsoft.com/ru-ru/powershell/dsc/reference/resources/windows/fileresource?view=dsc-1.1</a></p>
<p><code>Ensure = Present</code> настройка должна быть включена (каталог должен присутствовать, процесс должен быть запущен, если нет – создать, запустить) <br> <code>Ensure = Absent</code> настройка должна быть выключена (каталога быть не должно, процесс не должен быть запущен, если нет – удалить, остановить)</p>
<pre><code class="language-PowerShell">Configuration TestConfiguraion
{
Ctrl+Space
}
Configuration DSConfigurationProxy
{
Node vproxy-01
{
File CreateDir
{
Ensure = "Present"
Type = "Directory"
DestinationPath = "C:\Temp"
}
Service StopW32time
{
Name = "w32time"
State = "Stopped"` Running
}
WindowsProcess RunCalc
{
Ensure = "Present"
Path = "C:\WINDOWS\system32\calc.exe"
Arguments = ""
}
Registry RegSettings
{
Ensure = "Present"
Key = "HKEY_LOCAL_MACHINE\SOFTWARE\MySoft"
ValueName = "TestName"
ValueData = "TestValue"
ValueType = "String"
}
# WindowsFeature IIS
# {
# Ensure = "Present"
# Name = "Web-Server"
# }
}
}
</code></pre>
<p><code>$Path = (DSConfigurationProxy).DirectoryName</code> <br> <code>Test-DscConfiguration -Path $Path | select *</code> ResourcesInDesiredState - уже настроено, ResourcesNotInDesiredState - не настроено (не соответствует) <br> <code>Start-DscConfiguration -Path $Path</code> <br> <code>Get-Job</code> <br> <code>$srv = "vproxy-01"</code> <br> <code>Get-Service -ComputerName $srv | ? name -match w32time # Start-Service</code> <br> <code>icm $srv {Get-Process | ? ProcessName -match calc} | ft # Stop-Process -Force</code> <br> <code>icm $srv {ls C:\ | ? name -match Temp} | ft</code> rm`</p>
<h1>Git</h1>
<p><code>git --version</code> <br> <code>git config --global user.name "Lifailon"</code> добавить имя для коммитов <br> <code>git config --global user.email "lifailon@yandex.ru"</code> <br> <code>git config --global --edit</code> <br> <code>ssh-keygen -t rsa -b 4096</code> <br> <code>Get-Service | where name -match "ssh-agent" | Set-Service -StartupType Automatic</code> <br> <code>Get-Service | where name -match "ssh-agent" | Start-Service</code> <br> <code>Get-Service | where name -match "ssh-agent" | select Name,Status,StartType</code> <br> <code>ssh-agent</code> <br> <code>ssh-add C:\Users\Lifailon\.ssh\id_rsa</code> <br> <code>cat ~\.ssh\id_rsa.pub | Set-Clipboard</code> copy to <a href="https://github.com/settings/keys">https://github.com/settings/keys</a> <br> <code>cd $home\Documents\Git</code> <br> <code>git clone git@github.com:Lifailon/PowerShell-Commands</code> <br> <code>cd PowerShell-Commands</code> <br> <code>git grep powershell</code> поиск текста в файлах <br> <code>git pull</code> синхронизировать изменения из хранилища <br> <code>git status</code> отобразить статус изменений по файлам <br> <code>git diff</code> отобразить изменения построчно <br> <code>git add .</code> добавить (проиндексировать) изменения во всех файлах <br> <code>git commit -m "added file and changed file"</code> сохранить изменения с комментарием <br> <code>git push</code> синхронизировать локальные изменения с репозиторием <br> <code>git branch dev</code> создать новую ветку <br> <code>git switch dev</code> переключиться на другую ветку <br> <code>git push --set-upstream origin dev</code> добавить ветку <br> <code>git branch -d dev</code> удалить ветку <br> <code>git diff rsa</code> сравнить файлы текущей ветки с файлами в указанной ветки rsa <br> <code>git merge dev</code> слияние текущей ветки (rsa/master) с указанной (dev) <br> <code>git log --oneline --all</code> лог коммитов <br> <code>git log --graph</code> коммиты и следование веток <br> <code>git show d01f09dead3a6a8d75dda848162831c58ca0ee13</code> отобразить подробный лог по номеру коммита <br> <code>git checkout filename</code> откатить изменения, если не было команды add <br> <code>git checkout d01f09dead3a6a8d75dda848162831c58ca0ee13</code> переключить локальные файлы рабочей копии на указанный коммит (изменить HEAD на указанный коммит) <br> <code>git reset HEAD filename</code> откатить изменения последнего индекса, если был add но не было commit, тем самым вернуться до последней зафиксированный версии (коммита) и потом выполнить checkout <br> <code>git reset --mixed HEAD filename</code> изменения, содержащиеся в отменяемом коммите, не должны исчезнуть, они будут сохранены в виде локальных изменений в рабочей копии <br> <code>git restore filename</code> отменить все локальные изменения в рабочей копии <br> <code>git restore --source d01f09dead3a6a8d75dda848162831c58ca0ee13 filename</code> восстановить файл на указанную версию по хэшу индентификатора коммита <br> <code>git revert HEAD --no-edit</code> отменить последний коммит, без указания комментария (события записываются в git log) <br> <code>git reset --hard d01f09dead3a6a8d75dda848162831c58ca0ee13</code> удалить все коммиты до указанного (и откатиться до него)</p>
<h1>Ansible</h1>
<p><code>apt -y update && apt -y upgrade</code> <br> <code>apt -y install ansible</code> v2.10.8 <br> <code>apt -y install ansible-core</code> v2.12.0 <br> <code>apt -y install sshpass</code></p>
<p><code>ansible-galaxy collection install ansible.windows</code> установить коллекцию модулей <br> <code>ansible-galaxy collection install community.windows</code> <br> <code>ansible-galaxy collection list | grep windows</code> <br> <code>ansible-config dump | grep DEFAULT_MODULE_PATH</code> путь хранения модулей</p>
<p><code>apt-get -y install python-dev libkrb5-dev krb5-user</code> пакеты для Kerberos аутентификации <br> <code>apt install python3-pip</code> <br> <code>pip3 install requests-kerberos</code> <br> <code>nano /etc/krb5.conf</code> настроить [realms] и [domain_realm] <br> <code>kinit -C support4@domail.local</code> <br> <code>klist</code></p>
<p><code>ansible --version</code> <br> <code>config file = None</code> <br> <code>nano /etc/ansible/ansible.cfg</code> файл конфигурации</p>
<pre><code>[defaults]
inventory = /etc/ansible/hosts
# uncomment this to disable SSH key host checking
# Отключить проверку ключа ssh (для подключения используя пароль)
host_key_checking = False
</code></pre>
<p><code>nano /etc/ansible/hosts</code></p>
<pre><code>[us]
pi-hole-01 ansible_host=192.168.3.101
zabbix-01 ansible_host=192.168.3.102
grafana-01 ansible_host=192.168.3.103
netbox-01 ansible_host=192.168.3.104
[all:vars]
ansible_ssh_port=2121
ansible_user=lifailon
ansible_password=123098
path_user=/home/lifailon
ansible_python_interpreter=/usr/bin/python3
[ws]
huawei-book-01 ansible_host=192.168.3.99
plex-01 ansible_host=192.168.3.100
[ws:vars]
ansible_port=5985
#ansible_port=5986
ansible_user=Lifailon
#ansible_user=support4@DOMAIN.LOCAL
ansible_password=123098
ansible_connection=winrm
ansible_winrm_scheme=http
ansible_winrm_transport=basic
#ansible_winrm_transport=kerberos
ansible_winrm_server_cert_validation=ignore
validate_certs=false
[win_ssh]
huawei-book-01 ansible_host=192.168.3.99
plex-01 ansible_host=192.168.3.100
[win_ssh:vars]
ansible_python_interpreter=C:\Users\Lifailon\AppData\Local\Programs\Python\Python311\` добавить переменную среды интерпритатора Python в Windows
ansible_connection=ssh
#ansible_shell_type=cmd
ansible_shell_type=powershell
</code></pre>
<p><code>ansible-inventory --list</code> проверить конфигурацию (читает в формате JSON) или YAML (-y) с просмотром все применяемых переменных</p>
<h1>Modules</h1>
<p><code>ansible us -m ping</code> <br> <code>ansible win_ssh -m ping</code> <br> <code>ansible us -m shell -a "uptime && df -h | grep lv"</code> <br> <code>ansible us -m setup | grep -iP "mem|proc"</code> информация о железе <br> <code>ansible us -m apt -a "name=mc" -b</code> повысить привилегии sudo (-b) <br> <code>ansible us -m service -a "name=ssh state=restarted enabled=yes" -b</code> перезапустить службу <br> <code>echo "echo test" > test.sh</code> <br> <code>ansible us -m copy -a "src=test.sh dest=/root mode=777" -b</code> <br> <code>ansible us -a "ls /root" -b</code> <br> <code>ansible us -a "cat /root/test.sh" -b</code></p>
<p><code>ansible-doc -l | grep win_</code> список всех модулей Windows (<a href="https://docs.ansible.com/ansible/latest/collections/ansible/windows/">https://docs.ansible.com/ansible/latest/collections/ansible/windows/</a>) <br> <code>ansible ws -m win_ping</code> windows модуль <br> <code>ansible ws -m win_ping -u WinRM-Writer</code> указать логин <br> <code>ansible ws -m setup</code> собрать подробную информацию о системе <br> <code>ansible ws -m win_whoami</code> информация о правах доступах, группах доступа <br> <code>ansible ws -m win_shell -a '$PSVersionTable'</code> <br> <code>ansible ws -m win_shell -a 'Get-Service | where name -match "ssh|winrm"'</code> <br> <code>ansible ws -m win_service -a "name=sshd state=stopped"</code> <br> <code>ansible ws -m win_service -a "name=sshd state=started"</code></p>
<h3>win_shell (vars/debug)</h3>
<p><code>nano /etc/ansible/PowerShell-Vars.yml</code></p>
<pre><code>- hosts: ws
` Указать коллекцию модулей
collections:
- ansible.windows
` Задать переменные
vars:
SearchName: PermitRoot
tasks:
- name: Get port ssh
win_shell: |
Get-Content "C:\Programdata\ssh\sshd_config" | Select-String "{{SearchName}}"
` Передать вывод в переменную
register: command_output
- name: Output port ssh
` Вывести переменную на экран
debug:
var: command_output.stdout_lines
</code></pre>
<p><code>ansible-playbook /etc/ansible/PowerShell-Vars.yml</code> <br> <code>ansible-playbook /etc/ansible/PowerShell-Vars.yml --extra-vars "SearchName='LogLevel|Syslog'"</code> передать переменную</p>
<h3>win_powershell</h3>
<p><code>nano /etc/ansible/powershell-param.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Run PowerShell script with parameters
ansible.windows.win_powershell:
parameters:
Path: C:\Temp
Force: true
script: |
[CmdletBinding()]
param (
[String]$Path,
[Switch]$Force
)
New-Item -Path $Path -ItemType Directory -Force:$Force
</code></pre>
<p><code>ansible-playbook /etc/ansible/powershell-param.yml</code></p>
<h3>win_chocolatey</h3>
<p><code>nano /etc/ansible/setup-adobe-acrobat.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Install Acrobat Reader
win_chocolatey:
name: adobereader
state: present
</code></pre>
<p><code>ansible-playbook /etc/ansible/setup-adobe-acrobat.yml</code></p>
<p><code>nano /etc/ansible/setup-openssh.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: install the Win32-OpenSSH service
win_chocolatey:
name: openssh
package_params: /SSHServerFeature
state: present
</code></pre>
<p><code>ansible-playbook /etc/ansible/setup-openssh.yml</code></p>
<h3>win_regedit</h3>
<p><code>nano /etc/ansible/win-set-shell-ssh-ps7.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Set the default shell to PowerShell 7 for Windows OpenSSH
win_regedit:
path: HKLM:\SOFTWARE\OpenSSH
name: DefaultShell
` data: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
data: 'C:\Program Files\PowerShell\7\pwsh.exe'
type: string
state: present
</code></pre>
<p><code>ansible-playbook /etc/ansible/win-set-shell-ssh-ps7.yml</code></p>
<h3>win_service</h3>
<p><code>nano /etc/ansible/win-service.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Start service
win_service:
name: sshd
state: started
# state: stopped
# state: restarted
# start_mode: auto
</code></pre>
<p><code>ansible-playbook /etc/ansible/win-service.yml</code></p>
<h3>win_service_info</h3>
<p><code>nano /etc/ansible/get-service.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Get info for a single service
win_service_info:
name: sshd
register: service_info
- name: Print returned information
ansible.builtin.debug:
var: service_info.services
</code></pre>
<p><code>ansible-playbook /etc/ansible/get-service.yml</code></p>
<h3>fetch/slurp</h3>
<p><code>nano /etc/ansible/copy-from-win-to-local.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Retrieve remote file on a Windows host
# Скопировать файл из Windows-системы
ansible.builtin.fetch:
# Прочитать файл (передать в память в формате Base64)
# ansible.builtin.slurp:
src: C:\Telegraf\telegraf.conf
dest: /root/telegraf.conf
flat: yes
register: telegraf_conf
- name: Print returned information
ansible.builtin.debug:
msg: "{{ telegraf_conf['content'] | b64decode }}"
</code></pre>
<p><code>ansible-playbook /etc/ansible/copy-from-win-to-local.yml</code></p>
<h3>win_copy</h3>
<p><code>echo "Get-Service | where name -eq vss | Start-Service" > /home/lifailon/Start-Service-VSS.ps1</code> <br> <code>nano /etc/ansible/copy-file-to-win.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Copy file to win hosts
win_copy:
src: /home/lifailon/Start-Service-VSS.ps1
dest: C:\Users\Lifailon\Desktop\Start-Service-VSS.ps1
</code></pre>
<p><code>ansible-playbook /etc/ansible/copy-file-to-win.yml</code></p>
<p><code>curl -OL https://github.com/PowerShell/PowerShell/releases/download/v7.3.6/PowerShell-7.3.6-win-x64.msi</code> <br> <code>nano /etc/ansible/copy-file-to-win.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Copy file to win hosts
win_copy:
src: /home/lifailon/PowerShell-7.3.6-win-x64.msi
dest: C:\Install\PowerShell-7.3.6.msi
</code></pre>
<p><code>ansible-playbook /etc/ansible/copy-file-to-win.yml</code></p>
<h3>win_command</h3>
<p><code>nano /etc/ansible/run-script-ps1.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Run PowerShell Script
win_command: powershell -ExecutionPolicy ByPass -File C:\Users\Lifailon\Desktop\Start-Service-VSS.ps1
</code></pre>
<p><code>ansible-playbook /etc/ansible/run-script-ps1.yml</code></p>
<h3>win_package</h3>
<p><code>nano /etc/ansible/setup-msi-package.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Install MSI Package
win_package:
# path: C:\Install\7z-23.01.msi
path: C:\Install\PowerShell-7.3.6.msi
arguments:
- /quiet
- /passive
- /norestart
</code></pre>
<p><code>ansible-playbook /etc/ansible/setup-msi-package.yml</code></p>
<h3>win_firewall_rule</h3>
<p><code>nano /etc/ansible/win-fw-open.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Open RDP port
win_firewall_rule:
name: Open RDP port
localport: 3389
action: allow
direction: in
protocol: tcp
state: present
enabled: yes
</code></pre>
<p><code>ansible-playbook /etc/ansible/win-fw-open.yml</code></p>
<h3>win_group</h3>
<p><code>nano /etc/ansible/win-creat-group.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Create a new group
win_group:
name: deploy
description: Deploy Group
state: present
</code></pre>
<p><code>ansible-playbook /etc/ansible/win-creat-group.yml</code></p>
<h3>win_group_membership</h3>
<p><code>nano /etc/ansible/add-user-to-group.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Add a local and domain user to a local group
win_group_membership:
name: deploy
members:
- WinRM-Writer
state: present
</code></pre>
<p><code>ansible-playbook /etc/ansible/add-user-to-group.yml</code></p>
<h3>win_user</h3>
<p><code>nano /etc/ansible/creat-win-user.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Creat user
win_user:
name: test
password: 123098
state: present
groups:
- deploy
</code></pre>
<p><code>ansible-playbook /etc/ansible/creat-win-user.yml</code></p>
<p><code>nano /etc/ansible/delete-win-user.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Delete user
ansible.windows.win_user:
name: test
state: absent
</code></pre>
<p><code>ansible-playbook /etc/ansible/delete-win-user.yml</code></p>
<h3>win_feature</h3>
<p><code>nano /etc/ansible/install-feature.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Install Windows Feature
win_feature:
name: SNMP-Service
state: present
</code></pre>
<p><code>ansible-playbook /etc/ansible/install-feature.yml</code></p>
<h3>win_reboot</h3>
<p><code>nano /etc/ansible/win-reboot.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Reboot a slow machine that might have lots of updates to apply
win_reboot:
reboot_timeout: 3600
</code></pre>
<p><code>ansible-playbook /etc/ansible/win-reboot.yml</code></p>
<h3>win_find</h3>
<p><code>nano /etc/ansible/win-ls.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Find files in multiple paths
ansible.windows.win_find:
paths:
- D:\Install\OpenSource
patterns: ['*.rar','*.zip','*.msi']
` Файл созданный менее 7 дней назад
age: -7d
` Размер файла больше 10MB
size: 10485760
` Рекурсивный поиск (в дочерних директориях)
recurse: true
register: command_output
- name: Output
debug:
var: command_output
</code></pre>
<p><code>ansible-playbook /etc/ansible/win-ls.yml</code></p>
<h3>win_uri</h3>
<p><code>nano /etc/ansible/rest-get.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: REST GET request to endpoint github
ansible.windows.win_uri:
url: https://api.github.com/repos/Lifailon/pSyslog/releases/latest
register: http_output
- name: Output
debug:
var: http_output
</code></pre>
<p><code>ansible-playbook /etc/ansible/rest-get.yml</code></p>
<h3>win_updates</h3>
<p><code>nano /etc/ansible/win-update.yml</code></p>
<pre><code>- hosts: ws
tasks:
- name: Install only particular updates based on the KB numbers
ansible.windows.win_updates:
category_names:
- SecurityUpdates
- CriticalUpdates
- UpdateRollups
- Drivers
` Фильтрация
` accept_list:
` - KB2267602
` Поиск обновлений
` state: searched
` Загрузить обновления
` state: downloaded
` Установить обновления
state: installed
log_path: C:\Ansible-Windows-Upadte-Log.txt
reboot: false
register: wu_output
- name: Output
debug:
var: wu_output
</code></pre>
<p><code>ansible-playbook /etc/ansible/win-update.yml</code></p>
<h3>win_chocolatey</h3>
<p><a href="https://chocolatey.org/install">https://chocolatey.org/install</a> <br> <a href="https://community.chocolatey.org/api/v2/package/chocolatey">https://community.chocolatey.org/api/v2/package/chocolatey</a> <br> <a href="https://docs.chocolatey.org/en-us/guides/organizations/organizational-deployment-guide">https://docs.chocolatey.org/en-us/guides/organizations/organizational-deployment-guide</a></p>
<pre><code>- name: Ensure Chocolatey installed from internal repo
win_chocolatey:
name: chocolatey
state: present
# source: URL-адрес внутреннего репозитория
source: https://community.chocolatey.org/api/v2/ChocolateyInstall.ps1
</code></pre>
\ No newline at end of file
diff --git a/powershell/weekly/index.xml b/powershell/weekly/index.xml
new file mode 100644
index 00000000000..1e3b9400a24
--- /dev/null
+++ b/powershell/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub PowerShell Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:17Z
+ Weekly Trending of PowerShell in GitHub
+
+
+ dafthack/MailSniper
+ 2023-12-24T01:57:17Z
+ tag:github.com,2023-12-24:/dafthack/MailSniper
+
+ <p>MailSniper is a penetration testing tool for searching through email in a Microsoft Exchange environment for specific terms (passwords, insider intel, network architecture information, etc.). It can be used as a non-administrative user to search their own email, or by an administrator to search the mailboxes of every user in a domain.</p><hr><h1>MailSniper</h1>
<p>MailSniper is a penetration testing tool for searching through email in a Microsoft Exchange environment for specific terms (passwords, insider intel, network architecture information, etc.). It can be used as a non-administrative user to search their own email or by an Exchange administrator to search the mailboxes of every user in a domain.</p>
<p>MailSniper also includes additional modules for password spraying, enumerating users and domains, gathering the Global Address List (GAL) from OWA and EWS and checking mailbox permissions for every Exchange user at an organization.</p>
<p>For more information about the primary MailSniper functionality check out <a href="http://www.blackhillsinfosec.com/?p=5296">blog post</a>.</p>
<p>For more information about additional MailSniper modules check out:</p>
<ul>
<li> <p><a href="http://www.blackhillsinfosec.com/?p=5330">GAL & Password Spraying</a></p> </li>
<li> <p><a href="http://www.blackhillsinfosec.com/?p=5871">Invoke-OpenInboxFinder</a></p> </li>
</ul>
<p>Download the <a href="http://www.dafthack.com/files/MailSniper-Field-Manual.pdf">MailSniper Field Manual</a> to quickly reference various MailSniper functions.</p>
<h2>Quick Start Guide</h2>
<p>There are two main functions in MailSniper. These two functions are <strong>Invoke-GlobalMailSearch</strong> and <strong>Invoke-SelfSearch</strong>.</p>
<p><strong>Invoke-GlobalMailSearch</strong> is a module that will connect to a Microsoft Exchange server and grant the "ApplicationImpersonation" role to a specified user. Having the "ApplicationImpersonation" role allows that user to search through all other domain user's mailboxes. After this role has been granted, the Invoke-GlobalMailSearch function creates a list of all mailboxes in the Exchange database. It then connects to Exchange Web Services (EWS) using the impersonation role to gather a number of emails from each mailbox and ultimately searches through them for specific terms. By default, the script searches for "*password*","*creds*","*credentials*"</p>
<p>To search all mailboxes in a domain:</p>
<pre><code class="language-PowerShell">Invoke-GlobalMailSearch -ImpersonationAccount current-username -ExchHostname Exch01 -OutputCsv global-email-search.csv
</code></pre>
<p>This command will connect to the Exchange server located at 'Exch01' and prompt for administrative credentials (i.e. member of "Exchange Organization Administrators" or "Organization Management" group). Once administrative credentials have been entered, a PowerShell remoting session is setup with the Exchange server where the ApplicationImpersonation role is then granted to the "current-username" user. A list of all email addresses in the domain is then gathered, followed by a connection to EWS as "current-username" where by default, 100 of the latest emails from each mailbox will be searched through for the terms "*pass*","*creds*","*credentials*" and output to a CSV file called global-email-search.csv.</p>
<p><strong>Invoke-SelfSearch</strong> is a module that will connect to a Microsoft Exchange server using EWS to gather a number of emails from the current user's mailbox. It then searches through them for specific terms. This could potentially assist in privilege escalation after obtaining a user's credentials or assist in locating sensitive data as a non-admin user.</p>
<p>To search the current user's mailbox:</p>
<pre><code class="language-PowerShell">Invoke-SelfSearch -Mailbox current-user@domain.com
</code></pre>
<p>This command will connect to the Exchange server autodiscovered from the email address entered using EWS where by default, 100 of the latest emails from the "Mailbox" will be searched through for the terms "*pass*","*creds*","*credentials*".</p>
<p><strong>Invoke-GlobalO365MailSearch</strong> same as Invoke-GlobalMailSearch, with support for single sign-on (SSO) based authentication to O365.</p>
<h3>Invoke-GlobalMailSearch Options</h3>
<pre><code>ImpersonationAccount - This user will be granted the ApplicationImpersonation role on the Exchange server.
ExchHostname - The hostname of the Exchange server to connect to (If $AutoDiscoverEmail is specified the server will be autodiscovered).
AutoDiscoverEmail - A valid email address that will be used to autodiscover where the Exchange server is located.
MailsPerUser - The total number of emails returned from each mailbox.
Terms - Specific search terms used to search through each email subject and body. By default, the script searches for "*password*","*creds*","*credentials*".
OutputCsv - Outputs the results of the search to a CSV file.
ExchangeVersion - Specify the version of Exchange server to connect to. By default the script tries Exchange2010.
AdminUserName - The username of an Exchange administator (i.e. member of the "Exchange Organization Administrators" or "Organization Management" group) including the domain (i.e. domain\adminusername).
AdminPassword - The password to the Exchange administator (i.e. member of the "Exchange Organization Administrators" or "Organization Management" group) account specified with AdminUserName.
EmailList - A text file listing email addresses to search (one per line).
Folder - A specific folder within each mailbox to search. By default, the script only searches the "Inbox" folder. By specifying 'all', all folders and subfolders will be searched.
Regex - Use a regular expressions when performing searches. This will override the -Terms flag.
CheckAttachments - Attempts to search through the contents of email attachements in addition to the default body and subject. These attachments can be downloaded by specifying the -DownloadDir option. Searches for the following extensions: .bat, .htm, .msg, .pdf, .txt, .ps1, .doc and .xls.
DownloadDir - Download files to a specific location.
</code></pre>
<h3>Invoke-SelfSearch Options</h3>
<pre><code>ExchHostname - The hostname of the Exchange server to connect to (If $Mailbox is specified the server will be autodiscovered).
Mailbox - Email address of the current user the PowerShell process is running as.
MailsPerUser - Number of emails to return.
Terms - Specific search terms used to search through each email subject and body. By default, the script searches for "*password*","*creds*","*credentials*".
OutputCsv - Outputs the results of the search to a CSV file.
ExchangeVersion - Specify the version of Exchange server to connect to (default Exchange2010).
Remote - A new credential box will pop up for accessing a remote EWS service from the internet.
Folder - A specific folder within each mailbox to search. By default, the script only searches the "Inbox" folder. By specifying 'all', all folders and subfolders will be searched.
Regex - Use a regular expressions when performing searches. This will override the -Terms flag.
CheckAttachments - Attempts to search through the contents of email attachements in addition to the default body and subject. These attachments can be downloaded by specifying the -DownloadDir option. Searches for the following extensions: .bat, .htm, .msg, .pdf, .txt, .ps1, .doc and .xls.
DownloadDir - Download files to a specific location.
OtherUserMailbox - Use this flag when attempting to read emails from a different user's mailbox
UsePrt - Uses the current user's PRT to authenticate.
AccessToken - Use provided oauth access token to authenticate.
</code></pre>
<h3>Invoke-GlobalO365MailSearch Options</h3>
<pre><code>UsePrtImperonsationAccount - Uses the current user's PRT to authenticate ImperonsationAccount.
AccessTokenImpersonationAccount - Use provided oauth access token to authenticate ImperonsationAccount.
UsePrtAdminAccount - Uses the current user's PRT to authenticate AdminAccount.
AccessTokenAdminAccount - Use provided oauth access token to authenticate ImperonsationAccount.
</code></pre>
<h2>Additional MailSniper Modules</h2>
<p><strong>Get-GlobalAddressList</strong> will attempt to connect to an Outlook Web Access (OWA) portal and utilize the "FindPeople" method (only available in Exchange2013 and up) of gathering email addresses from the GAL. If this does not succeed the script will attempt to connect to EWS and attempt to gather the GAL.</p>
<pre><code class="language-PowerShell">Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domain\username -Password Spring2021 -OutFile gal.txt
</code></pre>
<p><strong>Get-MailboxFolders</strong> will connect to a Microsoft Exchange server using EWS and gather a list of folders from the current user's mailbox.</p>
<pre><code class="language-PowerShell">Get-MailboxFolders -Mailbox current-user@domain.com
</code></pre>
<p><strong>Invoke-PasswordSprayOWA</strong> will attempt to connect to an OWA portal and perform a password spraying attack using a userlist and a single password.</p>
<pre><code class="language-PowerShell">Invoke-PasswordSprayOWA -ExchHostname mail.domain.com -UserList .\userlist.txt -Password Spring2021 -Threads 15 -OutFile owa-sprayed-creds.txt
</code></pre>
<p><strong>Invoke-PasswordSprayEWS</strong> will attempt to connect to an EWS portal and perform a password spraying attack using a userlist and a single password.</p>
<pre><code class="language-PowerShell">Invoke-PasswordSprayEWS -ExchHostname mail.domain.com -UserList .\userlist.txt -Password Spring2021 -Threads 15 -OutFile sprayed-ews-creds.txt
</code></pre>
<p><strong>Invoke-PasswordSprayGmail</strong> This module will first attempt to connect to a Gmail Authentication portal and perform a password spraying attack using a userlist and a single password.</p>
<pre><code class="language-PowerShell">Invoke-PasswordSprayGmail -UserList .\userlist.txt -Password Fall2016 -Threads 15 -OutFile gmail-sprayed-creds.txt
</code></pre>
<p><strong>Invoke-DomainHarvestOWA</strong> will attempt to connect to an OWA portal and determine a valid domain name for logging into the portal from the WWW-Authenticate header returned in a web response from the server or based off of small timing differences in login attempts.</p>
<pre><code class="language-PowerShell">Invoke-DomainHarvestOWA -ExchHostname mail.domain.com
</code></pre>
<p><strong>Invoke-UsernameHarvestOWA</strong> will attempt to connect to an OWA portal and harvest valid usernames based off of small timing differences in login attempts.</p>
<pre><code class="language-PowerShell">Invoke-UsernameHarvestOWA -ExchHostname mail.domain.com -UserList .\userlist.txt -Threads 1 -OutFile owa-valid-users.txt
</code></pre>
<p><strong>Invoke-UsernameHarvestGmail</strong> is a module that will attempt to enumerate Google Apps user accounts and potentially identify user accounts that opt-out of implemented 2FA solutions.</p>
<pre><code class="language-PowerShell">Invoke-UsernameHarvestGmail -Account
Invoke-UsernameHarvestGmail -UserFile .\emails.txt
Invoke-UsernameHarvestGmail -UserFile .\emails.txt -ProxyHosts 10.0.0.5:8080,10.0.0.6:8080,10.0.0.10:443
Invoke-UsernameHarvestGmail -UserFile .\emails.txt -Detailed
Get-Content emails.txt | % { Invoke-UsernameHarvestGmail $_ }
</code></pre>
<p><strong>Invoke-OpenInboxFinder</strong> will attempt to determine if the current user has access to the Inbox of each email address in a list of addresses.</p>
<pre><code class="language-PowerShell">Invoke-OpenInboxFinder -EmailList email-list.txt
</code></pre>
<p><strong>Get-ADUsernameFromEWS</strong> will attempt to determine the Active Directory username for a single email address or a list of addresses. Use the Get-GlobalAddressList module to harvest a full list of email addresses to use with Get-ADUsernameFromEWS.</p>
<pre><code class="language-PowerShell">Get-ADUsernameFromEWS -EmailList email-list.txt
</code></pre>
<p><strong>Send-EWSEmail</strong> will attempt to connect to EWS and send an email.</p>
<pre><code class="language-PowerShell">Send-EWSEmail --ExchHostname substrate.office.com -Recipient $targetEmail -Subject "Foo" -EmailBody "Bar" -AccessToken $Accesstoken
</code></pre>
+
+
+ MicrosoftDocs/Contribute
+ 2023-12-24T01:57:17Z
+ tag:github.com,2023-12-24:/MicrosoftDocs/Contribute
+
+ <p></p><hr><h1>Microsoft Learn contributor guide</h1>
<p>This GitHub repository is the source for the pages in the <a href="https://learn.microsoft.com/contribute">Microsoft Learn contributor guide</a>.</p>
<h2>Microsoft Open Source Code of Conduct</h2>
<p>This project has adopted the <a href="https://opensource.microsoft.com/codeofconduct/">Microsoft Open Source Code of Conduct</a>. For more information see the <a href="https://opensource.microsoft.com/codeofconduct/faq/">Code of Conduct FAQ</a> or contact <a href="mailto:opencode@microsoft.com">opencode@microsoft.com</a> with any additional questions or comments.</p>
+
+
\ No newline at end of file
diff --git a/prisma/daily/index.xml b/prisma/daily/index.xml
index 3ae8d26492f..652852bcc19 100644
--- a/prisma/daily/index.xml
+++ b/prisma/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Prisma Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:05Z
+ 2023-12-24T01:39:40Z
Daily Trending of Prisma in GitHub
\ No newline at end of file
diff --git a/prisma/weekly/index.xml b/prisma/weekly/index.xml
new file mode 100644
index 00000000000..f05206cf310
--- /dev/null
+++ b/prisma/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Prisma Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:12Z
+ Weekly Trending of Prisma in GitHub
+
+
\ No newline at end of file
diff --git a/processing/daily/index.xml b/processing/daily/index.xml
index 0dcc54519e8..d5ddd79872e 100644
--- a/processing/daily/index.xml
+++ b/processing/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Processing Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:07Z
+ 2023-12-24T01:39:39Z
Daily Trending of Processing in GitHub
+
+ Elegant-Setup/Eskens-Maikel
+ 2023-12-24T01:39:39Z
+ tag:github.com,2023-12-24:/Elegant-Setup/Eskens-Maikel
+
+ <p></p><hr>
+
\ No newline at end of file
diff --git a/processing/weekly/index.xml b/processing/weekly/index.xml
new file mode 100644
index 00000000000..39a2e11e03e
--- /dev/null
+++ b/processing/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Processing Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:13Z
+ Weekly Trending of Processing in GitHub
+
+
+ SimonsMine/EyeStutter
+ 2023-12-24T01:57:13Z
+ tag:github.com,2023-12-24:/SimonsMine/EyeStutter
+
+ <p>a simple VJ tool to create magical imagery with video and sound</p><hr>
+
+
\ No newline at end of file
diff --git a/procfile/daily/index.xml b/procfile/daily/index.xml
index 9f918584f2b..dbf38eba736 100644
--- a/procfile/daily/index.xml
+++ b/procfile/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Procfile Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:30Z
+ 2023-12-24T01:40:02Z
Daily Trending of Procfile in GitHub
+
+ heroku/devcenter-webapp-runner
+ 2023-12-24T01:40:02Z
+ tag:github.com,2023-12-24:/heroku/devcenter-webapp-runner
+
+ <p></p><hr>
+
\ No newline at end of file
diff --git a/procfile/weekly/index.xml b/procfile/weekly/index.xml
new file mode 100644
index 00000000000..6e4d5c72f47
--- /dev/null
+++ b/procfile/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Procfile Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:31Z
+ Weekly Trending of Procfile in GitHub
+
+
\ No newline at end of file
diff --git a/proguard/daily/index.xml b/proguard/daily/index.xml
index b77df887dd9..2142e1df7c7 100644
--- a/proguard/daily/index.xml
+++ b/proguard/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Proguard Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:31Z
+ 2023-12-24T01:40:04Z
Daily Trending of Proguard in GitHub
\ No newline at end of file
diff --git a/proguard/weekly/index.xml b/proguard/weekly/index.xml
new file mode 100644
index 00000000000..9260178f75a
--- /dev/null
+++ b/proguard/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Proguard Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:32Z
+ Weekly Trending of Proguard in GitHub
+
+
\ No newline at end of file
diff --git a/prolog/daily/index.xml b/prolog/daily/index.xml
index b7e0d6d8158..335785a6b02 100644
--- a/prolog/daily/index.xml
+++ b/prolog/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Prolog Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:28Z
+ 2023-12-24T01:40:01Z
Daily Trending of Prolog in GitHub
\ No newline at end of file
diff --git a/prolog/weekly/index.xml b/prolog/weekly/index.xml
new file mode 100644
index 00000000000..bf5c4923099
--- /dev/null
+++ b/prolog/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Prolog Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:33Z
+ Weekly Trending of Prolog in GitHub
+
+
\ No newline at end of file
diff --git a/promela/daily/index.xml b/promela/daily/index.xml
index e82bfd12ad0..c7fe6098be2 100644
--- a/promela/daily/index.xml
+++ b/promela/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Promela Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:29Z
+ 2023-12-24T01:40:03Z
Daily Trending of Promela in GitHub
\ No newline at end of file
diff --git a/promela/weekly/index.xml b/promela/weekly/index.xml
new file mode 100644
index 00000000000..c49bc264035
--- /dev/null
+++ b/promela/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Promela Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:32Z
+ Weekly Trending of Promela in GitHub
+
+
\ No newline at end of file
diff --git a/propeller-spin/daily/index.xml b/propeller-spin/daily/index.xml
index 791166bcb53..bb856b0c719 100644
--- a/propeller-spin/daily/index.xml
+++ b/propeller-spin/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Propeller Spin Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:34Z
+ 2023-12-24T01:40:05Z
Daily Trending of Propeller Spin in GitHub
\ No newline at end of file
diff --git a/propeller-spin/weekly/index.xml b/propeller-spin/weekly/index.xml
new file mode 100644
index 00000000000..76518a15e32
--- /dev/null
+++ b/propeller-spin/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Propeller Spin Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:34Z
+ Weekly Trending of Propeller Spin in GitHub
+
+
\ No newline at end of file
diff --git a/protocol-buffer-text-format/daily/index.xml b/protocol-buffer-text-format/daily/index.xml
index 80ef564d234..8c73a1e7111 100644
--- a/protocol-buffer-text-format/daily/index.xml
+++ b/protocol-buffer-text-format/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Protocol Buffer Text Format Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:33Z
+ 2023-12-24T01:40:05Z
Daily Trending of Protocol Buffer Text Format in GitHub
\ No newline at end of file
diff --git a/protocol-buffer-text-format/weekly/index.xml b/protocol-buffer-text-format/weekly/index.xml
new file mode 100644
index 00000000000..8f85bd7e756
--- /dev/null
+++ b/protocol-buffer-text-format/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Protocol Buffer Text Format Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:36Z
+ Weekly Trending of Protocol Buffer Text Format in GitHub
+
+
\ No newline at end of file
diff --git a/protocol-buffer/daily/index.xml b/protocol-buffer/daily/index.xml
index 368dbeeb443..8fa8aeb09e4 100644
--- a/protocol-buffer/daily/index.xml
+++ b/protocol-buffer/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Protocol Buffer Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:35Z
+ 2023-12-24T01:40:07Z
Daily Trending of Protocol Buffer in GitHub
\ No newline at end of file
diff --git a/protocol-buffer/weekly/index.xml b/protocol-buffer/weekly/index.xml
new file mode 100644
index 00000000000..5347acc4479
--- /dev/null
+++ b/protocol-buffer/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Protocol Buffer Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:35Z
+ Weekly Trending of Protocol Buffer in GitHub
+
+
\ No newline at end of file
diff --git a/public-key/daily/index.xml b/public-key/daily/index.xml
index e0aae493f61..f5d468293c4 100644
--- a/public-key/daily/index.xml
+++ b/public-key/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Public Key Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:32Z
+ 2023-12-24T01:40:06Z
Daily Trending of Public Key in GitHub
\ No newline at end of file
diff --git a/public-key/weekly/index.xml b/public-key/weekly/index.xml
new file mode 100644
index 00000000000..cd6b0e05ec9
--- /dev/null
+++ b/public-key/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Public Key Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:36Z
+ Weekly Trending of Public Key in GitHub
+
+
\ No newline at end of file
diff --git a/pug/daily/index.xml b/pug/daily/index.xml
index baace604a3f..50c023637a1 100644
--- a/pug/daily/index.xml
+++ b/pug/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pug Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:36Z
+ 2023-12-24T01:40:10Z
Daily Trending of Pug in GitHub
\ No newline at end of file
diff --git a/pug/weekly/index.xml b/pug/weekly/index.xml
new file mode 100644
index 00000000000..42ca0f17ad5
--- /dev/null
+++ b/pug/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pug Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:38Z
+ Weekly Trending of Pug in GitHub
+
+
\ No newline at end of file
diff --git a/puppet/daily/index.xml b/puppet/daily/index.xml
index fee28dc7060..dbf4cf823cd 100644
--- a/puppet/daily/index.xml
+++ b/puppet/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Puppet Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:37Z
+ 2023-12-24T01:40:09Z
Daily Trending of Puppet in GitHub
\ No newline at end of file
diff --git a/puppet/weekly/index.xml b/puppet/weekly/index.xml
new file mode 100644
index 00000000000..48a8b105173
--- /dev/null
+++ b/puppet/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Puppet Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:40Z
+ Weekly Trending of Puppet in GitHub
+
+
\ No newline at end of file
diff --git a/pure-data/daily/index.xml b/pure-data/daily/index.xml
index d46f20105cd..5475be55e28 100644
--- a/pure-data/daily/index.xml
+++ b/pure-data/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Pure Data Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:38Z
+ 2023-12-24T01:40:08Z
Daily Trending of Pure Data in GitHub
\ No newline at end of file
diff --git a/pure-data/weekly/index.xml b/pure-data/weekly/index.xml
new file mode 100644
index 00000000000..049ab10de3a
--- /dev/null
+++ b/pure-data/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Pure Data Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:37Z
+ Weekly Trending of Pure Data in GitHub
+
+
\ No newline at end of file
diff --git a/purebasic/daily/index.xml b/purebasic/daily/index.xml
index 282d6d423bc..560f2c4eb69 100644
--- a/purebasic/daily/index.xml
+++ b/purebasic/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PureBasic Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:39Z
+ 2023-12-24T01:40:08Z
Daily Trending of PureBasic in GitHub
\ No newline at end of file
diff --git a/purebasic/weekly/index.xml b/purebasic/weekly/index.xml
new file mode 100644
index 00000000000..ad04be34deb
--- /dev/null
+++ b/purebasic/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub PureBasic Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:39Z
+ Weekly Trending of PureBasic in GitHub
+
+
\ No newline at end of file
diff --git a/purescript/daily/index.xml b/purescript/daily/index.xml
index 44870679093..df919b65059 100644
--- a/purescript/daily/index.xml
+++ b/purescript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub PureScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:46Z
+ 2023-12-24T01:40:16Z
Daily Trending of PureScript in GitHub
\ No newline at end of file
diff --git a/purescript/weekly/index.xml b/purescript/weekly/index.xml
new file mode 100644
index 00000000000..a7021356ca1
--- /dev/null
+++ b/purescript/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub PureScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:46Z
+ Weekly Trending of PureScript in GitHub
+
+
+ nammayatri/nammayatri
+ 2023-12-24T01:57:46Z
+ tag:github.com,2023-12-24:/nammayatri/nammayatri
+
+ <p>A Direct-to-Driver open mobility platform powering the next-generation of mobility applications in India.</p><hr>
+
+
\ No newline at end of file
diff --git a/python-console/daily/index.xml b/python-console/daily/index.xml
index 760a99048eb..6c85542a8c1 100644
--- a/python-console/daily/index.xml
+++ b/python-console/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Python console Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:41Z
+ 2023-12-24T01:40:11Z
Daily Trending of Python console in GitHub
\ No newline at end of file
diff --git a/python-console/weekly/index.xml b/python-console/weekly/index.xml
new file mode 100644
index 00000000000..b91d7c8d392
--- /dev/null
+++ b/python-console/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Python console Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:41Z
+ Weekly Trending of Python console in GitHub
+
+
\ No newline at end of file
diff --git a/python-traceback/daily/index.xml b/python-traceback/daily/index.xml
index bd7f4818e9a..c0aba58a325 100644
--- a/python-traceback/daily/index.xml
+++ b/python-traceback/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Python traceback Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:05Z
+ 2023-12-24T01:40:33Z
Daily Trending of Python traceback in GitHub
\ No newline at end of file
diff --git a/python-traceback/weekly/index.xml b/python-traceback/weekly/index.xml
new file mode 100644
index 00000000000..d3fa500e3e9
--- /dev/null
+++ b/python-traceback/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Python traceback Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:56Z
+ Weekly Trending of Python traceback in GitHub
+
+
\ No newline at end of file
diff --git a/python/daily/index.xml b/python/daily/index.xml
index ff6a7626a9f..b94c122c11f 100644
--- a/python/daily/index.xml
+++ b/python/daily/index.xml
@@ -1,28 +1,28 @@
GitHub Python Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:36:46Z
+ 2023-12-24T01:40:16Z
Daily Trending of Python in GitHub
- JoeanAmier/TikTokDownloader
- 2023-12-23T01:36:46Z
- tag:github.com,2023-12-23:/JoeanAmier/TikTokDownloader
-
- <p>完全免费开源,基于 Requests 模块实现:TikTok 主页/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具</p><hr><div align="center">
<img src="https://github.com/JoeanAmier/TikTokDownloader/raw/master/static/images/TikTokDownloader.png" alt="TikTokDownloader" height="256" width="256">
<br>
<h1>TikTokDownloader</h1>
<img alt="GitHub" src="https://img.shields.io/github/license/JoeanAmier/TikTokDownloader">
<img alt="GitHub forks" src="https://img.shields.io/github/forks/JoeanAmier/TikTokDownloader?color=eb6ea5">
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/JoeanAmier/TikTokDownloader?color=fff200">
<img src="https://img.shields.io/badge/Sourcery-enabled-884898" alt="Sourcery">
<img alt="GitHub release (with filter)" src="https://img.shields.io/github/v/release/JoeanAmier/TikTokDownloader">
<img alt="GitHub all releases" src="https://img.shields.io/github/downloads/JoeanAmier/TikTokDownloader/total?color=3eb370">
</div>
<br>
<p>🔥 <b>TikTok 主页/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具:</b>完全开源,基于 Requests 模块实现的免费工具;批量下载抖音账号发布、喜欢、收藏作品;批量下载 TikTok 账号主页作品;下载抖音链接或 TikTok 链接作品;获取抖音直播推流地址;下载抖音直播视频;采集抖音作品评论数据;批量下载抖音合集作品;采集抖音账号详细数据;采集抖音用户 / 作品 / 直播搜索结果;采集抖音热榜数据。</p>
<p>⭐ Windows 10 及以上用户可前往 <a href="https://github.com/JoeanAmier/TikTokDownloader/releases/latest">Releases</a> 下载已编译的 exe 程序,开箱即用!</p>
<p>❤️ 作者仅在 GitHub 发布 TikTokDownloader,未与任何个人或网站合作,且没有任何收费计划!</p>
<hr>
<h1>📝 功能清单(Function)</h1>
<ul>
<li>✅ 下载抖音无水印视频/图集</li>
<li>✅ 下载 TikTok 无水印视频/图集</li>
<li>✅ 批量下载抖音账号发布/喜欢/收藏作品</li>
<li>✅ 批量下载 TikTok 账号发布/喜欢作品</li>
<li>✅ 采集抖音 / TikTok 详细数据</li>
<li>✅ 批量下载链接作品</li>
<li>✅ 多账号批量下载作品</li>
<li>✅ 自动跳过已下载的文件</li>
<li>✅ 持久化保存采集数据</li>
<li>✅ 下载动态/静态封面图</li>
<li>✅ 获取抖音直播推流地址</li>
<li>✅ 调用 ffmpeg 下载直播</li>
<li>✅ Web UI 交互界面</li>
<li>✅ 采集抖音作品评论数据</li>
<li>✅ 批量下载抖音合集作品</li>
<li>✅ 记录点赞收藏等统计数据</li>
<li>✅ 筛选作品发布时间</li>
<li>✅ 支持账号作品增量下载</li>
<li>✅ 支持使用代理采集数据</li>
<li>✅ 支持局域网远程访问</li>
<li>✅ 采集抖音账号详细数据</li>
<li>✅ 作品统计数据更新</li>
<li>✅ 自动更新账号昵称</li>
<li>✅ 部署至私有服务器</li>
<li>✅ 部署至公开服务器</li>
<li>✅ 采集抖音搜索数据</li>
<li>✅ 采集抖音热榜数据</li>
<li>✅ 记录已下载作品 ID</li>
<li>✅ 扫码登陆获取 Cookie</li>
<li>✅ 支持 Web API 调用</li>
<li>✅ 支持多线程下载作品</li>
<li>✅ 文件完整性处理机制</li>
<li>✅ 自定义规则筛选作品</li>
</ul>
<h1>💻 程序界面(Screenshot)</h1>
<p><strong>终端命令行模式:</strong> <br><br> <img src="https://raw.githubusercontent.com/JoeanAmier/TikTokDownloader/master/docs/%E7%BB%88%E7%AB%AF%E6%A8%A1%E5%BC%8F%E6%88%AA%E5%9B%BE1.png" alt="终端模式截图"></p>
<hr>
<p><img src="https://raw.githubusercontent.com/JoeanAmier/TikTokDownloader/master/docs/%E7%BB%88%E7%AB%AF%E6%A8%A1%E5%BC%8F%E6%88%AA%E5%9B%BE2.png" alt="终端模式截图"> <br><br> <strong>Web UI 交互模式:</strong> <br><br> <img src="https://raw.githubusercontent.com/JoeanAmier/TikTokDownloader/master/docs/WebUI%E6%A8%A1%E5%BC%8F%E6%88%AA%E5%9B%BE1.png" alt="WebUI模式截图"></p>
<hr>
<p><img src="https://raw.githubusercontent.com/JoeanAmier/TikTokDownloader/master/docs/WebUI%E6%A8%A1%E5%BC%8F%E6%88%AA%E5%9B%BE2.png" alt="WebUI模式截图"></p>
<hr>
<p><img src="https://raw.githubusercontent.com/JoeanAmier/TikTokDownloader/master/docs/WebUI%E6%A8%A1%E5%BC%8F%E6%88%AA%E5%9B%BE3.png" alt="WebUI模式截图"> <br><br> <strong>Web API 接口模式:</strong> <br><br> <img src="https://raw.githubusercontent.com/JoeanAmier/TikTokDownloader/master/docs/WebAPI%E6%A8%A1%E5%BC%8F%E6%88%AA%E5%9B%BE.png" alt="WebAPI模式截图"></p>
<h1>📽 运行演示(Example)</h1>
<h2>批量下载账号发布作品</h2>
<p><b>🎥 点击图片观看演示视频,建议通过配置文件管理账号,更多介绍请查阅 <a href="https://github.com/JoeanAmier/TikTokDownloader/wiki/Documentation">文档</a></b></p>
<p><a href="https://www.bilibili.com/video/BV1Nu4y1L7LW/"><img src="https://raw.githubusercontent.com/JoeanAmier/TikTokDownloader/master/docs/%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E6%BC%94%E7%A4%BA.png" alt="演示视频"></a></p>
<h1>📈 项目状态(Status)</h1>
<ul>
<li>🟢 <a href="https://github.com/JoeanAmier/TikTokDownloader/releases/latest">Releases</a> 发布的源码已完成测试,所有功能均可正常使用</li>
<li>🟡 未来可能使用协程技术优化项目代码</li>
<li>🟡 未来可能新增可视化编辑配置文件功能</li>
<li>🟡 未来可能支持更多抖音热榜类型</li>
<li>🟡 未来可能新增终端文本用户界面(TUI)模式</li>
<li>🟡 未来可能支持全功能版的 Web UI 交互模式</li>
<li>🟡 未来可能新增监听剪贴板下载作品功能</li>
<li>🟡 未来可能新增账号新作品监测功能</li>
<li>🟡 未来可能新增合集新作品监测功能</li>
<li>🟡 未来可能新增直播开播监测功能</li>
<li>🟡 未来可能新增获取账号关注列表功能</li>
<li>🟡 未来可能新增获取账号收藏合集列表功能</li>
<li>🟡 未来可能优化 TikTok 平台批量下载功能</li>
<li>🔴 最新版本的源码可能存在不稳定的 Bug</li>
<li>🔴 如果在使用过程中发现程序 Bug,请及时告知作者修复</li>
</ul>
<h1>📁 项目结构(Structure)</h1>
<pre><code class="language-text">TikTokDownloader
├─ main.py // 项目程序启动入口
├─ requirements.txt // 程序所需第三方模块信息
├─ settings.json // 运行参数配置文件
├─ src // 项目模块源码文件夹
│ ├─ CookieTool.py // Cookie 处理模块
│ ├─ Customizer.py // 项目代码调整模块
│ ├─ Configuration.py // 配置文件处理模块
│ ├─ DataAcquirer.py // 接口数据获取模块
│ ├─ DataExtractor.py // 数据提取储存模块
│ ├─ DataDownloader.py // 作品文件下载模块
│ ├─ FileManager.py // 作品文件管理模块
│ ├─ Parameter.py // 加密参数生成模块
│ ├─ Recorder.py // 日志及数据记录模块
│ ├─ StringCleaner.py // 非法字符处理模块
│ ├─ main_complete.py // 终端命令行模式启动入口
│ ├─ main_server.py // 服务器部署模式启动入口
│ ├─ main_api_server.py // Web API 接口模式启动入口
│ └─ main_web_UI.py // Web UI 交互模式启动入口
├─ cache // 缓存数据文件夹
│ ├─ temp // 下载文件临时文件夹
│ ├─ AccountCache.json // 账号管理缓存数据
│ └─ IDRecorder.txt // 作品下载记录数据
├─ static // 静态资源文件夹
├─ templates // HTML 模板文件夹
└─ docs // 项目文档资源文件夹
</code></pre>
<h1>📋 项目说明(Instructions)</h1>
<h2>快速入门</h2>
<ol>
<li><b>下载 EXE 程序</b> 或者 <b>配置运行环境</b>
<ol>
<b>直接运行程序</b>
<li>下载 <a href="https://github.com/JoeanAmier/TikTokDownloader/releases/latest">Releases</a> 发布的 EXE 程序压缩包</li>
<li>解压后打开程序文件夹,双击运行 <code>main.exe</code></li>
</ol>
<ol>
<b>通过源码运行</b>
<li>安装不低于 <code>3.12</code> 版本的 <a href="https://www.python.org/">Python</a> 解释器</li>
<li>下载最新的源码或 <a href="https://github.com/JoeanAmier/TikTokDownloader/releases/latest">Releases</a> 发布的源码至本地</li>
<li>运行 <code>pip install -r requirements.txt</code> 命令安装程序所需模块</li>
<li>运行 main.py</li>
</ol> </li>
<li>查看屏幕输出的 TikTokDownloader 免责声明,根据提示输入内容</li>
<li>将 Cookie 信息写入配置文件
<ol>
<b>手动复制粘贴(推荐)</b>
<li>参考 <a href="https://github.com/JoeanAmier/TikTokDownloader/raw/master/docs/Cookie%E6%95%99%E7%A8%8B.md">Cookie 提取教程</a>,复制所需 Cookie 至剪贴板</li>
<li>选择 <code>复制粘贴写入 Cookie</code> 选项,按照提示将 Cookie 写入配置文件</li>
</ol>
<ol>
<b>扫码登录获取</b>
<li>选择 <code>扫码登陆写入 Cookie</code> 选项,程序会显示登录二维码图片,并使用默认应用打开图片</li>
<li>使用抖音 APP 扫描二维码并登录账号</li>
<li>按照提示操作,将 Cookie 写入配置文件</li>
</ol> </li>
<li>返回程序界面,依次选择 <code>终端命令行模式</code> --> <code>批量下载链接作品</code></li>
<li>输入抖音或 TikTok 作品链接即可下载作品文件</li>
<li>更多详细说明请查看 <b><a href="https://github.com/JoeanAmier/TikTokDownloader/wiki/Documentation">项目文档</a></b></li>
</ol>
<p>⭐ 推荐使用 <a href="https://learn.microsoft.com/zh-cn/windows/terminal/install">Windows 终端</a>(Windows 11 自带默认终端)</p>
<hr>
<h2>关于 Cookie</h2>
<p><a href="https://github.com/JoeanAmier/TikTokDownloader/raw/master/docs/Cookie%E6%95%99%E7%A8%8B.md">点击查看 Cookie 获取教程</a></p>
<table>
<thead>
<tr>
<th align="center">程序功能</th>
<th align="center">是否需要登录</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">下载账号发布作品</td>
<td align="center">⭕建议登录</td>
</tr>
<tr>
<td align="center">下载账号喜欢作品</td>
<td align="center">⭕建议登录</td>
</tr>
<tr>
<td align="center">下载链接作品</td>
<td align="center">⭕建议登录</td>
</tr>
<tr>
<td align="center">获取直播推流地址</td>
<td align="center">❌无需登录</td>
</tr>
<tr>
<td align="center">下载直播视频</td>
<td align="center">❌无需登录</td>
</tr>
<tr>
<td align="center">获取作品评论数据</td>
<td align="center">⭕建议登录</td>
</tr>
<tr>
<td align="center">下载合集作品</td>
<td align="center">⭕建议登录</td>
</tr>
<tr>
<td align="center">获取账号数据</td>
<td align="center">⭕建议登录</td>
</tr>
<tr>
<td align="center">采集搜索结果</td>
<td align="center">⭕建议登录</td>
</tr>
<tr>
<td align="center">采集热榜数据</td>
<td align="center">❌无需登录</td>
</tr>
<tr>
<td align="center">下载账号收藏作品</td>
<td align="center">✔️需要登录</td>
</tr>
</tbody>
</table>
<p><strong>Cookie 仅需在失效后重新写入配置文件,并非每次运行程序都要写入配置文件!</strong></p>
<p><strong>程序获取数据失败时,可以尝试更新 Cookie 或者使用已登录的 Cookie!</strong></p>
<hr>
<h2>其他说明</h2>
<ul>
<li>程序提示用户输入时,直接回车代表返回上级菜单,输入 <code>Q</code> 或 <code>q</code> 代表结束运行</li>
<li>由于获取账号喜欢作品和收藏作品数据仅返回喜欢 / 收藏作品的发布日期,不返回操作日期,因此程序需要获取全部喜欢 / 收藏作品数据再进行日期筛选;如果作品数量较多,可能会花费较长的时间;可通过 <code>max_pages</code> 参数控制请求次数</li>
<li>获取私密账号的发布作品数据需要登录后的 Cookie,且登录的账号需要关注该私密账号</li>
<li>批量下载账号作品或合集作品时,如果对应的昵称或标识发生变化,程序会自动更新已下载作品文件名称中的昵称和标识</li>
<li>程序下载文件时会先将文件下载至临时文件夹,下载完成后再移动至储存文件夹;程序运行结束时会清空临时文件夹</li>
<li>如果想要修改程序功能,可以直接修改 <code>src/Customizer.py</code> 文件内容,支持自定义大部分程序功能</li>
<li><code>批量下载收藏作品模式</code> 目前仅支持下载当前已登录 Cookie 对应账号的收藏作品,暂不支持多账号</li>
<li>如果想要程序使用代理,必须在 <code>settings.json</code> 设置 <code>proxies</code> 参数,否则程序不会使用代理</li>
<li>部分使用者反馈,新发布的作品过早下载会下载到低分辨率的文件,一段时间后才能下载到高分辨率文件,但时间规律尚不明确</li>
<li>退出程序时,请以正常方式结束运行或者按下 Ctrl + C 结束运行,不要直接点击终端窗口的关闭按钮结束运行,否则会导致数据丢失</li>
<li>程序默认不启用请求延时,但是建议使用者编辑 <code>src/Customizer.py</code> 文件启用随机延时或固定延时,避免频繁请求导致被抖音风控</li>
<li>如果您的计算机没有合适的程序编辑 JSON 文件,建议使用 <a href="https://try8.cn/tool/format/json">JSON 在线工具</a> 编辑配置文件内容</li>
<li>当程序请求用户输入内容或链接时,请注意避免输入的内容或链接包含换行符,这可能会导致预期之外的问题</li>
</ul>
<hr>
<h2>EXE 更新</h2>
<ul>
<li> <p><strong>方案一:</strong> 下载并解压文件,将旧版本的 <code>cache</code> 文件夹和 <code>settings.json</code> 文件复制到 <code>_internal</code> 文件夹。</p> </li>
<li> <p><strong>方案二:</strong> 下载并解压文件,复制全部文件,直接覆盖旧版本文件。</p> </li>
</ul>
<h1>⚠️ 免责声明(Disclaimers)</h1>
<ul>
<li>使用者对本项目的使用由使用者自行决定,并自行承担风险。作者对使用者使用本项目所产生的任何损失、责任、或风险概不负责。</li>
<li>本项目的作者提供的代码和功能是基于现有知识和技术的开发成果。作者尽力确保代码的正确性和安全性,但不保证代码完全没有错误或缺陷。</li>
<li>使用者在使用本项目时必须严格遵守 <a href="https://github.com/JoeanAmier/TikTokDownloader/raw/master/license">GNU General Public License v3.0</a> 的要求,并在适当的地方注明使用了 <a href="https://github.com/JoeanAmier/TikTokDownloader/raw/master/license">GNU General Public License v3.0</a> 的代码。 </li>
<li>使用者在任何情况下均不得将本项目的作者、贡献者或其他相关方与使用者的使用行为联系起来,或要求其对使用者使用本项目所产生的任何损失或损害负责。</li>
<li>使用者在使用本项目的代码和功能时,必须自行研究相关法律法规,并确保其使用行为合法合规。任何因违反法律法规而导致的法律责任和风险,均由使用者自行承担。</li>
<li>本项目的作者不会提供 TikTokDownloader 项目的付费版本,也不会提供与 TikTokDownloader 项目相关的任何商业服务。</li>
<li>基于本项目进行的任何二次开发、修改或编译的程序与原创作者无关,原创作者不承担与二次开发行为或其结果相关的任何责任,使用者应自行对因二次开发可能带来的各种情况负全部责任。</li>
</ul>
<b>在使用本项目的代码和功能之前,请您认真考虑并接受以上免责声明。如果您对上述声明有任何疑问或不同意,请不要使用本项目的代码和功能。如果您使用了本项目的代码和功能,则视为您已完全理解并接受上述免责声明,并自愿承担使用本项目的一切风险和后果。</b>
<h1>✉️ 联系作者(Contact)</h1>
<ul>
<li>QQ: 2437596031(联系请说明来意)</li>
<li>QQ Group: <a href="https://github.com/JoeanAmier/TikTokDownloader/raw/master/docs/QQ%E7%BE%A4%E8%81%8A%E4%BA%8C%E7%BB%B4%E7%A0%81.png">点击扫码加入群聊</a></li>
<li>Email: yonglelolu@gmail.com</li>
</ul>
<p> <b>TikTokDownloader 是我个人独立维护的一个开源项目,鉴于个人精力有限,请理解项目进展可能较为缓慢,我会尽力保持更新和维护,以确保项目的稳定性和功能的不断改进。</b> </p>
<p> <b>如果您通过 Email 联系我,我可能无法及时查看并回复信息,我会尽力在七天内回复您的邮件;如果有紧急事项或需要更快的回复,请通过其他方式与我联系,谢谢理解!</b> </p>
<p><b>如果您对小红书感兴趣,可以了解一下我的另一个开源项目 <a href="https://github.com/JoeanAmier/XHS-Downloader">XHS-Downloader</a></b></p>
<h1>♥️ 支持项目(Support)</h1>
<p>如果 <b>TikTokDownloader</b> 对您有帮助,请考虑为它点个 <b>Star</b> ⭐,感谢您的支持!</p>
<table>
<thead>
<tr>
<th align="center">微信(WeChat)</th>
<th align="center">支付宝(Alipay)</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><img src="./docs/微信赞助二维码.png" alt="微信赞助二维码" height="200" width="200"></td>
<td align="center"><img src="./docs/支付宝赞助二维码.png" alt="支付宝赞助二维码" height="200" width="200"></td>
</tr>
</tbody>
</table>
<p>如果您愿意,可以考虑提供资助为 <b>TikTokDownloader</b> 提供额外的支持!</p>
<h1>💡 代码参考(Refer)</h1>
<ul>
<li><a href="https://github.com/Johnserf-Seed/f2">https://github.com/Johnserf-Seed/f2</a></li>
<li><a href="https://github.com/Johnserf-Seed/TikTokDownload">https://github.com/Johnserf-Seed/TikTokDownload</a></li>
<li><a href="https://github.com/Evil0ctal/Douyin_TikTok_Download_API">https://github.com/Evil0ctal/Douyin_TikTok_Download_API</a></li>
<li><a href="https://github.com/ihmily/DouyinLiveRecorder">https://github.com/ihmily/DouyinLiveRecorder</a></li>
<li><a href="https://github.com/davidteather/TikTok-Api">https://github.com/davidteather/TikTok-Api</a></li>
<li><a href="https://github.com/psf/requests">https://github.com/psf/requests</a></li>
<li><a href="https://github.com/pallets/flask">https://github.com/pallets/flask</a></li>
<li><a href="https://github.com/Textualize/rich">https://github.com/Textualize/rich</a></li>
<li><a href="https://ffmpeg.org/ffmpeg-all.html">https://ffmpeg.org/ffmpeg-all.html</a></li>
<li><a href="https://html5up.net/hyperspace">https://html5up.net/hyperspace</a></li>
</ul>
+ cumulo-autumn/StreamDiffusion
+ 2023-12-24T01:40:16Z
+ tag:github.com,2023-12-24:/cumulo-autumn/StreamDiffusion
+
+ <p>StreamDiffusion: A Pipeline-Level Solution for Real-Time Interactive Generation</p><hr><h1>StreamDiffusion</h1>
<p><a href="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/README.md">English</a> | <a href="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/README-ja.md">日本語</a></p>
<p align="center"> <img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_07.gif" width="90%"> <img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_09.gif" width="90%"> </p>
<h1>StreamDiffusion: A Pipeline-Level Solution for Real-Time Interactive Generation</h1>
<p><strong>Authors:</strong> <a href="https://www.linkedin.com/in/akio-kodaira-1a7b98252/">Akio Kodaira</a>, <a href="https://www.chenfengx.com/">Chenfeng Xu</a>, Toshiki Hazama, <a href="https://twitter.com/__ramu0e__">Takanori Yoshimoto</a>, <a href="https://www.linkedin.com/in/kohei--ohno/">Kohei Ohno</a>, <a href="https://me.ddpn.world/">Shogo Mitsuhori</a>, <a href="https://twitter.com/toni_nimono">Soichi Sugano</a>, <a href="https://twitter.com/hanyingcl">Hanying Cho</a>, <a href="https://zhijianliu.com/">Zhijian Liu</a>, <a href="https://scholar.google.com/citations?hl=en&user=ID9QePIAAAAJ">Kurt Keutzer</a></p>
<p>StreamDiffusion is an innovative diffusion pipeline designed for real-time interactive generation. It introduces significant performance enhancements to current diffusion-based image generation techniques.</p>
<p><a href="https://arxiv.org/abs/2312.12491"><img src="https://img.shields.io/badge/arXiv-2307.04725-b31b1b.svg?sanitize=true" alt="arXiv"></a> <a href="https://huggingface.co/papers/2312.12491"><img src="https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-papers-yellow" alt="Hugging Face Papers"></a></p>
<p>We sincerely thank <a href="https://twitter.com/AttaQjp">Taku Fujimoto</a> and <a href="https://twitter.com/radamar">Radamés Ajna</a> and Hugging Face team for their invaluable feedback, courteous support, and insightful discussions.</p>
<h2>Key Features</h2>
<ol>
<li> <p><strong>Stream Batch</strong></p>
<ul>
<li>Streamlined data processing through efficient batch operations.</li>
</ul> </li>
<li> <p><strong>Residual Classifier-Free Guidance</strong> - <a href="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/#residual-cfg-rcfg">Learn More</a></p>
<ul>
<li>Improved guidance mechanism that minimizes computational redundancy.</li>
</ul> </li>
<li> <p><strong>Stochastic Similarity Filter</strong> - <a href="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/#stochastic-similarity-filter">Learn More</a></p>
<ul>
<li>Improves GPU utilization efficiency through advanced filtering techniques.</li>
</ul> </li>
<li> <p><strong>IO Queues</strong></p>
<ul>
<li>Efficiently manages input and output operations for smoother execution.</li>
</ul> </li>
<li> <p><strong>Pre-Computation for KV-Caches</strong></p>
<ul>
<li>Optimizes caching strategies for accelerated processing.</li>
</ul> </li>
<li> <p><strong>Model Acceleration Tools</strong></p>
<ul>
<li>Utilizes various tools for model optimization and performance boost.</li>
</ul> </li>
</ol>
<p>When images are produced using our proposed StreamDiffusion pipeline in an environment with <strong>GPU: RTX 4090</strong>, <strong>CPU: Core i9-13900K</strong>, and <strong>OS: Ubuntu 22.04.3 LTS</strong>.</p>
<table>
<thead>
<tr>
<th align="center">model</th>
<th align="center">Denoising Step</th>
<th align="center">fps on Txt2Img</th>
<th align="center">fps on Img2Img</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">SD-turbo</td>
<td align="center">1</td>
<td align="center">106.16</td>
<td align="center">93.897</td>
</tr>
<tr>
<td align="center">LCM-LoRA <br>+<br> KohakuV2</td>
<td align="center">4</td>
<td align="center">38.023</td>
<td align="center">37.133</td>
</tr>
</tbody>
</table>
<p>Feel free to explore each feature by following the provided links to learn more about StreamDiffusion's capabilities. If you find it helpful, please consider citing our work:</p>
<pre><code class="language-bash">@article{kodaira2023streamdiffusion,
title={StreamDiffusion: A Pipeline-level Solution for Real-time Interactive Generation},
author={Akio Kodaira and Chenfeng Xu and Toshiki Hazama and Takanori Yoshimoto and Kohei Ohno and Shogo Mitsuhori and Soichi Sugano and Hanying Cho and Zhijian Liu and Kurt Keutzer},
year={2023},
eprint={2312.12491},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
</code></pre>
<h2>Installation</h2>
<h3>Step0: clone this repository</h3>
<pre><code class="language-bash">git clone https://github.com/cumulo-autumn/StreamDiffusion.git
</code></pre>
<h3>Step1: Make Environment</h3>
<p>You can install StreamDiffusion via pip, conda, or Docker(explanation below).</p>
<pre><code class="language-bash">conda create -n streamdiffusion python=3.10
conda activate streamdiffusion
</code></pre>
<p>OR</p>
<pre><code class="language-cmd">python -m venv .venv
# Windows
.\.venv\Scripts\activate
# Linux
source .venv/bin/activate
</code></pre>
<h3>Step2: Install PyTorch</h3>
<p>Select the appropriate version for your system.</p>
<p>CUDA 11.8</p>
<pre><code class="language-bash">pip3 install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu118
</code></pre>
<p>CUDA 12.1</p>
<pre><code class="language-bash">pip3 install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu121
</code></pre>
<p>details: <a href="https://pytorch.org/">https://pytorch.org/</a></p>
<h3>Step3: Install StreamDiffusion</h3>
<h4>For User</h4>
<p>Install StreamDiffusion</p>
<pre><code class="language-bash">#for Latest Version (recommended)
pip install git+https://github.com/cumulo-autumn/StreamDiffusion.git@main#egg=streamdiffusion[tensorrt]
#or
#for Stable Version
pip install streamdiffusion[tensorrt]
</code></pre>
<p>Install TensorRT extension and pywin32 (※※pywin32 is required only for Windows.)</p>
<pre><code class="language-bash">python -m streamdiffusion.tools.install-tensorrt
# If you use Windows, you need to install pywin32
pip install pywin32
</code></pre>
<h4>For Developer</h4>
<pre><code class="language-bash">python setup.py develop easy_install streamdiffusion[tensorrt]
python -m streamdiffusion.tools.install-tensorrt
</code></pre>
<h3>Docker Installation (TensorRT Ready)</h3>
<pre><code class="language-bash">git clone https://github.com/cumulo-autumn/StreamDiffusion.git
cd StreamDiffusion
docker build -t stream-diffusion:latest -f Dockerfile .
docker run --gpus all -it -v $(pwd):/home/ubuntu/streamdiffusion stream-diffusion:latest
</code></pre>
<h2>Quick Start</h2>
<p>You can try StreamDiffusion in <a href="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/examples"><code>examples</code></a> directory.</p>
<table>
<thead>
<tr>
<th align="center"><img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_02.gif" alt="画像3"></th>
<th align="center"><img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_03.gif" alt="画像4"></th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_04.gif" alt="画像5"></td>
<td align="center"><img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_05.gif" alt="画像6"></td>
</tr>
</tbody>
</table>
<h2>Real-Time Txt2Img Demo</h2>
<p>There is an interactive txt2img demo in <a href="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/demo/realtime-txt2img"><code>demo/realtime-txt2img</code></a> directory!</p>
<p align="center"> <img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_01.gif" width="100%"> </p>
<h2>Usage Example</h2>
<p>We provide a simple example of how to use StreamDiffusion. For more detailed examples, please refer to <a href="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/examples"><code>examples</code></a> directory.</p>
<h3>Image-to-Image</h3>
<pre><code class="language-python">import torch
from diffusers import AutoencoderTiny, StableDiffusionPipeline
from diffusers.utils import load_image
from streamdiffusion import StreamDiffusion
from streamdiffusion.image_utils import postprocess_image
# You can load any models using diffuser's StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("KBlueLeaf/kohaku-v2.1").to(
device=torch.device("cuda"),
dtype=torch.float16,
)
# Wrap the pipeline in StreamDiffusion
stream = StreamDiffusion(
pipe,
t_index_list=[32, 45],
torch_dtype=torch.float16,
)
# If the loaded model is not LCM, merge LCM
stream.load_lcm_lora()
stream.fuse_lora()
# Use Tiny VAE for further acceleration
stream.vae = AutoencoderTiny.from_pretrained("madebyollin/taesd").to(device=pipe.device, dtype=pipe.dtype)
# Enable acceleration
pipe.enable_xformers_memory_efficient_attention()
prompt = "1girl with dog hair, thick frame glasses"
# Prepare the stream
stream.prepare(prompt)
# Prepare image
init_image = load_image("assets/img2img_example.png").resize((512, 512))
# Warmup >= len(t_index_list) x frame_buffer_size
for _ in range(2):
stream(init_image)
# Run the stream infinitely
while True:
x_output = stream(init_image)
postprocess_image(x_output, output_type="pil")[0].show()
input_response = input("Press Enter to continue or type 'stop' to exit: ")
if input_response == "stop":
break
</code></pre>
<h3>Text-to-Image</h3>
<pre><code class="language-python">import torch
from diffusers import AutoencoderTiny, StableDiffusionPipeline
from streamdiffusion import StreamDiffusion
from streamdiffusion.image_utils import postprocess_image
# You can load any models using diffuser's StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("KBlueLeaf/kohaku-v2.1").to(
device=torch.device("cuda"),
dtype=torch.float16,
)
# Wrap the pipeline in StreamDiffusion
# Requires more long steps (len(t_index_list)) in text2image
# You recommend to use cfg_type="none" when text2image
stream = StreamDiffusion(
pipe,
t_index_list=[0, 16, 32, 45],
torch_dtype=torch.float16,
cfg_type="none",
)
# If the loaded model is not LCM, merge LCM
stream.load_lcm_lora()
stream.fuse_lora()
# Use Tiny VAE for further acceleration
stream.vae = AutoencoderTiny.from_pretrained("madebyollin/taesd").to(device=pipe.device, dtype=pipe.dtype)
# Enable acceleration
pipe.enable_xformers_memory_efficient_attention()
prompt = "1girl with dog hair, thick frame glasses"
# Prepare the stream
stream.prepare(prompt)
# Warmup >= len(t_index_list) x frame_buffer_size
for _ in range(4):
stream()
# Run the stream infinitely
while True:
x_output = stream.txt2img()
postprocess_image(x_output, output_type="pil")[0].show()
input_response = input("Press Enter to continue or type 'stop' to exit: ")
if input_response == "stop":
break
</code></pre>
<p>You can make it faster by using SD-Turbo.</p>
<h3>Faster generation</h3>
<p>Replace the following code in the above example.</p>
<pre><code class="language-python">pipe.enable_xformers_memory_efficient_attention()
</code></pre>
<p>To</p>
<pre><code class="language-python">from streamdiffusion.acceleration.tensorrt import accelerate_with_tensorrt
stream = accelerate_with_tensorrt(
stream, "engines", max_batch_size=2,
)
</code></pre>
<p>It requires TensorRT extension and time to build the engine, but it will be faster than the above example.</p>
<h2>Optionals</h2>
<h3>Stochastic Similarity Filter</h3>
<p><img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/demo_06.gif" alt="demo"></p>
<p>Stochastic Similarity Filter reduces processing during video input by minimizing conversion operations when there is little change from the previous frame, thereby alleviating GPU processing load, as shown by the red frame in the above GIF. The usage is as follows:</p>
<pre><code class="language-python">stream = StreamDiffusion(
pipe,
[32, 45],
torch_dtype=torch.float16,
)
stream.enable_similar_image_filter(
similar_image_filter_threshold,
similar_image_filter_max_skip_frame,
)
</code></pre>
<p>There are the following parameters that can be set as arguments in the function:</p>
<h4><code>similar_image_filter_threshold</code></h4>
<ul>
<li>The threshold for similarity between the previous frame and the current frame before the processing is paused.</li>
</ul>
<h4><code>similar_image_filter_max_skip_frame</code></h4>
<ul>
<li>The maximum interval during the pause before resuming the conversion.</li>
</ul>
<h3>Residual CFG (RCFG)</h3>
<p><img src="https://raw.githubusercontent.com/cumulo-autumn/StreamDiffusion/main/assets/cfg_conparision.png" alt="rcfg"></p>
<p>RCFG is a method for approximately realizing CFG with competitive computational complexity compared to cases where CFG is not used. It can be specified through the cfg_type argument in the StreamDiffusion. There are two types of RCFG: one with no specified items for negative prompts RCFG Self-Negative and one where negative prompts can be specified RCFG Onetime-Negative. In terms of computational complexity, denoting the complexity without CFG as N and the complexity with a regular CFG as 2N, RCFG Self-Negative can be computed in N steps, while RCFG Onetime-Negative can be computed in N+1 steps.</p>
<p>The usage is as follows:</p>
<pre><code class="language-python"># w/0 CFG
cfg_type = "none"
# CFG
cfg_type = "full"
# RCFG Self-Negative
cfg_type = "self"
# RCFG Onetime-Negative
cfg_type = "initialize"
stream = StreamDiffusion(
pipe,
[32, 45],
torch_dtype=torch.float16,
cfg_type=cfg_type,
)
stream.prepare(
prompt="1girl, purple hair",
guidance_scale=guidance_scale,
delta=delta,
)
</code></pre>
<p>The delta has a moderating effect on the effectiveness of RCFG.</p>
<h2>Development Team</h2>
<p><a href="https://twitter.com/cumulo_autumn">Aki</a>, <a href="https://twitter.com/AttaQjp">Ararat</a>, <a href="https://twitter.com/Chenfeng_X">Chenfeng Xu</a>, <a href="https://twitter.com/ddPn08">ddPn08</a>, <a href="https://twitter.com/ArtengMimi">kizamimi</a>, <a href="https://twitter.com/__ramu0e__">ramune</a>, <a href="https://twitter.com/hanyingcl">teftef</a>, <a href="https://twitter.com/toni_nimono">Tonimono</a>, <a href="https://twitter.com/IMG_5955">Verb</a>,</p>
<p>(*alphabetical order) <br></p>
<h2>Acknowledgements</h2>
<p>The video and image demos in this GitHub repository were generated using <a href="https://huggingface.co/latent-consistency/lcm-lora-sdv1-5">LCM-LoRA</a> + <a href="https://civitai.com/models/136268/kohaku-v2">KohakuV2</a> and <a href="https://arxiv.org/abs/2311.17042">SD-Turbo</a>.</p>
<p>Special thanks to <a href="https://latent-consistency-models.github.io/">LCM-LoRA authors</a> for providing the LCM-LoRA and Kohaku BlueLeaf (<a href="https://twitter.com/KBlueleaf">@KBlueleaf</a>) for providing the KohakuV2 model and ,to <a href="https://ja.stability.ai/">Stability AI</a> for <a href="https://arxiv.org/abs/2311.17042">SD-Turbo</a>.</p>
<p>KohakuV2 Models can be downloaded from <a href="https://civitai.com/models/136268/kohaku-v2">Civitai</a> and <a href="https://huggingface.co/KBlueLeaf/kohaku-v2.1">Hugging Face</a>.</p>
<p>SD-Turbo is also available on <a href="https://huggingface.co/stabilityai/sd-turbo">Hugging Face Space</a>.</p>
<h2>Contributors</h2>
<a href="https://github.com/cumulo-autumn/StreamDiffusion/graphs/contributors"> <img src="https://contrib.rocks/image?repo=cumulo-autumn/StreamDiffusion"> </a>
- johnma2006/mamba-minimal
- 2023-12-23T01:36:46Z
- tag:github.com,2023-12-23:/johnma2006/mamba-minimal
-
- <p>Simple, minimal implementation of the Mamba SSM in one file of PyTorch.</p><hr><h2>mamba-minimal</h2>
<p>Simple, minimal implementation of Mamba in one file of PyTorch.</p>
<p>Featuring:</p>
<ul>
<li>Equivalent numerical output as official implementation for both forward and backward pass</li>
<li>Simplified, readable, annotated code</li>
</ul>
<p>Does NOT include:</p>
<ul>
<li>Speed. The official implementation is heavily optimized, and these optimizations are core contributions of the Mamba paper. I kept most implementations simple for readability.</li>
<li>Proper parameter initialization (though this could be added without sacrificing readability)</li>
</ul>
<h2>Demo</h2>
<p>See <a href="https://raw.githubusercontent.com/johnma2006/mamba-minimal/master/demo.ipynb">demo.ipynb</a> for examples of prompt completions.</p>
<pre><code class="language-python">from model import Mamba
from transformers import AutoTokenizer
model = Mamba.from_pretrained('state-spaces/mamba-370m')
tokenizer = AutoTokenizer.from_pretrained('EleutherAI/gpt-neox-20b')
generate(model, tokenizer, 'Mamba is the')
</code></pre>
<blockquote>
<p>Mamba is the world's longest venomous snake with an estimated length of over 150 m. With such a large size and a venomous bite, Mamba kills by stabbing the victim (which is more painful and less effective than a single stab of the bite)</p>
</blockquote>
<p>150 meters... 🫢 scary!</p>
<h2>References</h2>
<p>The Mamba architecture was introduced in <a href="https://arxiv.org/abs/2312.00752">Mamba: Linear-Time Sequence Modeling with Selective State Spaces</a> by <a href="https://twitter.com/_albertgu?lang=en">Albert Gu</a> and <a href="https://twitter.com/tri_dao?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor">Tri Dao</a>.</p>
<p>The official implementation is here: <a href="https://github.com/state-spaces/mamba/tree/main">https://github.com/state-spaces/mamba/tree/main</a></p>
+ szymanowiczs/splatter-image
+ 2023-12-24T01:40:16Z
+ tag:github.com,2023-12-24:/szymanowiczs/splatter-image
+
+ <p>Official implementation of `Splatter Image: Ultra-Fast Single-View 3D Reconstruction'</p><hr><h1>splatter-image</h1>
<p>Official implementation of `Splatter Image: Ultra-Fast Single-View 3D Reconstruction'</p>
<h1>Using this repository</h1>
<h2>Installation</h2>
<ol>
<li>Create a conda environment and install requirements:</li>
</ol>
<pre><code>conda create --name splatter-image
conda activate splatter-image
pip install -r requirements.txt
</code></pre>
<ol start="2">
<li> <p>Install Gaussian Splatting renderer, i.e. the library for rendering a Gaussian Point cloud to an image. To do so, pull the <a href="https://github.com/graphdeco-inria/gaussian-splatting/tree/main">Gaussian Splatting repository</a> and, with your conda environment activated, run <code>pip install submodules/diff-gaussian-rasterization</code>. You will need to meet the <a href="https://github.com/graphdeco-inria/gaussian-splatting/raw/main/README.md#hardware-requirements">hardware and software requirements</a>. We did all our experimentation on an NVIDIA A6000 GPU and speed measurements on an NVIDIA V100 GPU.</p> </li>
<li> <p>If you want to train on CO3D data you will need to install Pytorch3D. See instructions <a href="https://github.com/facebookresearch/pytorch3d/raw/main/INSTALL.md">here</a>.</p> </li>
</ol>
<h2>Data</h2>
<ul>
<li> <p>For training / evaluating on ShapeNet-SRN follow instructions from <a href="https://github.com/sxyu/pixel-nerf#getting-the-data">PixelNeRF</a> and change <code>SHAPENET_DATASET_ROOT</code> in <code>scene/srn.py</code> to your download directory. No additional prepreocessing is needed.</p> </li>
<li> <p>For training / evaluating on CO3D download the hydrant and teddybear classes from the <a href="https://ai.meta.com/datasets/co3d-downloads/">CO3D release</a>. Next, set <code>CO3D_RAW_ROOT</code> to your download directory in <code>data_preprocessing/preoprocess_co3d.py</code>. Set <code>CO3D_OUT_ROOT</code> to where you want to store preprocessed data. Run <code>python data_preprocessing/preprocess_co3d.py</code> and set <code>CO3D_DATASET_ROOT:=CO3D_OUT_ROOT</code>.</p> </li>
</ul>
<h2>Pretrained models</h2>
<p>Pretrained models will be released in early 2024!</p>
<h2>Training</h2>
<p>Single-view models can be trained with the following command:</p>
<pre><code>python train_network.py +dataset=[cars,chairs,hydrants,teddybears]
</code></pre>
<p>To train a 2-view model run:</p>
<pre><code>python train_network.py +dataset=cars cam_embd=pose_pos data.input_images=2 opt.imgs_per_obj=5
</code></pre>
<h2>Evaluation</h2>
<p>Once a model is trained evaluation can be run with</p>
<pre><code>python eval.py [model directory path]
</code></pre>
<p>To save renders modify variable <code>save_vis</code> and <code>out_folder</code> in eval.py.</p>
<h2>Code structure</h2>
<p>Training loop is implemented in <code>train_network.py</code> and evaluation code is in <code>eval.py</code>. Datasets are implemented in <code>scene/srn.py</code> and <code>scene/co3d.py</code>. Model is implemented in <code>scene/gaussian_predictor.py</code>. The call to renderer can be found in <code>gaussian_renderer/__init__.py</code>.</p>
<h2>Camera conventions</h2>
<p>Gaussian rasterizer assumes row-major order of rigid body transform matrices, i.e. that position vectors are row vectors. It also requires cameras in the COLMAP / OpenCV convention, i.e., that x points right, y down, and z away from the camera (forward).</p>
<h1>BibTeX</h1>
<pre><code>@inproceedings{szymanowicz23splatter,
title={Splatter Image: Ultra-Fast Single-View 3D Reconstruction},
author={Stanislaw Szymanowicz and Christian Rupprecht and Andrea Vedaldi},
year={2023},
booktitle={arXiv},
}
</code></pre>
<h1>Acknowledgements</h1>
<p>S. Szymanowicz is supported by an EPSRC Doctoral Training Partnerships Scholarship (DTP) EP/R513295/1 and the Oxford-Ashton Scholarship. A. Vedaldi is supported by ERC-CoG UNION 101001212. We thank Eldar Insafutdinov for his help with installation requirements.</p>
- CircleRadon/Osprey
- 2023-12-23T01:36:46Z
- tag:github.com,2023-12-23:/CircleRadon/Osprey
-
- <p>The code for "Osprey: Pixel Understanding with Visual Instruction Tuning"</p><hr><p align="center" width="100%"> <img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/osprey.png" width="90%"> </p>
<div align="center">
<p><img src="https://img.shields.io/badge/Osprey-v1-F7C97E" alt="Static Badge"> <a href="https://arxiv.org/pdf/2312.10032.pdf"><img src="https://img.shields.io/badge/arxiv-2312.10032-ECA8A7?logo=arxiv" alt="arXiv preprint"></a> <a href=""><img src="https://img.shields.io/badge/Dataset-coming_soon-CFAFD4" alt="Dataset"></a> <a href="https://youtu.be/YsxqHBBnDfk"><img src="https://img.shields.io/badge/Watch_Video-36600E?logo=youtube&logoColor=green" alt="video"></a> <a href="http://111.0.123.204:8000/"><img src="https://img.shields.io/badge/Try_Demo-6B88E3?logo=youtubegaming&logoColor=DAE4EE" alt="Static Badge"></a></p>
</div>
<div align="center">
Demo username & password:
<b>osprey</b>
</div>
<hr>
<div align="center">
<img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/qmsht.gif">
<br> A part of
<i>Along the River During the Qingming Festival</i> (清明上河图)
<br>
<img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/qyqx.gif">
<br>
<i>Spirited Away</i> (千与千寻)
<br>
</div>
<h2>Updates 📌</h2>
<p>[2023/12/18]🔥 We released the code, <a href="https://huggingface.co/sunshine-lwt/Osprey-7b/tree/main">osprey-7b model</a> and <a href="http://111.0.123.204:8000/">online demo</a> for Osprey.</p>
<h2>What is Osprey 👀</h2>
<p>Osprey is a mask-text instruction tuning approach that extends MLLMs by incorporating pixel-wise mask regions into language instructions, enabling <strong>fine-grained visual understanding</strong>. Based on input mask region, Osprey generate the semantic descriptions including <strong>short description</strong> and <strong>detailed description</strong>.</p>
<p>Our Osprey can seamlessly integrate with <a href="https://github.com/facebookresearch/segment-anything">SAM</a> in point-prompt, box-prompt and segmentation everything modes to generate the semantics associated with specific parts or objects.</p>
<img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/framework.png" width="800px">
<h2>Watch Video Demo 🎥</h2>
<p align="center"> <a href="https://youtu.be/YsxqHBBnDfk"><img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/video_cover.png" width="70%"></a> </p>
<h2>Try Our Demo 🕹️</h2>
<h3>Online demo</h3>
<p><strong>Click</strong> 👇 <strong>to try our demo online.</strong></p>
<p><a href="http://111.0.123.204:8000/"><strong>web demo</strong></a></p>
<pre><code>username: osprey
password: osprey
</code></pre>
<table>
<tbody>
<tr>
<td style="text-align: center"><br>Point<br></td>
<td><img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/demo_point.gif" width="700"></td>
</tr>
<tr>
<td style="text-align: center"><br>Box<br></td>
<td><img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/demo_box.gif" width="700"></td>
</tr>
<tr>
<td style="text-align: center"><br>Everything<br></td>
<td><img src="https://raw.githubusercontent.com/CircleRadon/Osprey/main/assets/demo_all.gif" width="700"></td>
</tr>
</tbody>
</table>
<h3>Offline demo</h3>
<ol>
<li>First install <a href="https://github.com/LiWentomng/gradio-osprey-demo">Gradio-Osprey-Demo</a>.</li>
<li>Install Segment Anything.</li>
</ol>
<pre><code>pip install git+https://github.com/facebookresearch/segment-anything.git
</code></pre>
<ol start="3">
<li> <p>Download <a href="https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth">ViT-B SAM model</a> to checkpoints.</p> </li>
<li> <p>Run <code>app.py</code>.</p> </li>
</ol>
<pre><code>cd demo
python app.py --model checkpoint/osprey_7b
</code></pre>
<h2>Install 🛠️</h2>
<ol>
<li>Clone this repository and navigate to Osprey folder</li>
</ol>
<pre><code>git clone https://github.com/CircleRadon/Osprey.git
cd Osprey
</code></pre>
<ol start="2">
<li>Install packages</li>
</ol>
<pre><code>conda create -n osprey python=3.10 -y
conda activate osprey
pip install --upgrade pip # enable PEP 660 support
pip install -e .
</code></pre>
<ol start="3">
<li>Install additional packages for training cases</li>
</ol>
<pre><code>pip install -e ".[train]"
pip install flash-attn --no-build-isolation
</code></pre>
<h2>Checkpoints 🤖</h2>
<ol>
<li>Convnext-large-CLIP-model🤗: <a href="https://huggingface.co/laion/CLIP-convnext_large_d_320.laion2B-s29B-b131K-ft-soup/blob/main/open_clip_pytorch_model.bin">model</a></li>
<li>Osprey-7b model🤗: <a href="https://huggingface.co/sunshine-lwt/Osprey-7b/tree/main">model</a></li>
</ol>
<p>Then change the "mm_vision_tower" in <code>config.json</code> of Osprey-7b model to the path of <code>Convnext-large-CLIP-model</code>.</p>
<h2>TODO List 📝</h2>
<ul>
<li><input type="checkbox" checked disabled> Release the checkpoints, inference codes and demo.</li>
<li><input type="checkbox" disabled> Release the dataset and training scripts.</li>
<li><input type="checkbox" disabled> Release the evaluation code.</li>
<li><input type="checkbox" disabled> Release the code for data generation pipeline.</li>
</ul>
<h2>Acknowledgement 💌</h2>
<ul>
<li><a href="https://github.com/haotian-liu/LLaVA">LLaVA-v1.5</a>: the codebase we built upon.</li>
<li><a href="https://github.com/facebookresearch/segment-anything">SAM</a>: the demo uses the segmentation result from SAM as the input of Osprey.</li>
</ul>
<h2>BibTeX 🖊️</h2>
<pre><code>@misc{Osprey,
title={Osprey: Pixel Understanding with Visual Instruction Tuning},
author={Yuqian Yuan, Wentong Li, Jian Liu, Dongqi Tang, Xinjie Luo, Chi Qin, Lei Zhang and Jianke Zhu},
year={2023},
eprint={2312.10032},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
</code></pre>
+ joaomdmoura/crewAI
+ 2023-12-24T01:40:16Z
+ tag:github.com,2023-12-24:/joaomdmoura/crewAI
+
+ <p></p><hr><h1>crewAI</h1>
<p>🤖 Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.</p>
<ul>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#why-crewai">Why CrewAI</a></li>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#getting-started">Getting Started</a></li>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#key-features">Key Features</a></li>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#examples">Examples</a></li>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#local-open-source-models">Local Open Source Models</a></li>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#how-crewai-compares">CrewAI x AutoGen x ChatDev</a></li>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#contribution">Contribution</a></li>
<li><a href="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/#license">License</a></li>
</ul>
<h2>Why CrewAI?</h2>
<p>The power of AI collaboration has too much to offer. CrewAI is designed to enable AI agents to assume roles, share goals, and operate in a cohesive unit - much like a well-oiled crew. Whether you're building a smart assistant platform, an automated customer service ensemble, or a multi-agent research team, CrewAI provides the backbone for sophisticated multi-agent interactions.</p>
<ul>
<li>🤖 <a href="https://chat.openai.com/g/g-qqTuUWsBY-crewai-assistant">Talk with the Docs</a></li>
<li>📄 <a href="https://github.com/joaomdmoura/CrewAI/wiki">Documention Wiki</a></li>
</ul>
<h2>Getting Started</h2>
<p>To get started with CrewAI, follow these simple steps:</p>
<ol>
<li><strong>Installation</strong>:</li>
</ol>
<pre><code class="language-shell">pip install crewai
</code></pre>
<ol start="2">
<li><strong>Setting Up Your Crew</strong>:</li>
</ol>
<pre><code class="language-python">import os
from crewai import Agent, Task, Crew, Process
os.environ["OPENAI_API_KEY"] = "Your Key"
# Define your agents with roles and goals
researcher = Agent(
role='Researcher',
goal='Discover new insights',
backstory="You're a world class researcher working on a major data science company",
verbose=True,
allow_delegation=False
# llm=OpenAI(temperature=0.7, model_name="gpt-4"). It uses langchain.chat_models, default is GPT4
)
writer = Agent(
role='Writer',
goal='Create engaging content',
backstory="You're a famous technical writer, specialized on writing data related content",
verbose=True,
allow_delegation=False
)
# Create tasks for your agents
task1 = Task(description='Investigate the latest AI trends', agent=researcher)
task2 = Task(description='Write a blog post on AI advancements', agent=writer)
# Instantiate your crew with a sequential process
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
verbose=True, # Crew verbose more will let you know what tasks are being worked on
process=Process.sequential # Sequential process will have tasks executed one after the other and the outcome of the previous one is passed as extra content into this next.
)
# Get your crew to work!
result = crew.kickoff()
</code></pre>
<p>Currently the only supported process is <code>Process.sequential</code>, where one task is executed after the other and the outcome of one is passed as extra content into this next.</p>
<h2>Key Features</h2>
<ul>
<li><strong>Role-Based Agent Design</strong>: Customize agents with specific roles, goals, and tools.</li>
<li><strong>Autonomous Inter-Agent Delegation</strong>: Agents can autonomously delegate tasks and inquire amongst themselves, enhancing problem-solving efficiency.</li>
<li><strong>Flexible Task Management</strong>: Define tasks with customizable tools and assign them to agents dynamically.</li>
<li><strong>Processes Driven</strong>: Currently only supports <code>sequential</code> task execution but more complex processes like consensual and hierarchical being worked on.</li>
</ul>
<p><img src="https://raw.githubusercontent.com/joaomdmoura/crewAI/main/crewAI-mindmap.png" alt="CrewAI Mind Map" title="CrewAI Mind Map"></p>
<h2>Examples</h2>
<p>You can test different real life examples of AI crews <a href="https://github.com/joaomdmoura/crewAI-examples?tab=readme-ov-file">in the examples repo</a></p>
<h2>Local Open Source Models</h2>
<p>crewAI supports integration with local models, thorugh tools such as <a href="https://ollama.ai/">Ollama</a>, for enhanced flexibility and customization. This allows you to utilize your own models, which can be particularly useful for specialized tasks or data privacy concerns.</p>
<h3>Setting Up Ollama</h3>
<ul>
<li><strong>Install Ollama</strong>: Ensure that Ollama is properly installed in your environment. Follow the installation guide provided by Ollama for detailed instructions.</li>
<li><strong>Configure Ollama</strong>: Set up Ollama to work with your local model. You will probably need to <a href="https://github.com/jmorganca/ollama/raw/main/docs/modelfile.md">tweak the model using a Modelfile</a>. I'd recommend adding <code>Observation</code> as a stop word and playing with <code>top_p</code> and <code>temperature</code>.</li>
</ul>
<h3>Integrating Ollama with CrewAI</h3>
<ul>
<li>Instantiate Ollama Model: Create an instance of the Ollama model. You can specify the model and the base URL during instantiation. For example:</li>
</ul>
<pre><code class="language-python">from langchain.llms import Ollama
ollama_openhermes = Ollama(model="agent")
# Pass Ollama Model to Agents: When creating your agents within the CrewAI framework, you can pass the Ollama model as an argument to the Agent constructor. For instance:
local_expert = Agent(
role='Local Expert at this city',
goal='Provide the BEST insights about the selected city',
backstory="""A knowledgeable local guide with extensive information
about the city, it's attractions and customs""",
tools=[
SearchTools.search_internet,
BrowserTools.scrape_and_summarize_website,
],
llm=ollama_openhermes, # Ollama model passed here
verbose=True
)
</code></pre>
<h2>How CrewAI Compares</h2>
<ul>
<li> <p><strong>Autogen</strong>: While Autogen excels in creating conversational agents capable of working together, it lacks an inherent concept of process. In Autogen, orchestrating agents' interactions requires additional programming, which can become complex and cumbersome as the scale of tasks grows.</p> </li>
<li> <p><strong>ChatDev</strong>: ChatDev introduced the idea of processes into the realm of AI agents, but its implementation is quite rigid. Customizations in ChatDev are limited and not geared towards production environments, which can hinder scalability and flexibility in real-world applications.</p> </li>
</ul>
<p><strong>CrewAI's Advantage</strong>: CrewAI is built with production in mind. It offers the flexibility of Autogen's conversational agents and the structured process approach of ChatDev, but without the rigidity. CrewAI's processes are designed to be dynamic and adaptable, fitting seamlessly into both development and production workflows.</p>
<h2>Contribution</h2>
<p>CrewAI is open-source and we welcome contributions. If you're looking to contribute, please:</p>
<ul>
<li>Fork the repository.</li>
<li>Create a new branch for your feature.</li>
<li>Add your feature or improvement.</li>
<li>Send a pull request.</li>
<li>We appreciate your input!</li>
</ul>
<h3>Installing Dependencies</h3>
<pre><code class="language-bash">poetry lock
poetry install
</code></pre>
<h3>Virtual Env</h3>
<pre><code class="language-bash">poetry shell
</code></pre>
<h3>Running Tests</h3>
<pre><code class="language-bash">poetry run pytest
</code></pre>
<h3>Packaging</h3>
<pre><code class="language-bash">poetry build
</code></pre>
<h3>Installing Locally</h3>
<pre><code class="language-bash">pip install dist/*.tar.gz
</code></pre>
<h2>License</h2>
<p>CrewAI is released under the MIT License</p>
\ No newline at end of file
diff --git a/python/weekly/index.xml b/python/weekly/index.xml
new file mode 100644
index 00000000000..990fb00ee47
--- /dev/null
+++ b/python/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Python Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:46Z
+ Weekly Trending of Python in GitHub
+
+
+ chatanywhere/GPT_API_free
+ 2023-12-24T01:57:46Z
+ tag:github.com,2023-12-24:/chatanywhere/GPT_API_free
+
+ <p>Free ChatGPT API Key,免费ChatGPT API,支持GPT4 API(免费),ChatGPT国内可用免费转发API,直连无需代理。可以搭配ChatBox等软件/插件使用,极大降低接口使用成本。国内即可无限制畅快聊天。</p><hr><div align="center">
<img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/logo.png" alt="icon" width="50px">
<h1 align="center">GPT-API-free</h1>
<p>支持 <strong>GPT-4</strong> / GPT-3.5-Turbo / GPT-3.5-Turbo-16K / embeddings / DALL·E / whisper / text-davinci</p>
<p>国内动态加速 直连无需代理</p>
<p><a href="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8">快速开始</a> / <a href="https://chatanywhere.apifox.cn/">API文档</a> / <a href="https://api.chatanywhere.org/v1/oauth/free/github/render">申请内测免费Key</a> / <a href="https://peiqi.shop/">支持付费Key</a></p>
<p><a href="https://qm.qq.com/cgi-bin/qm/qr?k=OFhxu4Z3qI-c-76QJfC2LLXfKGr0g-57&jump_from=webapi&authKey=Kzuf7g4fsE0ZAM7RN+7XvivEANxgDVqDbUs3WI6cB98pt4pFzq/3L8NMiMOy+mo1">QQ群: 780366686</a></p>
</div>
<h2>隐私声明</h2>
<p>该项目高度重视隐私,致力于保护其用户的隐私。该项目不会以任何方式收集、记录或存储用户输入的任何文本或由 OpenAI 服务器返回的任何文本。该项目不会向 OpenAI 或任何第三方提供有关 API 调用者的身份的任何信息,包括但不限于 IP 地址和用户代理字符串。</p>
<p>但OpenAI官方会根据其<a href="https://platform.openai.com/docs/data-usage-policies">数据使用政策</a>保留 30 天的数据。</p>
<h2>更新日志</h2>
<ul>
<li> <p><strong>2023年6月14日</strong> 适配GPT-3.5-Turbo-16K,免费key也支持16k模型;付费key跟随官方价格降低收费。</p> </li>
<li> <p><strong>2023年6月15日</strong> 适配0613版本新增的functions。</p> </li>
<li> <p><strong>2023年6月18日</strong> 新增对语音转文字模型Whisper支持。</p> </li>
<li> <p><strong>2023年8月4日</strong> 免费Key不再支持gpt-3.5-turbo-16k模型调用。</p> </li>
<li> <p><strong>2023年9月7日</strong> chatapi.chatanywhere.cn镜像站不再向国内用户提供服务,不影响API的正常使用。</p> </li>
<li> <p><strong>2023年11月8日</strong> 支持1106版本各模型,支持TTS文本转语音模型。</p> </li>
<li> <p><strong>2023年11月19日</strong> 支持gpt-4-1106-preview模型,价格仅原先gpt-4模型的三分之一到二分之一。</p> </li>
<li> <p><strong>2023年11月29日</strong> 开放免费API的gpt-4权限,每天可以免费使用10次。(不保证能长期提供)</p> </li>
</ul>
<h2>特点</h2>
<ol>
<li>支持Models, Embedding, text-davinci, GPT-3.5-Turbo, GPT-3.5-Turbo-16K(免费版不支持), <em><strong>GPT-4</strong></em>, <em><strong>DALLE</strong></em>(免费版不支持), <em><strong>Whisper</strong></em>(免费版不支持)。(免费版就可以支持AutoGPT, gpt_academic, langchain等)</li>
<li>免费版支持GPT-4,一天10次。(免费版gpt-4相对慢一些,付费版更稳定)</li>
<li>与官方完全一致的接口标准,兼容各种软件/插件。</li>
<li>支持流式响应。</li>
<li>国内线路使用动态加速,体验远优于使用代理连接官方。</li>
<li>无需科学上网,国内环境直接可用。</li>
<li>个人完全免费使用。</li>
</ol>
<h2>🚩注意事项</h2>
<p>❗️<em>近期OpenAI频繁出错,如果遇到无回复,报错等情况,可以查看 status.openai.com ,很大可能是OpenAI官方服务问题。</em></p>
<p>❗️<strong>免费API Key仅可用于个人非商业用途,教育,非营利性科研工作中。严禁商用,严禁大规模训练商用模型!训练科研用模型请提前加群联系我们。</strong></p>
<p>❗️我们将不定期对被滥用的Key进行封禁,如发现自己的key被误封请通过QQ群联系我们。</p>
<p>❗️我们的系统仅供内部评估测试使用,商用或面向大众使用请自行承担风险。</p>
<p>为了该项目长久发展,免费API Key限制<strong>60请求/小时/IP&Key</strong>调用频率,也就是说你如果在一个IP下使用多个Key,所有Key的每小时请求数总和不能超过60;同理,你如果将一个Key用于多个IP,这个Key的每小时请求数也不能超过60。(<strong>付费版API没有这个限制</strong>)</p>
<h2>免费使用</h2>
<ul>
<li><strong>🚀<a href="https://api.chatanywhere.org/v1/oauth/free/github/render">申请领取内测免费API Key</a></strong></li>
<li>免费版支持gpt-3.5-turbo, embedding, gpt-4。其中gpt-4由于价格过高,每24小时限制10次调用,且不支持流式传输。需要更稳定快速的gpt-4请使用付费版。</li>
<li><strong>转发Host1: <code>https://api.chatanywhere.tech</code> (国内中转,延时更低,host1和host2二选一)</strong></li>
<li><strong>转发Host2: <code>https://api.chatanywhere.com.cn</code> (国内中转,延时更低,host1和host2二选一)</strong></li>
<li><strong>转发Host3: <code>https://api.chatanywhere.cn</code> (国外使用,国内需要全局代理)</strong></li>
</ul>
<p>我们会定期根据使用量进行相应的扩容,只要不被官方制裁我们会一直提供免费API,如果该项目对你有帮助,还请为我们点一个<em><strong>Star</strong></em>。如果遇到问题可以在<a href="https://github.com/chatanywhere/GPT_API_free/issues">Issues</a>中反馈,有空会解答。</p>
<p>该API Key用于转发API,需要将Host改为<code>api.chatanywhere.tech</code>(国内首选)或者<code>api.chatanywhere.cn</code>(国外使用,国内需要全局代理)。</p>
<h2>付费版API</h2>
<ul>
<li>纯公益提供免费Key显然不是能持久运营下去的方案,所以我们引入付费API Key维持项目的日常开销,以促进项目的良性循环,还望大家理解。</li>
<li><a href="https://peiqi.shop/">购买低价付费Key</a></li>
</ul>
<ol>
<li>支持<strong>更稳定更快速的GPT4 API</strong>,GPT4体验更好,无限使用,价格仅官方价格85折。</li>
<li>性价比高,除了GPT4的其他模型价格相当于官网价格七分之一。</li>
<li>同官网计费策略,流式问答使用tiktoken库准确计算Tokens,非流式问答直接使用官方返回Tokens用量计费。</li>
<li>余额不会过期,永久有效。根据用户反馈30块钱个人中度使用GPT3.5估计能用一年。</li>
<li>所有的接口都保证转发自OpenAI官方接口,非peo、plus等不稳定方案,无水分,不掺假,保证稳定性。</li>
</ol>
<h2>如何使用</h2>
<ul>
<li>由于频繁的恶意请求,我们不再直接提供公共的免费Key,现在需要你使用你的Github账号绑定来领取你自己的免费Key。</li>
<li>🚀<a href="https://api.chatanywhere.org/v1/oauth/free/github/render">申请领取内测免费API Key</a> 或 <a href="https://peiqi.shop/">购买内测付费API Key</a></li>
<li>转发Host1: <code>https://api.chatanywhere.tech</code> (国内中转,延时更低,host1和host2二选一)</li>
<li>转发Host2: <code>https://api.chatanywhere.com.cn</code> (国内中转,延时更低,host1和host2二选一)</li>
<li>转发Host3: <code>https://api.chatanywhere.cn</code> (国外使用,国内需要全局代理)</li>
<li>余额和使用记录查询(通知公告也会发在这里): <a href="https://api.chatanywhere.tech/">余额查询及公告</a></li>
<li>转发API无法直接向官方接口api.openai.com发起请求,需要将请求地址改为api.chatanywhere.tech才可以使用,大部分插件和软件都可以修改。</li>
</ul>
<h2>常见软件/插件使用方法</h2>
<h3><strong>python openai官方库(使用AutoGPT,langchain等)</strong></h3>
<p>示例代码请参考<a href="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/demo.py">demo.py</a></p>
<p><em><strong>方法一</strong></em></p>
<pre><code class="language-python">import openai
openai.api_base = "https://api.chatanywhere.tech/v1"
# openai.api_base = "https://api.chatanywhere.cn/v1"
</code></pre>
<p><em><strong>方法二(方法一不起作用用这个)</strong></em></p>
<p>修改环境变量OPENAI_API_BASE,各个系统怎么改环境变量请自行搜索,修改环境变量后不起作用请重启系统。</p>
<pre><code class="language-bash">OPENAI_API_BASE=https://api.chatanywhere.tech/v1
或 OPENAI_API_BASE=https://api.chatanywhere.cn/v1
</code></pre>
<h3><strong>开源gpt_academic</strong></h3>
<p>找到<code>config.py</code>文件中的<code>API_URL_REDIRECT</code>配置并修改为以下内容:</p>
<pre><code class="language-python">API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "https://api.chatanywhere.tech/v1/chat/completions"}
# API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "https://api.chatanywhere.cn/v1/chat/completions"}
</code></pre>
<h3><strong>BotGem(AMA)</strong></h3>
<p>ChatGPT桌面应用,支持全平台,<em><strong>支持gpt-4-vision</strong></em>。</p>
<p>下载链接:<a href="https://bytemyth.com/ama">https://bytemyth.com/ama</a></p>
<p>使用方法:下载安装后在设置中如图设置,并点击更新。</p>
<p><img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/botgem.png" alt=""></p>
<h3><strong>ChatBox</strong></h3>
<p>ChatGPT开源桌面应用,支持全部桌面平台。</p>
<p>下载链接:<a href="https://github.com/Bin-Huang/chatbox/releases">https://github.com/Bin-Huang/chatbox/releases</a></p>
<p>使用方法:如图在设置中填入购买的密钥,并将代理设置为<code>https://api.chatanywhere.tech</code>即可</p>
<p><img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/chatbox.png" alt=""></p>
<h3><strong>Zotero插件</strong></h3>
<p><strong>pdf阅读插件zotero-gpt</strong></p>
<p>下载链接:<a href="https://github.com/MuiseDestiny/zotero-gpt/releases">https://github.com/MuiseDestiny/zotero-gpt/releases</a></p>
<p>安装好插件后使用以下命令设置,还是不会可以去b站搜教程。</p>
<pre><code>/api https://api.chatanywhere.tech
/secretKey 购买的转发key 记住别忘记带sk-
</code></pre>
<p><img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/zotero-gpt.png" alt=""></p>
<p><strong>翻译插件zotero-pdf-translate</strong></p>
<p>下载链接:<a href="https://github.com/windingwind/zotero-pdf-translate/releases">https://github.com/windingwind/zotero-pdf-translate/releases</a></p>
<p>接口地址填写: <a href="https://api.chatanywhere.tech/v1/chat/completions">https://api.chatanywhere.tech/v1/chat/completions</a></p>
<p>不用管状态是否显示可用 填上之后就可以了</p>
<p><img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/zotero-pdf-translate.png" alt=""></p>
<h3><strong>浏览器插件ChatGPT Sidebar</strong></h3>
<p>官网链接:<a href="https://chatgpt-sidebar.com/">https://chatgpt-sidebar.com/</a></p>
<p>安装好插件后进入设置页面,如图所示修改设置,将url修改为 <code>https://api.chatanywhere.tech</code> 。</p>
<p><img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/sidebar.png" alt=""></p>
<h3><strong>Jetbrains插件ChatGPT - Easycode</strong></h3>
<img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/jet1.png" width="200">
<p>安装好插件后在Settings > Tools > OpenAI > GPT 3.5 Turbo中如图所示配置好插件,重点要将Server Settings 修改为 <code>https://api.chatanywhere.tech/v1/chat/completions</code> 。并勾选Customize Server。</p>
<p><img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/jet2.png" alt=""></p>
<h3><strong>Raycast 插件 ChatGPT</strong></h3>
<ol>
<li> <p>在 Raycast Store 中找到 ChatGPT 插件,并按照提示安装: <img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/raycast1.png" alt=""></p> </li>
<li> <p>安装完成后在该插件配置中的 <code>API Key</code> 中填入我们的API Key,以及选中 <code>Change API Endpoint</code>,并在 <code>API Endpoint</code> 中填入 <code>https://api.chatanywhere.tech/v1</code> <img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/raycast2.png" alt=""> <img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/raycast3.png" alt=""></p> </li>
<li> <p>🍺 enjoy it~ <img src="https://raw.githubusercontent.com/chatanywhere/GPT_API_free/main/images/raycast4.gif" alt=""></p> </li>
</ol>
<h2>API报错说明</h2>
<ul>
<li>Overload错误</li>
</ul>
<p>具体错误信息:</p>
<pre><code>{
"error": {
"message": "That model is currently overloaded with other requests. You can retry your request, or contact us through our help center at help.openai.com if the error persists. (Please include the request ID xxxxxxxxxxxx in your message.)",
"type": "server_error",
"param": null,
"code": null
}
}
</code></pre>
<p>该错误由于OpenAI官方服务器负载高引起,与转发服务器负载无关。一般一段时间后恢复,可以等几秒后再试。</p>
<p><a href="https://star-history.com/#chatanywhere/GPT_API_free&Date"><img src="https://api.star-history.com/svg?repos=chatanywhere/GPT_API_free&type=Date" alt="Star History Chart"></a></p>
+
+
+ d2l-ai/d2l-zh
+ 2023-12-24T01:57:46Z
+ tag:github.com,2023-12-24:/d2l-ai/d2l-zh
+
+ <p>《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。</p><hr><h1>动手学深度学习(Dive into Deep Learning,D2L.ai)</h1>
<p><a href="https://zh.d2l.ai">第二版:zh.D2L.ai</a> | <a href="https://zh-v1.d2l.ai/">第一版:zh-v1.D2L.ai</a> | 安装和使用书中源代码: <a href="https://zh.d2l.ai/chapter_installation/index.html">第二版</a> <a href="https://zh-v1.d2l.ai/chapter_prerequisite/install.html">第一版</a></p>
<h5 align="center"><i>理解深度学习的最佳方法是学以致用。</i></h5>
<p align="center"> <img width="200" src="https://raw.githubusercontent.com/d2l-ai/d2l-zh/master/static/frontpage/_images/eq.jpg"> <img width="200" src="https://raw.githubusercontent.com/d2l-ai/d2l-zh/master/static/frontpage/_images/figure.jpg"> <img width="200" src="https://raw.githubusercontent.com/d2l-ai/d2l-zh/master/static/frontpage/_images/code.jpg"> <img width="200" src="https://raw.githubusercontent.com/d2l-ai/d2l-zh/master/static/frontpage/_images/notebook.gif"> </p>
<p>本开源项目代表了我们的一种尝试:我们将教给读者概念、背景知识和代码;我们将在同一个地方阐述剖析问题所需的批判性思维、解决问题所需的数学知识,以及实现解决方案所需的工程技能。</p>
<p>我们的目标是创建一个为实现以下目标的统一资源:</p>
<ol>
<li>所有人均可在网上免费获取;</li>
<li>提供足够的技术深度,从而帮助读者实际成为深度学习应用科学家:既理解数学原理,又能够实现并不断改进方法;</li>
<li>包含可运行的代码,为读者展示如何在实际中解决问题。这样不仅直接将数学公式对应成实际代码,而且可以修改代码、观察结果并及时获取经验;</li>
<li>允许我们和整个社区不断快速迭代内容,从而紧跟仍在高速发展的深度学习领域;</li>
<li>由包含有关技术细节问答的论坛作为补充,使大家可以相互答疑并交换经验。</li>
</ol>
<h5 align="center">将本书(中英文版)用作教材或参考书的大学</h5>
<p align="center"> <img width="400" src="https://d2l.ai/_images/map.png"> </p>
<p>如果本书对你有帮助,请Star (★) 本仓库或引用本书的英文版:</p>
<pre><code>@book{zhang2023dive,
title={Dive into Deep Learning},
author={Zhang, Aston and Lipton, Zachary C. and Li, Mu and Smola, Alexander J.},
publisher={Cambridge University Press},
note={\url{https://D2L.ai}},
year={2023}
}
</code></pre>
<h2>本书的英文版</h2>
<p>虽然纸质书已出版,但深度学习领域依然在迅速发展。为了得到来自更广泛的英文开源社区的帮助,从而提升本书质量,本书的新版将继续用英文编写,并搬回中文版。</p>
<p>欢迎关注本书的<a href="https://github.com/d2l-ai/d2l-en">英文开源项目</a>。</p>
<h2>中英文教学资源</h2>
<p>加州大学伯克利分校 2019 年春学期 <a href="http://courses.d2l.ai/berkeley-stat-157/index.html"><em>Introduction to Deep Learning</em> 课程</a>教材(同时提供含教学视频地址的<a href="https://github.com/d2l-ai/berkeley-stat-157/tree/master/slides-zh">中文版课件</a>)。</p>
<h2>学术界推荐</h2>
<blockquote>
<p>"Dive into this book if you want to dive into deep learning!"</p>
<b>— 韩家炜,ACM 院士、IEEE 院士,美国伊利诺伊大学香槟分校计算机系 Michael Aiken Chair 教授</b>
</blockquote>
<blockquote>
<p>"This is a highly welcome addition to the machine learning literature."</p>
<b>— Bernhard Schölkopf,ACM 院士、德国国家科学院院士,德国马克斯•普朗克研究所智能系统院院长</b>
</blockquote>
<blockquote>
<p>"书中代码可谓‘所学即所用’。"</p>
<b>— 周志华,ACM 院士、IEEE 院士、AAAS 院士,南京大学计算机科学与技术系主任</b>
</blockquote>
<blockquote>
<p>"这本书可以帮助深度学习实践者快速提升自己的能力。"</p>
<b>— 张潼,ASA 院士、IMS 院士,香港科技大学计算机系和数学系教授</b>
</blockquote>
<h2>工业界推荐</h2>
<blockquote>
<p>"一本优秀的深度学习教材,值得任何想了解深度学习何以引爆人工智能革命的人关注。"</p>
<b>— 黄仁勋,NVIDIA创始人 & CEO</b>
</blockquote>
<blockquote>
<p>"《动手学深度学习》是最适合工业界研发工程师学习的。我毫无保留地向广大的读者们强烈推荐。"</p>
<b>— 余凯,地平线公司创始人 & CEO</b>
</blockquote>
<blockquote>
<p>"强烈推荐这本书!我特别赞赏这种手脑一体的学习方式。"</p>
<b>— 漆远,复旦大学“浩清”教授、人工智能创新与产业研究院院长</b>
</blockquote>
<blockquote>
<p>"《动手学深度学习》是一本很容易让学习者上瘾的书。"</p>
<b>— 沈强,将门创投创始合伙人</b>
</blockquote>
<h2>贡献</h2>
<p>感谢<a href="https://github.com/d2l-ai/d2l-zh/graphs/contributors">社区贡献者们</a>为每一位读者改进这本开源书。</p>
<p><a href="https://zh.d2l.ai/chapter_appendix-tools-for-deep-learning/contributing.html">如何贡献</a> | <a href="https://zh.d2l.ai/chapter_preface/index.html">致谢</a> | <a href="https://discuss.d2l.ai/c/chinese-version/16">讨论或报告问题</a> | <a href="https://raw.githubusercontent.com/d2l-ai/d2l-zh/master/INFO.md">其他</a></p>
+
+
+ microsoft/promptbase
+ 2023-12-24T01:57:46Z
+ tag:github.com,2023-12-24:/microsoft/promptbase
+
+ <p>All things prompt engineering</p><hr><h1>promptbase</h1>
<p><code>promptbase</code> is an evolving collection of resources, best practices, and example scripts for eliciting the best performance from foundation models like <code>GPT-4</code>. We currently host scripts demonstrating the <a href="https://arxiv.org/abs/2311.16452"><code>Medprompt</code> methodology</a>, including examples of how we further extended this collection of prompting techniques ("<code>Medprompt+</code>") into non-medical domains:</p>
<table>
<thead>
<tr>
<th>Benchmark</th>
<th>GPT-4 Prompt</th>
<th>GPT-4 Results</th>
<th>Gemini Ultra Results</th>
</tr>
</thead>
<tbody>
<tr>
<td>MMLU</td>
<td>Medprompt+</td>
<td>90.10%</td>
<td>90.04%</td>
</tr>
<tr>
<td>GSM8K</td>
<td>Zero-shot</td>
<td>95.3%</td>
<td>94.4%</td>
</tr>
<tr>
<td>MATH</td>
<td>Zero-shot</td>
<td>68.4%</td>
<td>53.2%</td>
</tr>
<tr>
<td>HumanEval</td>
<td>Zero-shot</td>
<td>87.8%</td>
<td>74.4%</td>
</tr>
<tr>
<td>BIG-Bench-Hard</td>
<td>Few-shot + CoT</td>
<td>89.0%</td>
<td>83.6%</td>
</tr>
<tr>
<td>DROP</td>
<td>Zero-shot + CoT</td>
<td>83.7%</td>
<td>82.4%</td>
</tr>
<tr>
<td>HellaSwag</td>
<td>10-shot</td>
<td>95.3%</td>
<td>87.8%</td>
</tr>
</tbody>
</table>
<p>In the near future, <code>promptbase</code> will also offer further case studies and structured interviews around the scientific process we take behind prompt engineering. We'll also offer specialized deep dives into specialized tooling that accentuates the prompt engineering process. Stay tuned!</p>
<h2><code>Medprompt</code> and The Power of Prompting</h2>
<details>
<summary> <em>"Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine" (H. Nori, Y. T. Lee, S. Zhang, D. Carignan, R. Edgar, N. Fusi, N. King, J. Larson, Y. Li, W. Liu, R. Luo, S. M. McKinney, R. O. Ness, H. Poon, T. Qin, N. Usuyama, C. White, E. Horvitz 2023)</em> </summary>
<br>
<pre>
<p>@article{nori2023can,
title={Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine},
author={Nori, Harsha and Lee, Yin Tat and Zhang, Sheng and Carignan, Dean and Edgar, Richard and Fusi, Nicolo and King, Nicholas and Larson, Jonathan and Li, Yuanzhi and Liu, Weishung and others},
journal={arXiv preprint arXiv:2311.16452},
year={2023}
}
</p></pre>
<a href="https://arxiv.org/pdf/1909.09223.pdf">Paper link</a>
<p></p>
</details>
<p><img src="https://raw.githubusercontent.com/microsoft/promptbase/main/images/medprompt_radar.png" alt=""></p>
<p>In a recent <a href="https://arxiv.org/abs/2311.16452">study</a>, we showed how the composition of several prompting strategies into a method that we refer to as <code>Medprompt</code> can efficiently steer generalist models like GPT-4 to achieve top performance, even when compared to models specifically finetuned for medicine. <code>Medprompt</code> composes three distinct strategies together -- including dynamic few-shot selection, self-generated chain of thought, and choice-shuffle ensembling -- to elicit specialist level performance from GPT-4. We briefly describe these strategies here:</p>
<p><img src="https://raw.githubusercontent.com/microsoft/promptbase/main/images/medprompt_sa_graphic.png" alt=""></p>
<ul>
<li> <p><strong>Dynamic Few Shots</strong>: Few-shot learning -- providing several examples of the task and response to a foundation model -- enables models quickly adapt to a specific domain and learn to follow the task format. For simplicity and efficiency, the few-shot examples applied in prompting for a particular task are typically fixed; they are unchanged across test examples. This necessitates that the few-shot examples selected are broadly representative and relevant to a wide distribution of text examples. One approach to meeting these requirements is to have domain experts carefully hand-craft exemplars. Even so, this approach cannot guarantee that the curated, fixed few-shot examples will be appropriately representative of every test example. However, with enough available data, we can select <em>different</em> few-shot examples for different task inputs. We refer to this approach as employing dynamic few-shot examples. The method makes use of a mechanism to identify examples based on their similarity to the case at hand. For Medprompt, we did the following to identify representative few shot examples: Given a test example, we choose k training examples that are semantically similar using a k-NN clustering in the embedding space. Specifically, we first use OpenAI's <code>text-embedding-ada-002</code> model to embed candidate exemplars for few-shot learning. Then, for each test question x, we retrieve its nearest k neighbors x1, x2, ..., xk from the training set (according to distance in the embedding space of text-embedding-ada-002). These examples -- the ones most similar in embedding space to the test question -- are ultimately registered in the prompt.</p> </li>
<li> <p><strong>Self-Generated Chain of Thought (CoT)</strong>: Chain-of-thought (CoT) uses natural language statements, such as “Let’s think step by step,” to explicitly encourage the model to generate a series of intermediate reasoning steps. The approach has been found to significantly improve the ability of foundation models to perform complex reasoning. Most approaches to chain-of-thought center on the use of experts to manually compose few-shot examples with chains of thought for prompting. Rather than rely on human experts, we pursued a mechanism to automate the creation of chain-of-thought examples. We found that we could simply ask GPT-4 to generate chain-of-thought for the training examples, with appropriate guardrails for reducing risk of hallucination via incorrect reasoning chains.</p> </li>
<li> <p><strong>Majority Vote Ensembling</strong>: <a href="https://en.wikipedia.org/wiki/Ensemble_learning">Ensembling</a> refers to combining the output of several algorithms together to yield better predictive performance than any individual algorithm. Frontier models like <code>GPT-4</code> benefit from ensembling of their own outputs. A simple technique is to have a variety of prompts, or a single prompt with varied <code>temperature</code>, and report the most frequent answer amongst the ensemble constituents. For multiple choice questions, we employ a further trick that increases the diversity of the ensemble called <code>choice-shuffling</code>, where we shuffle the relative order of the answer choices before generating each reasoning path. We then select the most consistent answer, i.e., the one that is least sensitive to choice shuffling, which increases the robustness of the answer.</p> </li>
</ul>
<p>The combination of these three techniques led to breakthrough performance in Medprompt for medical challenge questions. Implementation details of these techniques can be found here: <a href="https://github.com/microsoft/promptbase/tree/main/src/promptbase/mmlu">https://github.com/microsoft/promptbase/tree/main/src/promptbase/mmlu</a></p>
<h2><code>Medprompt+</code> | Extending the power of prompting</h2>
<p>Here we provide some intuitive details on how we extended the <code>medprompt</code> prompting framework to elicit even stronger out-of-domain performance on the MMLU (Measuring Massive Multitask Language Understanding) benchmark. MMLU was established as a test of general knowledge and reasoning powers of large language models. The complete MMLU benchmark contains tens of thousands of challenge problems of different forms across 57 areas from basic mathematics to United States history, law, computer science, engineering, medicine, and more.</p>
<p><img src="https://raw.githubusercontent.com/microsoft/promptbase/main/images/mmlu_accuracy_ablation.png" alt=""></p>
<p>We found that applying Medprompt without modification to the whole MMLU achieved a score of 89.1%. Not bad for a single policy working across a great diversity of problems! But could we push Medprompt to do better? Simply scaling-up MedPrompt can yield further benefits. As a first step, we increased the number of ensembled calls from five to 20. This boosted performance to 89.56%.</p>
<p>On working to push further with refinement of Medprompt, we noticed that performance was relatively poor for specific topics of the MMLU. MMLU contains a great diversity of types of questions, depending on the discipline and specific benchmark at hand. How might we push GPT-4 to perform even better on MMLU given the diversity of problems?</p>
<p>We focused on extension to a portfolio approach based on the observation that some topical areas tend to ask questions that would require multiple steps of reasoning and perhaps a scratch pad to keep track of multiple parts of a solution. Other areas seek factual answers that follow more directly from questions. Medprompt employs “chain-of-thought” (CoT) reasoning, resonating with multi-step solving. We wondered if the sophisticated Medprompt-classic approach might do less well on very simple questions and if the system might do better if a simpler method were used for the factual queries.</p>
<p>Following this argument, we found that we could boost the performance on MMLU by extending MedPrompt with a simple two-method prompt portfolio. We add to the classic Medprompt a set of 10 simple, direct few-shot prompts soliciting an answer directly without Chain of Thought. We then ask GPT-4 for help with deciding on the best strategy for each topic area and question. As a screening call, for each question we first ask GPT-4:</p>
<pre><code># Question
{{ question }}
# Task
Does answering the question above require a scratch-pad?
A. Yes
B. No
</code></pre>
<p>If GPT-4 thinks the question does require a scratch-pad, then the contribution of the Chain-of-Thought component of the ensemble is doubled. If it doesn't, we halve that contribution (and let the ensemble instead depend more on the direct few-shot prompts). Dynamically leveraging the appropriate prompting technique in the ensemble led to a further +0.5% performance improvement across the MMLU.</p>
<p>We note that Medprompt+ relies on accessing confidence scores (logprobs) from GPT-4. These are not publicly available via the current API but will be enabled for all in the near future.</p>
<h2>Running Scripts</h2>
<blockquote>
<p>Note: Some scripts hosted here are published for reference on methodology, but may not be immediately executable against public APIs. We're working hard on making the pipelines easier to run "out of the box" over the next few days, and appreciate your patience in the interim!</p>
</blockquote>
<p>First, clone the repo and install the promptbase package:</p>
<pre><code class="language-bash">cd src
pip install -e .
</code></pre>
<p>Next, decide which tests you'd like to run. You can choose from:</p>
<ul>
<li>bigbench</li>
<li>drop</li>
<li>gsm8k</li>
<li>humaneval</li>
<li>math</li>
<li>mmlu</li>
</ul>
<p>Before running the tests, you will need to download the datasets from the original sources (see below) and place them in the <code>src/promptbase/datasets</code> directory.</p>
<p>After downloading datasets and installing the promptbase package, you can run a test with:</p>
<p><code>python -m promptbase dataset_name</code></p>
<p>For example:</p>
<p><code>python -m promptbase gsm8k</code></p>
<h2>Dataset Links</h2>
<p>To run evaluations, download these datasets and add them to /src/promptbase/datasets/</p>
<ul>
<li>MMLU: <a href="https://github.com/hendrycks/test">https://github.com/hendrycks/test</a></li>
<li>HumanEval: <a href="https://huggingface.co/datasets/openai_humaneval">https://huggingface.co/datasets/openai_humaneval</a></li>
<li>DROP: <a href="https://allenai.org/data/drop">https://allenai.org/data/drop</a></li>
<li>GSM8K: <a href="https://github.com/openai/grade-school-math">https://github.com/openai/grade-school-math</a></li>
<li>MATH: <a href="https://huggingface.co/datasets/hendrycks/competition_math">https://huggingface.co/datasets/hendrycks/competition_math</a></li>
<li>Big-Bench-Hard: <a href="https://github.com/suzgunmirac/BIG-Bench-Hard">https://github.com/suzgunmirac/BIG-Bench-Hard</a> The contents of this repo need to be put into a directory called <code>BigBench</code> in the <code>datasets</code> directory</li>
</ul>
<h2>Other Resources:</h2>
<p>Medprompt Blog: <a href="https://www.microsoft.com/en-us/research/blog/the-power-of-prompting/">https://www.microsoft.com/en-us/research/blog/the-power-of-prompting/</a></p>
<p>Medprompt Research Paper: <a href="https://arxiv.org/abs/2311.16452">https://arxiv.org/abs/2311.16452</a></p>
<p>Medprompt+: <a href="https://www.microsoft.com/en-us/research/blog/steering-at-the-frontier-extending-the-power-of-prompting/">https://www.microsoft.com/en-us/research/blog/steering-at-the-frontier-extending-the-power-of-prompting/</a></p>
<p>Microsoft Introduction to Prompt Engineering: <a href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering">https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering</a></p>
<p>Microsoft Advanced Prompt Engineering Guide: <a href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions">https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions</a></p>
+
+
\ No newline at end of file
diff --git a/q%23/daily/index.xml b/q%23/daily/index.xml
index 9e9c0e68338..a736ec7dec0 100644
--- a/q%23/daily/index.xml
+++ b/q%23/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Q# Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:05Z
+ 2023-12-24T01:40:35Z
Daily Trending of Q# in GitHub
\ No newline at end of file
diff --git a/q%23/weekly/index.xml b/q%23/weekly/index.xml
new file mode 100644
index 00000000000..c826cca8172
--- /dev/null
+++ b/q%23/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Q# Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:58Z
+ Weekly Trending of Q# in GitHub
+
+
\ No newline at end of file
diff --git a/q/daily/index.xml b/q/daily/index.xml
index 0318c217b87..dbc01f2626a 100644
--- a/q/daily/index.xml
+++ b/q/daily/index.xml
@@ -1,7 +1,7 @@
GitHub q Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:03Z
+ 2023-12-24T01:40:36Z
Daily Trending of q in GitHub
\ No newline at end of file
diff --git a/q/weekly/index.xml b/q/weekly/index.xml
new file mode 100644
index 00000000000..a4c5412f917
--- /dev/null
+++ b/q/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub q Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:56Z
+ Weekly Trending of q in GitHub
+
+
\ No newline at end of file
diff --git a/qmake/daily/index.xml b/qmake/daily/index.xml
index 3ba21f9de69..88ef7e8431a 100644
--- a/qmake/daily/index.xml
+++ b/qmake/daily/index.xml
@@ -1,7 +1,7 @@
GitHub QMake Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:04Z
+ 2023-12-24T01:40:34Z
Daily Trending of QMake in GitHub
\ No newline at end of file
diff --git a/qmake/weekly/index.xml b/qmake/weekly/index.xml
new file mode 100644
index 00000000000..bdbcf2d86af
--- /dev/null
+++ b/qmake/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub QMake Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:57Z
+ Weekly Trending of QMake in GitHub
+
+
\ No newline at end of file
diff --git a/qml/daily/index.xml b/qml/daily/index.xml
index b8d4a7843f2..e14e9ebdeea 100644
--- a/qml/daily/index.xml
+++ b/qml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub QML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:08Z
+ 2023-12-24T01:40:38Z
Daily Trending of QML in GitHub
\ No newline at end of file
diff --git a/qml/weekly/index.xml b/qml/weekly/index.xml
new file mode 100644
index 00000000000..7e33a1387cf
--- /dev/null
+++ b/qml/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub QML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:57:59Z
+ Weekly Trending of QML in GitHub
+
+
+ btcz/bitcoinz-dex-desktop
+ 2023-12-24T01:57:59Z
+ tag:github.com,2023-12-24:/btcz/bitcoinz-dex-desktop
+
+ <p>BitcoinZ DEX Desktop</p><hr>
+
+
\ No newline at end of file
diff --git a/qt-script/daily/index.xml b/qt-script/daily/index.xml
index c4b5a5d8f89..7fc343863a5 100644
--- a/qt-script/daily/index.xml
+++ b/qt-script/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Qt Script Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:07Z
+ 2023-12-24T01:40:39Z
Daily Trending of Qt Script in GitHub
\ No newline at end of file
diff --git a/qt-script/weekly/index.xml b/qt-script/weekly/index.xml
new file mode 100644
index 00000000000..50ca5f966e0
--- /dev/null
+++ b/qt-script/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Qt Script Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:00Z
+ Weekly Trending of Qt Script in GitHub
+
+
\ No newline at end of file
diff --git a/quake/daily/index.xml b/quake/daily/index.xml
index c68382cb9fd..879c6ede8b8 100644
--- a/quake/daily/index.xml
+++ b/quake/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Quake Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:06Z
+ 2023-12-24T01:40:38Z
Daily Trending of Quake in GitHub
\ No newline at end of file
diff --git a/quake/weekly/index.xml b/quake/weekly/index.xml
new file mode 100644
index 00000000000..9b34562fdce
--- /dev/null
+++ b/quake/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Quake Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:01Z
+ Weekly Trending of Quake in GitHub
+
+
\ No newline at end of file
diff --git a/r/daily/index.xml b/r/daily/index.xml
index 641f23c9fe1..c68f980ef57 100644
--- a/r/daily/index.xml
+++ b/r/daily/index.xml
@@ -1,14 +1,21 @@
GitHub R Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:12Z
+ 2023-12-24T01:40:42Z
Daily Trending of R in GitHub
- aml4td/website
- 2023-12-23T01:37:12Z
- tag:github.com,2023-12-23:/aml4td/website
-
- <p>Website sources for Applied Machine Learning for Tabular Data</p><hr><h1>Website sources for Applied Machine Learning for Tabular Data</h1>
<p>Welcome! This is a work in progress. We want to create a practical guide to developing quality predictive models from tabular data. We'll publish materials here as we create them and welcome community contributions in the form of discussions, suggestions, and edits.</p>
<p>We also want these materials to be reusable and open. The sources are in the source <a href="https://github.com/aml4td/website">GitHub repository</a> with a Creative Commons license attached (see below).</p>
<p>Our intention is to write these materials and, when we feel we're done, pick a publishing partner to produce a print version.</p>
<p>The book takes a holistic view of the predictive modeling process and focuses on a few areas that are usually left out of similar works. For example, the effectiveness of the model can be driven by how the predictors are represented. Because of this, we tightly couple feature engineering methods with machine learning models. Also, quite a lot of work happens after we have determined our best model and created the final fit. These post-modeling activities are an important part of the model development process and will be described in detail.</p>
<p>To cite this work, we suggest:</p>
<pre><code class="language-bib">@online{aml4td,
Author = {Kuhn, M and Johnson, K},
title = {{Applied Machine Learning for Tabular Data}},
year = {2023},
url = { https://aml4td.org},
urldate = {2023-11-20}
}
</code></pre>
<h2>License</h2>
<p><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://raw.githubusercontent.com/aml4td/website/main/premade/cc-by-nc-sa.png"></a></p>
<p>This work is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/%22">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>. Our goal is to have an open book where people can reuse and reference the materials but can't just put their names on them and resell them (without our permission).</p>
<h2>Intended Audience</h2>
<p>Our intended audience includes data analysts of many types: statisticians, data scientists, professors and instructors of machine learning courses, laboratory scientists, and anyone else who desires to understand how to create a model for prediction. We don't expect readers to be experts in these methods or the math behind them. Instead, our approach throughout this work is applied. That is, we want readers to use this material to build intuition about the predictive modeling process. What are good and bad ideas for the modeling process? What pitfalls should we look out for? How can we be confident that the model will be predictive for new samples? What are advantages and disadvantages of different types of models? These are just some of the questions that this work will address.</p>
<p>Some background in modeling and statistics will be extremely useful. Having seen or used basic regression models is good, and an understanding of basic statistical concepts such as variance, correlation, populations, samples, etc., is needed. There will also be some mathematical notation, so you'll need to be able to grasp these abstractions. But we will keep this to those parts where it is absolutely necessary. There are a few more statistically sophisticated sections for some of the more advanced topics.</p>
<p>If you would like a more theoretical treatment of machine learning models, then we recommend Hastie et al. (2017). Other books for gaining a more in-depth understanding of machine learning are Bishop and Nasrabadi (2006), Arnold et al. (2019) and, for more of a deep learning focus, Goodfellow et al. (2016).</p>
<h2>Is there code?</h2>
<p>We definitely want to decouple the content of this work from specific software. <a href="http://appliedpredictivemodeling.com/">One of our other books</a> on modeling had computing sections. Many people found these sections to be a useful resource at the time of the book's publication. However, code can quickly become outdated in today's computational environment. In addition, this information takes up a lot of page space that would be better used for other topics.</p>
<p>We will create <em>computing supplements</em> to go along with the materials. Since we use R's tidymodels framework for calculations, the supplement currently in-progress is:</p>
<ul>
<li><a href="https://tidymodels.aml4td.org"><code>tidymodels.aml4td.org</code></a></li>
</ul>
<p>If you are interested in working on a python/scikit-learn supplement, please <a href="https://github.com//aml4td/website/issues">file an issue</a></p>
<h2>Are there exercises?</h2>
<p>Many readers found the Exercise sections of <em>Applied Predictive Modeling</em> to be helpful for solidifying the concepts presented in each chapter. The current set can be found at <a href="https://exercises.aml4td.org"><code>exercises.aml4td.org</code></a></p>
<h2>How can I ask questions?</h2>
<p>If you have questions about the content, it is probably best to ask on a public forum, like <a href="https://stats.stackexchange.com/">cross-validated</a>. You'll most likely get a faster answer there if you take the time to ask the questions in the best way possible.</p>
<p>If you want a direct answer from us, you should follow what I call <a href="https://yihui.org/en/2017/08/so-gh-email/"><em>Yihui's Rule</em></a>: add an issue to GitHub (labeled as "Discussion") first. It may take some time for us to get back to you.</p>
<p>If you think there is a bug, please <a href="https://github.com//aml4td/website/issues">file an issue</a>.</p>
<h2>Can I contribute?</h2>
<p>There is a <a href="https://github.com/aml4td/website/raw/main/chapters/contributing.qmd">contributing page</a> with details on how to get up and running to compile the materials (there are a lot of software dependencies) and suggestions on how to help.</p>
<p>If you just want to fix a typo, you can make a pull request to alter the appropriate <code>.qmd</code> file.</p>
<p>Please feel free to improve the quality of this content by submitting <strong>pull requests</strong>. A merged PR will make you appear in the contributor list. It will, however, be considered a donation of your work to this project. You are still bound by the conditions of the license, meaning that you are <strong>not considered an author, copyright holder, or owner</strong> of the content once it has been merged in.</p>
+ ujjwalkarn/DataScienceR
+ 2023-12-24T01:40:42Z
+ tag:github.com,2023-12-24:/ujjwalkarn/DataScienceR
+
+ <p>a curated list of R tutorials for Data Science, NLP and Machine Learning</p><hr><h1>R Data Science Tutorials</h1>
<ul>
<li> <p>This repo contains a curated list of R tutorials and packages for Data Science, NLP and Machine Learning. This also serves as a reference guide for several common data analysis tasks.</p> </li>
<li> <p><a href="https://github.com/ujjwalkarn/DataSciencePython">Curated list of Python tutorials for Data Science, NLP and Machine Learning</a>.</p> </li>
<li> <p><a href="https://github.com/ujjwalkarn/Machine-Learning-Tutorials/raw/master/README.md">Comprehensive topic-wise list of Machine Learning and Deep Learning tutorials, codes, articles and other resources</a>.</p> </li>
</ul>
<h2>Learning R</h2>
<ul>
<li>Online Courses
<ul>
<li><a href="http://tryr.codeschool.com/">tryR on Codeschool</a></li>
<li><a href="https://www.edx.org/course/introduction-r-data-science-microsoft-dat204x?gclid=CLiyoPb448wCFRJxvAod-RoLsA">Introduction to R for Data Science - Microsoft | edX</a></li>
<li><a href="https://www.datacamp.com/courses/free-introduction-to-r">Introduction to R on DataCamp</a></li>
<li><a href="https://www.udacity.com/course/data-analysis-with-r--ud651">Data Analysis with R</a></li>
</ul> </li>
<li><a href="http://stats.stackexchange.com/questions/138/free-resources-for-learning-r"><strong>Free resources for learning R</strong></a></li>
<li><a href="http://r4ds.had.co.nz/">R for Data Science - Hadley Wickham</a></li>
<li><a href="http://adv-r.had.co.nz/">Advanced R - Hadley Wickham</a></li>
<li><a href="http://swirlstats.com/">swirl: Learn R, in R</a></li>
<li><a href="http://varianceexplained.org/RData/">Data Analysis and Visualization Using R</a></li>
<li><a href="http://www.listendata.com/p/r-programming-tutorials.html"><strong>MANY R PROGRAMMING TUTORIALS</strong></a></li>
<li><a href="https://cran.r-project.org/web/packages/HSAUR/vignettes/Ch_introduction_to_R.pdf"><strong>A Handbook of Statistical Analyses Using R</strong></a>, Find Other Chapters</li>
<li><a href="http://www.cookbook-r.com/"><strong>Cookbook for R</strong></a></li>
<li><a href="http://www.datasciencecentral.com/profiles/blogs/learning-r-in-seven-simple-steps">Learning R in 7 simple steps</a></li>
</ul>
<h2>More Resources</h2>
<ul>
<li><a href="https://github.com/qinwf/awesome-R">Awesome-R Repository on GitHub</a></li>
<li><a href="https://cran.r-project.org/doc/contrib/Short-refcard.pdf">R Reference Card: Cheatsheet</a></li>
<li><a href="http://www.r-bloggers.com/">R bloggers: blog aggregator</a></li>
<li><a href="https://github.com/binga/DataScienceArsenal/raw/master/r-resources.md">R Resources on GitHub</a></li>
<li><a href="https://github.com/ujjwalkarn/awesome-R">Awesome R resources</a></li>
<li><a href="https://github.com/ujjwalkarn/Data-Mining-With-R">Data Mining with R</a></li>
<li><a href="http://robjhyndman.com/hyndsight/r/">Rob J Hyndman's R Blog</a></li>
<li><a href="http://robjhyndman.com/hyndsight/simpler/">Simple R Tricks and Tools</a> <a href="https://www.youtube.com/watch?v=Toc__W7L2Qo">(Video)</a></li>
<li><a href="https://github.com/rstudio/">RStudio GitHub Repo</a></li>
<li><a href="http://www.dataschool.io/tidying-messy-data-in-r/">Tidying Messy Data in R</a> <a href="https://vimeo.com/33727555">Video</a></li>
<li><a href="http://www.hardballtimes.com/a-short-ish-introduction-to-using-r-for-baseball-research">Baseball Research with R</a></li>
<li><a href="http://www.datasciencecentral.com/profiles/blogs/600-websites-about-r">600 websites about R</a></li>
<li><a href="http://www.datasciencecentral.com/profiles/blogs/implemetation-of-17-classification-algorithms-in-r">Implementation of 17 classification algorithms in R</a></li>
<li><a href="http://analyzecore.com/2015/04/01/cohort-analysis-and-lifecycle-grids-mixed-segmentation-with-r/">Cohort Analysis and LifeCycle Grids mixed segmentation with R</a></li>
<li><a href="http://www.tableau.com/learn/whitepapers/using-r-and-tableau">Using R and Tableau</a></li>
<li><a href="http://www.docfoc.com/cran-pdf">COMPREHENSIVE VIEW ON CRAN PACKAGES</a></li>
<li><a href="http://math.arizona.edu/~jwatkins/R-01.pdf">Using R for Statistical Tables and Plotting Distributions</a></li>
<li><a href="https://cran.r-project.org/web/packages/Formula/vignettes/Formula.pdf">Extended Model Formulas in R: Multiple Parts and Multiple Responses</a></li>
<li><a href="https://www.dataquest.io/blog/python-vs-r/?utm_content=buffer55639&utm_medium=social&utm_source=linkedin.com&utm_campaign=buffer">R vs Python: head to head data analysis</a></li>
<li><a href="http://r4ds.had.co.nz/"><strong>R for Data Science: Hadley Wickham's Book</strong></a></li>
<li><a href="https://www.ling.upenn.edu/~joseff/rstudy/index.html"><strong>R Study Group at UPenn</strong></a></li>
<li><a href="http://dni-institute.in/blogs/extracting-data-from-facebook-using-r/">Program-Defined Functions in R</a></li>
</ul>
<h2>Important Questions</h2>
<ul>
<li><a href="http://stackoverflow.com/questions/9860090/in-r-why-is-better-than-subset"><strong>In R, why is bracket better than <code>subset</code>?</strong></a></li>
<li><a href="http://www.statmethods.net/management/subset.html"><strong>Subsetting Data in R</strong></a></li>
<li><a href="http://www.noamross.net/blog/2014/4/16/vectorization-in-r--why.html"><strong>Vectorization in R: Why?</strong></a></li>
<li><a href="http://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r"><strong>Quickly reading very large tables as dataframes in R</strong></a></li>
<li><a href="http://www.sr.bham.ac.uk/~ajrs/R/r-show_data.html"><strong>Using R to show data</strong></a></li>
<li><a href="http://stackoverflow.com/questions/19226816/how-can-i-view-the-source-code-for-a-function?lq=1">How can I view the source code for a function?</a></li>
<li><a href="https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example">How to make a great R reproducible example?</a></li>
<li><a href="https://stackoverflow.com/questions/3505701/r-grouping-functions-sapply-vs-lapply-vs-apply-vs-tapply-vs-by-vs-aggrega"><strong>R Grouping functions: sapply vs. lapply vs. apply. vs. tapply vs. by vs. aggregate</strong></a></li>
<li><a href="https://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session"><strong>Tricks to manage the available memory in an R session</strong></a></li>
<li><a href="https://stackoverflow.com/questions/1741820/assignment-operators-in-r-and">Difference between Assignment operators '=' and '<-' in R</a></li>
<li><a href="https://stackoverflow.com/questions/5595512/what-is-the-difference-between-require-and-library">What is the difference between require() and library()?</a></li>
<li><a href="https://stackoverflow.com/questions/19226816/how-can-i-view-the-source-code-for-a-function">How can I view the source code for a function?</a></li>
<li><a href="https://stackoverflow.com/questions/27689222/changing-fonts-for-graphs-in-r/">How can I change fonts for graphs in R?</a></li>
</ul>
<h2>Common DataFrame Operations</h2>
<ul>
<li><a href="https://stackoverflow.com/questions/10689055/create-an-empty-data-frame">Create an empty data.frame</a></li>
<li><a href="https://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns">Sort a dataframe by column(s)</a></li>
<li><a href="https://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner-outer-left-right">Merge/Join data frames (inner, outer, left, right)</a></li>
<li><a href="https://stackoverflow.com/questions/4605206/drop-data-frame-columns-by-name">Drop data frame columns by name</a></li>
<li><a href="https://stackoverflow.com/questions/4862178/remove-rows-with-nas-in-data-frame">Remove rows with NAs in data.frame</a></li>
<li><a href="https://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r">Quickly reading very large tables as dataframes in R</a></li>
<li><a href="https://stackoverflow.com/questions/1195826/drop-factor-levels-in-a-subsetted-data-frame">Drop factor levels in a subsetted data frame</a></li>
<li><a href="https://stackoverflow.com/questions/4227223/r-list-to-data-frame">Convert R list to data frame</a></li>
<li><a href="https://stackoverflow.com/questions/2851015/convert-data-frame-columns-from-factors-to-characters">Convert data.frame columns from factors to characters</a></li>
<li><a href="https://stackoverflow.com/questions/10085806/extracting-specific-columns-from-a-data-frame">Extracting specific columns from a data frame</a></li>
</ul>
<h2>Caret Package in R</h2>
<ul>
<li><a href="http://stats.stackexchange.com/questions/27361/stacking-ensembling-models-with-caret">Ensembling Models with caret</a></li>
<li><a href="http://topepo.github.io/caret/training.html">Model Training and Tuning</a></li>
<li><a href="http://topepo.github.io/caret/modelList.html">Caret Model List</a></li>
<li><a href="http://stackoverflow.com/questions/14968874/caret-relationship-between-data-splitting-and-traincontrol">relationship-between-data-splitting-and-traincontrol</a></li>
<li><a href="http://stackoverflow.com/questions/10498477/carettrain-specify-model-generation-parameters?lq=1">Specify model generation parameters</a></li>
<li><a href="https://www.r-project.org/nosvn/conferences/useR-2013/Tutorials/kuhn/user_caret_2up.pdf">Tutorial</a>, <a href="https://raw.githubusercontent.com/ujjwalkarn/DataScienceR/master/www.jstatsoft.org/article/view/v028i05/v28i05.pdf">Paper</a></li>
<li><a href="http://amunategui.github.io/blending-models/">Ensembling models with R</a>, <a href="http://stats.stackexchange.com/questions/26790/ensembling-regression-models">Ensembling Regression Models in R</a></li>
</ul>
<h2>R Cheatsheets</h2>
<ul>
<li><a href="https://cran.r-project.org/doc/contrib/Short-refcard.pdf">R Reference Card</a></li>
<li><a href="https://cran.r-project.org/doc/contrib/Baggott-refcard-v2.pdf">R Reference Card 2.0</a></li>
<li><a href="https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf">Data Wrangling in R</a></li>
<li><a href="https://www.rstudio.com/wp-content/uploads/2015/08/ggplot2-cheatsheet.pdf">ggplot2 Cheatsheet</a></li>
<li><a href="http://shiny.rstudio.com/images/shiny-cheatsheet.pdf">Shiny Cheatsheet</a></li>
<li><a href="https://www.rstudio.com/wp-content/uploads/2015/06/devtools-cheatsheet.pdf">devtools Cheatsheet</a></li>
<li><a href="https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf">markdown Cheatsheet</a>, <a href="https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-reference.pdf">reference</a></li>
<li><a href="http://www.analyticsvidhya.com/blog/2015/10/cheatsheet-11-steps-data-exploration-with-codes/">Data Exploration Cheatsheet</a></li>
</ul>
<h2>Reference Slides</h2>
<ul>
<li><a href="https://cran.r-project.org/doc/contrib/Baggott-refcard-v2.pdf">R Reference Card</a></li>
<li><a href="https://78462f86-a-e2d7344e-s-sites.googlegroups.com/a/rdatamining.com/www/docs/RDataMining-slides-association-rules.pdf?attachauth=ANoY7crD9hRI7333KWhK0TVPsS1VfgWoW4BuIsmL8B0NANfntEOq6QbcwJk-aCRUy2N6CmUeJsyrlOOd5bo1CqRUYXkEbSl1JbTniVbb-GSR3cyTt9Qq6xB3ZasMEdACaS9j1fZDiLVn_zLFbrF--aJM7gAu54JwRBhvKuQPOPyeMTosWcTmmrJdRNWH4ZqD5kYEJlmHDcXB8Bp-DWbUxZG2T8sAGbcHGUqkPTTJ_u03wvKyw5MGMrGU7q4xIyyUmBas_PqEDi6q&attredirects=0">Association Rule Mining</a></li>
<li><a href="https://78462f86-a-e2d7344e-s-sites.googlegroups.com/a/rdatamining.com/www/docs/RDataMining-slides-time-series-analysis.pdf?attachauth=ANoY7cphtFEj6IMGuupE5ygQn5flMH5-QPE4yNgJ9fYv3WqfY0qU8LWGgiECZKs6P63Rhx5Nml8lQXQnX7QH7OZm1hoi_Kl0m9sLOAC0tc4sQipWC8DprQVoYSDyw0EdeJfZWAQor0AyjMWeFHPY6nqxIGAaj4arrwZcnR1dYC7nQK4dTVQM80ARrN5Yzq9rNbGic30X-xKwNQxOXL4fO54ThpzmNB4wLKv5geo_hDqPkwtKBmNR7u_kGPOymJHGvxP3nr02aJsB&attredirects=0">Time Series Analysis</a></li>
<li><a href="https://78462f86-a-e2d7344e-s-sites.googlegroups.com/a/rdatamining.com/www/docs/RDataMining-slides-data-exploration-visualization.pdf?attachauth=ANoY7cpqnCTmCv1omsIoKmefAn8q6M_j4Hizv_1enJlu3nRPIxIhzjBlf-9B_sIxMxpUx-XN5cAw74GUr18Dn0EcaiIm9MVeCtqT-2dcPNo0dfhRJvnb5J8EHKBX_w7Y6mYgb7UAoIUbjdmVGR9VCIfJf6PGQqAlupywcb1yGbT4pv61bQzOzrU4-eICfgHmORdi8YgBqscyT2ThaKHPSeGXD0dd3g08pGN3bY70MKM02ZaqarewbII91KTNH1-zmELEcvatl_sMxmGgNnIDm6MaxEWQ1pIrTQ%3D%3D&attredirects=0">Data Exploration and Visualisation</a></li>
<li><a href="https://78462f86-a-e2d7344e-s-sites.googlegroups.com/a/rdatamining.com/www/docs/RDataMining-slides-regression-classification.pdf?attachauth=ANoY7cq0yqcj_65pafTfUqHazTYvp4E4r-5OB1kLv3swVKJhVydaJ0YU5yEPiOciQC0k_P1QzO6z1vD0r9E05KU8y7Mn6NTesQOOq_mmwlMqAe7D2mnqkHZBqFT6tk2hJ3g3fK40mvfyU5ggoGMxMYn9nVhihKwcIYJy9A8zlbFo4r9a35kpTDr6jJjAw5eQwSEMe-bvT5iyZuyMS7QS-tvlgHjJ40ZGhPro7GcWXfb7qqaPeTe9NyeU7MxAy2Z_lAzxn0vSnqe6&attredirects=0">Regression and Classification</a></li>
<li><a href="https://78462f86-a-e2d7344e-s-sites.googlegroups.com/a/rdatamining.com/www/docs/RDataMining-slides-text-mining.pdf?attachauth=ANoY7cquEwmhHFNHxiKNhv6C2wquNdaib8A_BeTRFaGFXZ2deivENdTK-GS7mSZjermC7b_-L6KtCWhfF1ZOzOF9XaLkIaw6InCEnjdO1fWUhJFujaGwwbcbExJKEVuMmwlBX_SDUFZYgjuTbIb2llgKRMQc3Dd241HNZHTvGVuPG26vHKN_jU_WoEj7uIilRJWFTDvNrZWGWrvImWr0aCNou56qAB-zmBG_cvRS4QOQroiEetLpR7k%3D&attredirects=0">Text Mining on Twitter Data</a></li>
</ul>
<h2>Using R for Multivariate Analysis</h2>
<ul>
<li><a href="http://little-book-of-r-for-multivariate-analysis.readthedocs.io/en/latest/">Little Book of R for Multivariate Analysis!</a></li>
<li><a href="https://matloff.wordpress.com/2014/03/30/the-freqparcoord-package-for-multivariate-visualization/">THE FREQPARCOORD PACKAGE FOR MULTIVARIATE VISUALIZATION</a></li>
<li><a href="http://www.r-bloggers.com/use-of-freqparcoord-for-regression-diagnostics/">Use of freqparcoord for Regression Diagnostics</a></li>
</ul>
<h2>Time Series Analysis</h2>
<ul>
<li><a href="https://www.otexts.org/fpp"><strong>Time Series Forecasting (Online Book)</strong></a></li>
<li><a href="http://a-little-book-of-r-for-time-series.readthedocs.org/en/latest/src/timeseries.html"><strong>A Little Book of Time Series Analysis in R</strong></a></li>
<li><a href="http://www.statmethods.net/advstats/timeseries.html">Quick R: Time Series and Forecasting</a></li>
<li><a href="https://www.linkedin.com/pulse/component-time-series-data-jeffrey-strickland-ph-d-cmsp">Components of Time Series Data</a></li>
<li><a href="https://www.linkedin.com/pulse/unobserved-component-models-r-jeffrey-strickland-ph-d-cmsp">Unobserved Component Models using R</a></li>
<li><a href="http://webarchive.nationalarchives.gov.uk/20080726235635/http://statistics.gov.uk/iosmethodology/downloads/Annex_B_The_Holt-Winters_forecasting_method.pdf">The Holt-Winters Forecasting Method</a></li>
<li><a href="https://cran.r-project.org/web/views/TimeSeries.html"><strong>CRAN Task View: Time Series Analysis</strong></a></li>
</ul>
<h2>Bayesian Inference</h2>
<ul>
<li><a href="https://github.com/ujjwalkarn/awesome-R#bayesian">Packages for Bayesian Inference</a></li>
<li><a href="https://www.youtube.com/watch?v=fiWIK7ONX3U">Bayesian Inference in R: Video</a></li>
<li><a href="http://www.r-bloggers.com/r-and-bayesian-statistics/">R and Bayesian Statistics</a></li>
</ul>
<h2>Machine Learning using R</h2>
<ul>
<li><a href="https://github.com/jhashanti/Machine-Learning-with-R">Machine Learning with R</a></li>
<li><a href="http://little-book-of-r-for-multivariate-analysis.readthedocs.org/en/latest/src/multivariateanalysis.html">Using R for Multivariate Analysis (Online Book)</a></li>
<li><a href="https://cran.r-project.org/web/views/MachineLearning.html">CRAN Task View: Machine Learning & Statistical Learning</a></li>
<li><a href="https://www.otexts.org/sfml">Machine Learning Using R (Online Book)</a></li>
<li><a href="http://rpubs.com/justmarkham/linear-regression-salary">Linear Regression and Regularization Code</a></li>
<li><a href="http://www.analyticsvidhya.com/blog/2015/09/full-cheatsheet-machine-learning-algorithms/">Cheatsheet</a></li>
<li><a href="http://www.analyticsvidhya.com/blog/2016/02/multinomial-ordinal-logistic-regression/"><strong>Multinomial and Ordinal Logistic Regression in R</strong></a></li>
<li><a href="https://www.r-bloggers.com/evaluating-logistic-regression-models/"><strong>Evaluating Logistic Regression Models in R</strong></a></li>
</ul>
<h2>Neural Networks in R</h2>
<ul>
<li><a href="https://beckmw.wordpress.com/2013/11/14/visualizing-neural-networks-in-r-update/">Visualizing Neural Nets in R</a></li>
<li><a href="http://stackoverflow.com/questions/21788817/r-nnet-with-a-simple-example-of-2-classes-with-2-variables">nnet package</a></li>
<li><a href="http://www.r-bloggers.com/fitting-a-neural-network-in-r-neuralnet-package/">Fitting a neural network in R; neuralnet package</a></li>
<li><a href="http://gekkoquant.com/2012/05/26/neural-networks-with-r-simple-example/">Neural Networks with R – A Simple Example</a></li>
<li><a href="https://beckmw.wordpress.com/tag/neural-network/">NeuralNetTools 1.0.0 now on CRAN</a></li>
<li><a href="http://www.louisaslett.com/Courses/Data_Mining/ST4003-Lab5-Introduction_to_Neural_Networks.pdf">Introduction to Neural Networks in R</a></li>
<li><a href="https://bicorner.com/2015/05/13/neural-networks-using-r/">Step by Step Neural Networks using R</a></li>
<li><a href="http://www.parallelr.com/r-deep-neural-network-from-scratch/"><strong>R for Deep Learning</strong></a></li>
<li><a href="http://www.di.fc.ul.pt/~jpn/r/neuralnets/neuralnets.html">Neural Networks using package neuralnet</a>, <a href="https://journal.r-project.org/archive/2010-1/RJournal_2010-1_Guenther+Fritsch.pdf">Paper</a></li>
</ul>
<h2>Sentiment Analysis</h2>
<ul>
<li><a href="https://drive.google.com/open?id=0By_wg-rXnp_6U1JLNVA3cnAxZ3M">Different Approaches</a></li>
<li><a href="http://datascienceplus.com/sentiment-analysis-with-machine-learning-in-r/"><strong>Sentiment analysis with machine learning in R</strong></a></li>
<li><a href="http://andybromberg.com/sentiment-analysis/"><strong>First shot: Sentiment Analysis in R</strong></a></li>
<li><a href="https://github.com/trinker/qdap">qdap package</a>, <a href="http://stackoverflow.com/questions/22774913/estimating-document-polarity-using-rs-qdap-package-without-sentsplit">code</a></li>
<li><a href="https://github.com/trinker/sentimentr">sentimentr package</a></li>
<li><a href="https://github.com/mannau/tm.plugin.sentiment">tm.plugin.sentiment package</a></li>
<li><a href="http://stackoverflow.com/questions/15194436/is-there-any-other-package-other-than-sentiment-to-do-sentiment-analysis-in-r">Packages other than sentiment</a></li>
<li><a href="https://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html">Sentiment Analysis and Opinion Mining</a></li>
<li><a href="http://www.inside-r.org/packages/cran/tm/docs/tm_term_score">tm_term_score</a></li>
<li><a href="http://comp.social.gatech.edu/papers/icwsm14.vader.hutto.pdf"><strong>vaderSentiment Paper</strong></a>, <a href="https://github.com/cjhutto/vaderSentiment"><strong>vaderSentiment code</strong></a></li>
</ul>
<h2>Imputation in R</h2>
<ul>
<li><a href="http://stackoverflow.com/questions/13114812/imputation-in-r"><strong>Imputation in R</strong></a></li>
<li><a href="http://stats.stackexchange.com/questions/49270/imputation-with-random-forests">Imputation with Random Forests</a></li>
<li><a href="http://www.unt.edu/rss/class/Jon/Benchmarks/MissingValueImputation_JDS_Nov2010.pdf">How to Identify and Impute Multiple Missing Values using R</a></li>
<li>MICE
<ul>
<li><a href="http://stackoverflow.com/questions/23974026/error-in-implementation-of-random-forest-in-mice-r-package">error in implementation of random forest in mice r package</a></li>
<li><a href="http://www.inside-r.org/packages/cran/mice/docs/mice.impute.rf">mice.impute.rf {mice}</a></li>
</ul> </li>
</ul>
<h2>NLP and Text Mining in R</h2>
<ul>
<li><a href="http://stackoverflow.com/questions/8161167/what-algorithm-i-need-to-find-n-grams"><strong>What algorithm I need to find n-grams?</strong></a></li>
<li><a href="http://www.r-bloggers.com/natural-language-processing-tutorial/">NLP R Tutorial</a></li>
<li><a href="https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf">Introduction to the tm Package Text Mining in R</a></li>
<li><a href="http://stackoverflow.com/questions/18446408/adding-stopwords-in-r-tm">Adding stopwords in R tm</a></li>
<li><a href="http://www.r-bloggers.com/text-mining/">Text Mining</a></li>
<li><a href="http://www.omegahat.net/Rstem/stemming.pdf">Word Stemming in R</a></li>
<li><a href="http://web.letras.up.pt/bhsmaia/EDV/apresentacoes/Bradzil_Classif_withTM.pdf"><strong>Classification of Documents using Text Mining Package “tm”</strong></a></li>
<li><a href="http://slidegur.com/doc/1830649/text-mining">Text mining tools techniques and applications</a></li>
<li><a href="http://www3.cs.stonybrook.edu/~cse634/G8present.pdf">Text Mining: Overview,Applications and Issues </a></li>
<li><a href="http://www3.cs.stonybrook.edu/~cse634/presentations/TextMining.pdf"><strong>Text Mining pdf</strong></a></li>
<li><a href="http://www.stat.columbia.edu/~madigan/W2025/notes/IntroTextMining.pdf">Text Mining Another pdf</a></li>
<li><a href="http://studylib.net/doc/5800473/topic7-textmining">Good PPT</a></li>
<li><a href="http://www.nyu.edu/projects/politicsdatalab/localdata/workshops/twitter.pdf"><strong>Scraping Twitter and Web Data Using R</strong></a></li>
</ul>
<h2>Visualisation in R</h2>
<ul>
<li><a href="http://www.ling.upenn.edu/~joseff/avml2012/">ggplot2 tutorial</a></li>
<li><a href="https://github.com/rstudio/shiny-examples">SHINY EXAMPLES</a></li>
<li><a href="http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html"><strong>Top 50 ggplot2 Visualizations</strong></a></li>
<li><a href="http://www.analyticsvidhya.com/blog/2015/07/guide-data-visualization-r/">Comprehensive Guide to Data Visualization in R</a></li>
<li><a href="http://www.r-bloggers.com/interactive-visualizations-with-r-a-minireview/">Interactive visualizations with R – a minireview</a></li>
<li><a href="http://www.computerworld.com/article/2497304/business-intelligence-beginner-s-guide-to-r-painless-data-visualization.html">Beginner's guide to R: Painless data visualization</a></li>
<li><a href="https://www.datacamp.com/courses/ggvis-data-visualization-r-tutorial">Data Visualization in R with ggvis</a></li>
<li><a href="http://www.r-statistics.com/tag/visualization/">Multiple Visualization Articles in R</a></li>
</ul>
<h2>Statistics with R</h2>
<ul>
<li><a href="http://a-little-book-of-r-for-biomedical-statistics.readthedocs.org/en/latest/src/biomedicalstats.html">Using R for Biomedical Statistics (Online Book)</a></li>
<li><a href="http://www.r-tutor.com/elementary-statistics">Elementary Statistics with R</a></li>
<li><a href="https://www.datacamp.com/introduction-to-statistics">A Hands-on Introduction to Statistics with R</a></li>
<li><a href="http://www.statmethods.net/stATS/index.html">Quick R: Basic Statistics</a></li>
<li><a href="http://www.statmethods.net/stats/descriptives.html">Quick R: Descriptive Statistics</a></li>
<li><a href="https://www.edx.org/course/explore-statistics-r-kix-kiexplorx-0">Explore Statistics with R | edX</a></li>
</ul>
<h2>Useful R Packages</h2>
<ul>
<li><a href="https://www.jstatsoft.org/article/view/v059i10"><strong>TIDY DATA HADLEY PAPER</strong></a>
<ul>
<li>Package ‘tidyr’: tidyr is an evolution of reshape2. It's design specifically for data tidying (not general reshaping or aggregating) and works well with dplyr data pipelines.</li>
</ul> </li>
<li><a href="https://github.com/dgrtwo/broom">BROOM</a></li>
<li><a href="http://www.dataschool.io/tidying-messy-data-in-r/"><strong>plyr, stringr, reshape2 tutorial</strong></a> <a href="https://vimeo.com/33727555">Video</a>, <a href="https://github.com/justmarkham/tidy-data">CODE</a></li>
<li>dplyr
<ul>
<li><a href="https://github.com/ujjwalkarn/DataScienceR/tree/master/Intro%20to%20dplyr">Code Files in this Repo</a></li>
<li><a href="http://www.dataschool.io/dplyr-tutorial-for-faster-data-manipulation-in-r/">dplyr tutorial 1</a>, <a href="http://www.dataschool.io/dplyr-tutorial-part-2/">dplyr tutorial 2</a></li>
<li><a href="http://www.gettinggeneticsdone.com/2014/08/do-your-data-janitor-work-like-boss.html">Do your "data janitor work" like a boss with dplyr</a></li>
</ul> </li>
<li>ggplot2
<ul>
<li><a href="http://www.ling.upenn.edu/~joseff/avml2012/">ggplot2 tutorial</a></li>
<li><a href="https://github.com/jennybc/ggplot2-tutorial">Good Tutorial!</a></li>
<li><a href="https://speakerdeck.com/karthik/introduction-to-ggplot2">Introduction to ggplot2</a>, <a href="https://github.com/karthik/ggplot-lecture">GitHub</a></li>
<li><a href="http://www.noamross.net/blog/2012/10/5/ggplot-introduction.html">A quick introduction to ggplot()</a></li>
<li><a href="http://www.cookbook-r.com/Graphs/index.html">R Graphics cookbook</a></li>
<li><a href="https://learnr.wordpress.com/2009/06/28/ggplot2-version-of-figures-in-lattice-multivariate-data-visualization-with-r-part-1/">ggplot2 Version of Figures in “Lattice: Multivariate Data Visualization with R” </a></li>
</ul> </li>
<li><a href="http://www.r-statistics.com/2013/09/a-speed-test-comparison-of-plyr-data-table-and-dplyr/">A speed test comparison of plyr, data.table, and dplyr</a></li>
<li>data.table
<ul>
<li><a href="https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.pdf">Introduction to the data.table package in R</a></li>
<li><a href="http://blog.yhat.com/posts/fast-summary-statistics-with-data-dot-table.html">Fast summary statistics in R with data.table</a></li>
</ul> </li>
<li>Other Packages
<ul>
<li>Package 'e1071'</li>
<li>Package ‘AppliedPredictiveModeling’</li>
<li>Package ‘stringr’: stringr is a set of simple wrappers that make R's string functions more consistent, simpler and easier to use.</li>
<li>Package ‘stringdist’: Implements an approximate string matching version of R's native 'match' function. Can calculate various string distances based on edits (damerau-levenshtein, hamming, levenshtein, optimal sting alignment), qgrams or heuristic metrics</li>
<li>Package ‘FSelector’: This package provides functions for selecting attributes from a given dataset</li>
<li><a href="https://cran.r-project.org/web/packages/Ryacas/vignettes/Ryacas.pdf">Ryacas – an R interface to the yacas computer algebra system</a></li>
<li><a href="https://cran.r-project.org/web/packages/scatterplot3d/vignettes/s3d.pdf">Scatterplot3d – an R package for Visualizing Multivariate Data</a></li>
<li><a href="https://cran.r-project.org/web/packages/tm.plugin.webmining/vignettes/ShortIntro.pdf">tm.plugin.webmining intro</a></li>
<li><a href="https://cran.r-project.org/web/packages/diffEq/vignettes/ODEinR.pdf">Solving Differential Equations in R - ODE examples</a></li>
<li><a href="http://socserv.socsci.mcmaster.ca/jfox/Misc/sem/SEM-paper.pdf">Structural Equation Modeling With the sem Package in R</a></li>
<li><a href="http://www.inside-r.org/packages/cran/prettyGraphs/docs/prettyScree">prettyScree - prettyGraphs</a></li>
</ul> </li>
</ul>
<h2>Market Basket Analysis in R</h2>
<ul>
<li><a href="http://www.salemmarafi.com/code/market-basket-analysis-with-r/">Market Basket Analysis with R</a></li>
<li><a href="http://dni-institute.in/blogs/market-basket-analysis-step-by-step-approach-using-r/">Step by Step explanation of Market Basket</a></li>
</ul>
+
+
+ phuse-org/send-summarizer
+ 2023-12-24T01:40:42Z
+ tag:github.com,2023-12-24:/phuse-org/send-summarizer
+
+ <p>Normalize, aggregate, and visualize treatment effects in target organ systems across multiple studies</p><hr><p>For development of new features of Cross-Study App before posting to GitLab. Database is not updated in git and Local Load Data should be placed in /Data folder</p>
\ No newline at end of file
diff --git a/r/weekly/index.xml b/r/weekly/index.xml
new file mode 100644
index 00000000000..4cdb86ee608
--- /dev/null
+++ b/r/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub R Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:03Z
+ Weekly Trending of R in GitHub
+
+
+ junyinglim/Phylotools
+ 2023-12-24T01:58:03Z
+ tag:github.com,2023-12-24:/junyinglim/Phylotools
+
+ <p>Miscellaneous collection of phylogenetic tools</p><hr><h1>Phylotools</h1>
<p>Written by: Junying Lim; <a href="mailto:junyinglim@gmail.com">junyinglim@gmail.com</a></p>
<p>Miscellaneous collection of phylogenetic tools I wrote to make life easy</p>
<p>taxo2newick.R - Converts a data frame containing hierarchical taxonomy to a newick phylogeny. Useful for making constraint trees for phylogenetic inference</p>
<p>osgf_to_en.R - Converts British ordnance survey grid references to eastings and northings. Currently only works with 4 digito-alphabet grid reference (e.g., SU96) and finds their centroids.</p>
+
+
+ Darktex/Rcode
+ 2023-12-24T01:58:03Z
+ tag:github.com,2023-12-24:/Darktex/Rcode
+
+ <p>Code I'm using to visualize data</p><hr>
+
+
+ OCHA-DAP/pa-rosea-support
+ 2023-12-24T01:58:03Z
+ tag:github.com,2023-12-24:/OCHA-DAP/pa-rosea-support
+
+ <p>This repo contains analyses as requested by the ROSEA office.</p><hr><h1>pa-rosea-support</h1>
<p>This repo contains analyses as requested by the ROSEA office.</p>
+
+
\ No newline at end of file
diff --git a/racket/daily/index.xml b/racket/daily/index.xml
index f688183dd57..eef7fb76497 100644
--- a/racket/daily/index.xml
+++ b/racket/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Racket Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:21Z
+ 2023-12-24T01:40:46Z
Daily Trending of Racket in GitHub
\ No newline at end of file
diff --git a/racket/weekly/index.xml b/racket/weekly/index.xml
new file mode 100644
index 00000000000..4e885b622c3
--- /dev/null
+++ b/racket/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Racket Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:06Z
+ Weekly Trending of Racket in GitHub
+
+
\ No newline at end of file
diff --git a/ragel/daily/index.xml b/ragel/daily/index.xml
index 31b2459eb20..14691990e46 100644
--- a/ragel/daily/index.xml
+++ b/ragel/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ragel Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:21Z
+ 2023-12-24T01:40:47Z
Daily Trending of Ragel in GitHub
\ No newline at end of file
diff --git a/ragel/weekly/index.xml b/ragel/weekly/index.xml
new file mode 100644
index 00000000000..24e3a83d87c
--- /dev/null
+++ b/ragel/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ragel Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:08Z
+ Weekly Trending of Ragel in GitHub
+
+
\ No newline at end of file
diff --git a/raku/daily/index.xml b/raku/daily/index.xml
index 9bdb46f411c..34368a2d466 100644
--- a/raku/daily/index.xml
+++ b/raku/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Raku Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:23Z
+ 2023-12-24T01:40:48Z
Daily Trending of Raku in GitHub
\ No newline at end of file
diff --git a/raku/weekly/index.xml b/raku/weekly/index.xml
new file mode 100644
index 00000000000..d745692a01c
--- /dev/null
+++ b/raku/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Raku Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:08Z
+ Weekly Trending of Raku in GitHub
+
+
\ No newline at end of file
diff --git a/raml/daily/index.xml b/raml/daily/index.xml
index bf51c385be5..17338143160 100644
--- a/raml/daily/index.xml
+++ b/raml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RAML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:22Z
+ 2023-12-24T01:40:49Z
Daily Trending of RAML in GitHub
\ No newline at end of file
diff --git a/raml/weekly/index.xml b/raml/weekly/index.xml
new file mode 100644
index 00000000000..e58599dd29b
--- /dev/null
+++ b/raml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RAML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:07Z
+ Weekly Trending of RAML in GitHub
+
+
\ No newline at end of file
diff --git a/rascal/daily/index.xml b/rascal/daily/index.xml
index 23886ae4454..4b6a8137a70 100644
--- a/rascal/daily/index.xml
+++ b/rascal/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Rascal Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:27Z
+ 2023-12-24T01:40:50Z
Daily Trending of Rascal in GitHub
\ No newline at end of file
diff --git a/rascal/weekly/index.xml b/rascal/weekly/index.xml
new file mode 100644
index 00000000000..d2761bb8022
--- /dev/null
+++ b/rascal/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Rascal Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:10Z
+ Weekly Trending of Rascal in GitHub
+
+
\ No newline at end of file
diff --git a/raw-token-data/daily/index.xml b/raw-token-data/daily/index.xml
index 7c50608a91e..5a03575094f 100644
--- a/raw-token-data/daily/index.xml
+++ b/raw-token-data/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Raw token data Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:26Z
+ 2023-12-24T01:40:53Z
Daily Trending of Raw token data in GitHub
\ No newline at end of file
diff --git a/raw-token-data/weekly/index.xml b/raw-token-data/weekly/index.xml
new file mode 100644
index 00000000000..94a24e67f75
--- /dev/null
+++ b/raw-token-data/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Raw token data Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:12Z
+ Weekly Trending of Raw token data in GitHub
+
+
\ No newline at end of file
diff --git a/rdoc/daily/index.xml b/rdoc/daily/index.xml
index 04e3c1f8f74..1e5785484fa 100644
--- a/rdoc/daily/index.xml
+++ b/rdoc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RDoc Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:24Z
+ 2023-12-24T01:40:51Z
Daily Trending of RDoc in GitHub
\ No newline at end of file
diff --git a/rdoc/weekly/index.xml b/rdoc/weekly/index.xml
new file mode 100644
index 00000000000..86a3ce30807
--- /dev/null
+++ b/rdoc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RDoc Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:11Z
+ Weekly Trending of RDoc in GitHub
+
+
\ No newline at end of file
diff --git a/readline-config/daily/index.xml b/readline-config/daily/index.xml
index 0d4df36cde6..3aa93a0460a 100644
--- a/readline-config/daily/index.xml
+++ b/readline-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Readline Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:31Z
+ 2023-12-24T01:40:56Z
Daily Trending of Readline Config in GitHub
\ No newline at end of file
diff --git a/readline-config/weekly/index.xml b/readline-config/weekly/index.xml
new file mode 100644
index 00000000000..20144a7cdd8
--- /dev/null
+++ b/readline-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Readline Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:14Z
+ Weekly Trending of Readline Config in GitHub
+
+
\ No newline at end of file
diff --git a/realbasic/daily/index.xml b/realbasic/daily/index.xml
index 92390e72456..10044a5917a 100644
--- a/realbasic/daily/index.xml
+++ b/realbasic/daily/index.xml
@@ -1,7 +1,7 @@
GitHub REALbasic Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:28Z
+ 2023-12-24T01:40:54Z
Daily Trending of REALbasic in GitHub
\ No newline at end of file
diff --git a/realbasic/weekly/index.xml b/realbasic/weekly/index.xml
new file mode 100644
index 00000000000..3c9ea242203
--- /dev/null
+++ b/realbasic/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub REALbasic Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:13Z
+ Weekly Trending of REALbasic in GitHub
+
+
\ No newline at end of file
diff --git a/reason/daily/index.xml b/reason/daily/index.xml
index b35c1a92bd5..9bfd25926c9 100644
--- a/reason/daily/index.xml
+++ b/reason/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Reason Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:30Z
+ 2023-12-24T01:40:56Z
Daily Trending of Reason in GitHub
\ No newline at end of file
diff --git a/reason/weekly/index.xml b/reason/weekly/index.xml
new file mode 100644
index 00000000000..4e1ddae8ee4
--- /dev/null
+++ b/reason/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Reason Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:14Z
+ Weekly Trending of Reason in GitHub
+
+
\ No newline at end of file
diff --git a/rebol/daily/index.xml b/rebol/daily/index.xml
index 2fe7d57710d..76179d60b19 100644
--- a/rebol/daily/index.xml
+++ b/rebol/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Rebol Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:33Z
+ 2023-12-24T01:40:58Z
Daily Trending of Rebol in GitHub
\ No newline at end of file
diff --git a/rebol/weekly/index.xml b/rebol/weekly/index.xml
new file mode 100644
index 00000000000..11353832db8
--- /dev/null
+++ b/rebol/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Rebol Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:16Z
+ Weekly Trending of Rebol in GitHub
+
+
\ No newline at end of file
diff --git a/record-jar/daily/index.xml b/record-jar/daily/index.xml
index 3712ca09bc9..6629cedf24e 100644
--- a/record-jar/daily/index.xml
+++ b/record-jar/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Record Jar Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:32Z
+ 2023-12-24T01:40:58Z
Daily Trending of Record Jar in GitHub
\ No newline at end of file
diff --git a/record-jar/weekly/index.xml b/record-jar/weekly/index.xml
new file mode 100644
index 00000000000..ccdb27a5018
--- /dev/null
+++ b/record-jar/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Record Jar Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:17Z
+ Weekly Trending of Record Jar in GitHub
+
+
\ No newline at end of file
diff --git a/red/daily/index.xml b/red/daily/index.xml
index 2a08e049ab5..d6f05c71e33 100644
--- a/red/daily/index.xml
+++ b/red/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Red Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:33Z
+ 2023-12-24T01:41:00Z
Daily Trending of Red in GitHub
\ No newline at end of file
diff --git a/red/weekly/index.xml b/red/weekly/index.xml
new file mode 100644
index 00000000000..9b0941ee335
--- /dev/null
+++ b/red/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Red Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:18Z
+ Weekly Trending of Red in GitHub
+
+
\ No newline at end of file
diff --git a/redcode/daily/index.xml b/redcode/daily/index.xml
index d0cc2f30971..3c3525e2e16 100644
--- a/redcode/daily/index.xml
+++ b/redcode/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Redcode Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:34Z
+ 2023-12-24T01:40:59Z
Daily Trending of Redcode in GitHub
\ No newline at end of file
diff --git a/redcode/weekly/index.xml b/redcode/weekly/index.xml
new file mode 100644
index 00000000000..f02fba9ba82
--- /dev/null
+++ b/redcode/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Redcode Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:18Z
+ Weekly Trending of Redcode in GitHub
+
+
\ No newline at end of file
diff --git a/redirect-rules/daily/index.xml b/redirect-rules/daily/index.xml
index 94ac029824d..e5fc95f2696 100644
--- a/redirect-rules/daily/index.xml
+++ b/redirect-rules/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Redirect Rules Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:37Z
+ 2023-12-24T01:41:01Z
Daily Trending of Redirect Rules in GitHub
\ No newline at end of file
diff --git a/redirect-rules/weekly/index.xml b/redirect-rules/weekly/index.xml
new file mode 100644
index 00000000000..b7e4d874ea5
--- /dev/null
+++ b/redirect-rules/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Redirect Rules Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:19Z
+ Weekly Trending of Redirect Rules in GitHub
+
+
\ No newline at end of file
diff --git a/regular-expression/daily/index.xml b/regular-expression/daily/index.xml
index 6dfa5f90e24..ad8e53ab576 100644
--- a/regular-expression/daily/index.xml
+++ b/regular-expression/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Regular Expression Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:36Z
+ 2023-12-24T01:41:02Z
Daily Trending of Regular Expression in GitHub
\ No newline at end of file
diff --git a/regular-expression/weekly/index.xml b/regular-expression/weekly/index.xml
new file mode 100644
index 00000000000..e7bb7048b02
--- /dev/null
+++ b/regular-expression/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Regular Expression Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:20Z
+ Weekly Trending of Regular Expression in GitHub
+
+
\ No newline at end of file
diff --git a/ren'py/daily/index.xml b/ren'py/daily/index.xml
index 07349b9f22f..10caae8f6db 100644
--- a/ren'py/daily/index.xml
+++ b/ren'py/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ren'Py Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:38Z
+ 2023-12-24T01:41:03Z
Daily Trending of Ren'Py in GitHub
\ No newline at end of file
diff --git a/ren'py/weekly/index.xml b/ren'py/weekly/index.xml
new file mode 100644
index 00000000000..967c11d3229
--- /dev/null
+++ b/ren'py/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ren'Py Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:22Z
+ Weekly Trending of Ren'Py in GitHub
+
+
\ No newline at end of file
diff --git a/renderscript/daily/index.xml b/renderscript/daily/index.xml
index 123ddf7fdc9..ae800d0a723 100644
--- a/renderscript/daily/index.xml
+++ b/renderscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RenderScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:35Z
+ 2023-12-24T01:41:02Z
Daily Trending of RenderScript in GitHub
\ No newline at end of file
diff --git a/renderscript/weekly/index.xml b/renderscript/weekly/index.xml
new file mode 100644
index 00000000000..95e651c8ac0
--- /dev/null
+++ b/renderscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RenderScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:21Z
+ Weekly Trending of RenderScript in GitHub
+
+
\ No newline at end of file
diff --git a/rescript/daily/index.xml b/rescript/daily/index.xml
index 85cb754613c..9a4dd56249f 100644
--- a/rescript/daily/index.xml
+++ b/rescript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ReScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:41Z
+ 2023-12-24T01:41:04Z
Daily Trending of ReScript in GitHub
\ No newline at end of file
diff --git a/rescript/weekly/index.xml b/rescript/weekly/index.xml
new file mode 100644
index 00000000000..8be66e76afb
--- /dev/null
+++ b/rescript/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub ReScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:23Z
+ Weekly Trending of ReScript in GitHub
+
+
+ juspay/hyperswitch-control-center
+ 2023-12-24T01:58:23Z
+ tag:github.com,2023-12-24:/juspay/hyperswitch-control-center
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/restructuredtext/daily/index.xml b/restructuredtext/daily/index.xml
index 4c8b74d0aa8..d506c768673 100644
--- a/restructuredtext/daily/index.xml
+++ b/restructuredtext/daily/index.xml
@@ -1,7 +1,7 @@
GitHub reStructuredText Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:40Z
+ 2023-12-24T01:41:06Z
Daily Trending of reStructuredText in GitHub
\ No newline at end of file
diff --git a/restructuredtext/weekly/index.xml b/restructuredtext/weekly/index.xml
new file mode 100644
index 00000000000..c28c3f6e274
--- /dev/null
+++ b/restructuredtext/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub reStructuredText Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:24Z
+ Weekly Trending of reStructuredText in GitHub
+
+
\ No newline at end of file
diff --git a/rexx/daily/index.xml b/rexx/daily/index.xml
index df9bc3ccb68..70857a662fa 100644
--- a/rexx/daily/index.xml
+++ b/rexx/daily/index.xml
@@ -1,7 +1,7 @@
GitHub REXX Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:39Z
+ 2023-12-24T01:41:05Z
Daily Trending of REXX in GitHub
\ No newline at end of file
diff --git a/rexx/weekly/index.xml b/rexx/weekly/index.xml
new file mode 100644
index 00000000000..8f966dcc824
--- /dev/null
+++ b/rexx/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub REXX Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:25Z
+ Weekly Trending of REXX in GitHub
+
+
\ No newline at end of file
diff --git a/rich-text-format/daily/index.xml b/rich-text-format/daily/index.xml
index 1899b1929fb..a26b2a01033 100644
--- a/rich-text-format/daily/index.xml
+++ b/rich-text-format/daily/index.xml
@@ -1,7 +1,14 @@
GitHub Rich Text Format Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:46Z
+ 2023-12-24T01:41:10Z
Daily Trending of Rich Text Format in GitHub
+
+ baselkelziye/YTU_Bilgisayar_Muhendisligi_Arsiv
+ 2023-12-24T01:41:10Z
+ tag:github.com,2023-12-24:/baselkelziye/YTU_Bilgisayar_Muhendisligi_Arsiv
+
+ <p></p><hr>
+
\ No newline at end of file
diff --git a/rich-text-format/weekly/index.xml b/rich-text-format/weekly/index.xml
new file mode 100644
index 00000000000..40b924675c3
--- /dev/null
+++ b/rich-text-format/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Rich Text Format Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:29Z
+ Weekly Trending of Rich Text Format in GitHub
+
+
\ No newline at end of file
diff --git a/ring/daily/index.xml b/ring/daily/index.xml
index e4cbe04dee8..807ed451c87 100644
--- a/ring/daily/index.xml
+++ b/ring/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Ring Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:44Z
+ 2023-12-24T01:41:08Z
Daily Trending of Ring in GitHub
\ No newline at end of file
diff --git a/ring/weekly/index.xml b/ring/weekly/index.xml
new file mode 100644
index 00000000000..57770fa9570
--- /dev/null
+++ b/ring/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Ring Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:26Z
+ Weekly Trending of Ring in GitHub
+
+
\ No newline at end of file
diff --git a/riot/daily/index.xml b/riot/daily/index.xml
index 306df402d66..d572a65e339 100644
--- a/riot/daily/index.xml
+++ b/riot/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Riot Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:43Z
+ 2023-12-24T01:41:10Z
Daily Trending of Riot in GitHub
\ No newline at end of file
diff --git a/riot/weekly/index.xml b/riot/weekly/index.xml
new file mode 100644
index 00000000000..43fee2b522c
--- /dev/null
+++ b/riot/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Riot Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:28Z
+ Weekly Trending of Riot in GitHub
+
+
\ No newline at end of file
diff --git a/rmarkdown/daily/index.xml b/rmarkdown/daily/index.xml
index 4024aa12e83..f34972c5483 100644
--- a/rmarkdown/daily/index.xml
+++ b/rmarkdown/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RMarkdown Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:45Z
+ 2023-12-24T01:41:08Z
Daily Trending of RMarkdown in GitHub
\ No newline at end of file
diff --git a/rmarkdown/weekly/index.xml b/rmarkdown/weekly/index.xml
new file mode 100644
index 00000000000..438a6a9ac26
--- /dev/null
+++ b/rmarkdown/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RMarkdown Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:27Z
+ Weekly Trending of RMarkdown in GitHub
+
+
\ No newline at end of file
diff --git a/robotframework/daily/index.xml b/robotframework/daily/index.xml
index 5a5f54676d1..28c002e5828 100644
--- a/robotframework/daily/index.xml
+++ b/robotframework/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RobotFramework Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:48Z
+ 2023-12-24T01:41:11Z
Daily Trending of RobotFramework in GitHub
\ No newline at end of file
diff --git a/robotframework/weekly/index.xml b/robotframework/weekly/index.xml
new file mode 100644
index 00000000000..a919501fd34
--- /dev/null
+++ b/robotframework/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RobotFramework Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:30Z
+ Weekly Trending of RobotFramework in GitHub
+
+
\ No newline at end of file
diff --git a/robots.txt/daily/index.xml b/robots.txt/daily/index.xml
index 34f8649dff0..629b26302d5 100644
--- a/robots.txt/daily/index.xml
+++ b/robots.txt/daily/index.xml
@@ -1,7 +1,7 @@
GitHub robots.txt Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:47Z
+ 2023-12-24T01:41:14Z
Daily Trending of robots.txt in GitHub
\ No newline at end of file
diff --git a/robots.txt/weekly/index.xml b/robots.txt/weekly/index.xml
new file mode 100644
index 00000000000..ccc44a9fdfc
--- /dev/null
+++ b/robots.txt/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub robots.txt Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:32Z
+ Weekly Trending of robots.txt in GitHub
+
+
\ No newline at end of file
diff --git a/roff-manpage/daily/index.xml b/roff-manpage/daily/index.xml
index 8727110feb3..03321fc8c98 100644
--- a/roff-manpage/daily/index.xml
+++ b/roff-manpage/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Roff Manpage Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:49Z
+ 2023-12-24T01:41:13Z
Daily Trending of Roff Manpage in GitHub
\ No newline at end of file
diff --git a/roff-manpage/weekly/index.xml b/roff-manpage/weekly/index.xml
new file mode 100644
index 00000000000..033d94a4c22
--- /dev/null
+++ b/roff-manpage/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Roff Manpage Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:31Z
+ Weekly Trending of Roff Manpage in GitHub
+
+
\ No newline at end of file
diff --git a/roff/daily/index.xml b/roff/daily/index.xml
index 9f532640fcd..945600a35a3 100644
--- a/roff/daily/index.xml
+++ b/roff/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Roff Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:51Z
+ 2023-12-24T01:41:13Z
Daily Trending of Roff in GitHub
\ No newline at end of file
diff --git a/roff/weekly/index.xml b/roff/weekly/index.xml
new file mode 100644
index 00000000000..3553a21568f
--- /dev/null
+++ b/roff/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Roff Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:33Z
+ Weekly Trending of Roff in GitHub
+
+
+ opencodeiiita/TechTerra
+ 2023-12-24T01:58:33Z
+ tag:github.com,2023-12-24:/opencodeiiita/TechTerra
+
+ <p>UI/UX for a Tech Website</p><hr>
+
+
+ Weave-MC/Weave-Loader
+ 2023-12-24T01:58:33Z
+ tag:github.com,2023-12-24:/Weave-MC/Weave-Loader
+
+ <p>Universal Minecraft Client Mod-Loader, written in Kotlin</p><hr>
+
+
\ No newline at end of file
diff --git a/rouge/daily/index.xml b/rouge/daily/index.xml
index 7fbdbcb9d01..152ba8ff842 100644
--- a/rouge/daily/index.xml
+++ b/rouge/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Rouge Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:54Z
+ 2023-12-24T01:41:15Z
Daily Trending of Rouge in GitHub
\ No newline at end of file
diff --git a/rouge/weekly/index.xml b/rouge/weekly/index.xml
new file mode 100644
index 00000000000..7bc7cb302ff
--- /dev/null
+++ b/rouge/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Rouge Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:35Z
+ Weekly Trending of Rouge in GitHub
+
+
\ No newline at end of file
diff --git a/rpc/daily/index.xml b/rpc/daily/index.xml
index 9e282699a40..82f682acefa 100644
--- a/rpc/daily/index.xml
+++ b/rpc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RPC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:54Z
+ 2023-12-24T01:41:17Z
Daily Trending of RPC in GitHub
\ No newline at end of file
diff --git a/rpc/weekly/index.xml b/rpc/weekly/index.xml
new file mode 100644
index 00000000000..364ee9d2912
--- /dev/null
+++ b/rpc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RPC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:35Z
+ Weekly Trending of RPC in GitHub
+
+
\ No newline at end of file
diff --git a/rpgle/daily/index.xml b/rpgle/daily/index.xml
index 5a2cc6987f1..a8cae589c86 100644
--- a/rpgle/daily/index.xml
+++ b/rpgle/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RPGLE Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:53Z
+ 2023-12-24T01:41:17Z
Daily Trending of RPGLE in GitHub
\ No newline at end of file
diff --git a/rpgle/weekly/index.xml b/rpgle/weekly/index.xml
new file mode 100644
index 00000000000..c60292f91b0
--- /dev/null
+++ b/rpgle/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RPGLE Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:34Z
+ Weekly Trending of RPGLE in GitHub
+
+
\ No newline at end of file
diff --git a/rpm-spec/daily/index.xml b/rpm-spec/daily/index.xml
index 62630ba75bc..57c20e49299 100644
--- a/rpm-spec/daily/index.xml
+++ b/rpm-spec/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RPM Spec Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:57Z
+ 2023-12-24T01:41:19Z
Daily Trending of RPM Spec in GitHub
\ No newline at end of file
diff --git a/rpm-spec/weekly/index.xml b/rpm-spec/weekly/index.xml
new file mode 100644
index 00000000000..301e963c436
--- /dev/null
+++ b/rpm-spec/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RPM Spec Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:38Z
+ Weekly Trending of RPM Spec in GitHub
+
+
\ No newline at end of file
diff --git a/ruby/daily/index.xml b/ruby/daily/index.xml
index d956a438842..2f881c461fd 100644
--- a/ruby/daily/index.xml
+++ b/ruby/daily/index.xml
@@ -1,7 +1,28 @@
GitHub Ruby Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:11Z
+ 2023-12-24T01:41:34Z
Daily Trending of Ruby in GitHub
+
+ ecoologic/ember_raffler
+ 2023-12-24T01:41:34Z
+ tag:github.com,2023-12-24:/ecoologic/ember_raffler
+
+ <p>railscasts episode 408 on ember.js</p><hr><ul>
<li>Working: Yes</li>
<li>Interesting: Not really</li>
<li>Progress: Complete</li>
<li>Purpose: Experiment</li>
</ul>
<p>== Railscasts Ember.js Raffler episode 408</p>
<p>Highlights</p>
<ul>
<li>working</li>
<li>complete</li>
<li>baby-step commits</li>
<li>ember 1.0.0-rc.1</li>
<li>rails 4.0.alpha1 (Ryan was on 3.2)</li>
<li>ruby 2.0-p0</li>
</ul>
+
+
+ johnh4/first_app
+ 2023-12-24T01:41:34Z
+ tag:github.com,2023-12-24:/johnh4/first_app
+
+ <p>The first app for the Ruby on Rails Tutorial</p><hr><h1>Ruby on Rails Tutorial: first application</h1>
<p>This is the first application for <a href="http://railstutorial.org/"><em>Ruby on Rails Tutorial: Learn Rails by Example</em></a> by <a href="http://michaelhartl.com/">Michael Hartl</a>.</p>
+
+
+ discourse/discourse-splash-screen
+ 2023-12-24T01:41:34Z
+ tag:github.com,2023-12-24:/discourse/discourse-splash-screen
+
+ <p>A welcome splash screen for first time users</p><hr><h1><strong>Splash Screen</strong></h1>
<p><strong>Theme Summary</strong></p>
<p>For more information, please see: <strong>url to meta topic</strong></p>
+
\ No newline at end of file
diff --git a/ruby/weekly/index.xml b/ruby/weekly/index.xml
new file mode 100644
index 00000000000..a211e38b609
--- /dev/null
+++ b/ruby/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Ruby Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:51Z
+ Weekly Trending of Ruby in GitHub
+
+
+ bensheldon/good_job
+ 2023-12-24T01:58:51Z
+ tag:github.com,2023-12-24:/bensheldon/good_job
+
+ <p>Multithreaded, Postgres-based, Active Job backend for Ruby on Rails.</p><hr><h1>GoodJob</h1>
<p><a href="https://rubygems.org/gems/good_job"><img src="https://badge.fury.io/rb/good_job.svg?sanitize=true" alt="Gem Version"></a> <a href="https://github.com/bensheldon/good_job/actions/workflows/test.yml?query=branch%3Amain"><img src="https://github.com/bensheldon/good_job/actions/workflows/test.yml/badge.svg?branch=main" alt="Test Status"></a> <a href="https://www.ruby-toolbox.com/projects/good_job"><img src="https://img.shields.io/badge/dynamic/json?color=blue&label=Ruby%20Toolbox&query=%24.projects%5B0%5D.score&url=https%3A%2F%2Fwww.ruby-toolbox.com%2Fapi%2Fprojects%2Fcompare%2Fgood_job&logo=data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJmbGFzayIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLWZsYXNrIGZhLXctMTQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik00MzcuMiA0MDMuNUwzMjAgMjE1VjY0aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4djE1MUwxMC44IDQwMy41Qy0xOC41IDQ1MC42IDE1LjMgNTEyIDcwLjkgNTEyaDMwNi4yYzU1LjcgMCA4OS40LTYxLjUgNjAuMS0xMDguNXpNMTM3LjkgMzIwbDQ4LjItNzcuNmMzLjctNS4yIDUuOC0xMS42IDUuOC0xOC40VjY0aDY0djE2MGMwIDYuOSAyLjIgMTMuMiA1LjggMTguNGw0OC4yIDc3LjZoLTE3MnoiPjwvcGF0aD48L3N2Zz4=" alt="Ruby Toolbox"></a></p>
<p>GoodJob is a multithreaded, Postgres-based, Active Job backend for Ruby on Rails.</p>
<p><strong>Inspired by <a href="https://github.com/collectiveidea/delayed_job">Delayed::Job</a> and <a href="https://github.com/que-rb/que">Que</a>, GoodJob is designed for maximum compatibility with Ruby on Rails, Active Job, and Postgres to be simple and performant for most workloads.</strong></p>
<ul>
<li><strong>Designed for Active Job.</strong> Complete support for <a href="https://edgeguides.rubyonrails.org/active_job_basics.html">async, queues, delays, priorities, timeouts, and retries</a> with near-zero configuration.</li>
<li><strong>Built for Rails.</strong> Fully adopts Ruby on Rails <a href="https://guides.rubyonrails.org/threading_and_code_execution.html">threading and code execution guidelines</a> with <a href="https://github.com/ruby-concurrency/concurrent-ruby">Concurrent::Ruby</a>.</li>
<li><strong>Backed by Postgres.</strong> Relies upon Postgres integrity, session-level Advisory Locks to provide run-once safety and stay within the limits of <code>schema.rb</code>, and LISTEN/NOTIFY to reduce queuing latency.</li>
<li><strong>For most workloads.</strong> Targets full-stack teams, economy-minded solo developers, and applications that enqueue 1-million jobs/day and more.</li>
</ul>
<p>For more of the story of GoodJob, read the <a href="https://island94.org/2020/07/introducing-goodjob-1-0">introductory blog post</a>.</p>
<details markdown="1">
<summary><strong>📊 Comparison of GoodJob with other job queue backends (click to expand)</strong></summary>
<table>
<thead>
<tr>
<th></th>
<th>Queues, priority, retries</th>
<th>Database</th>
<th>Concurrency</th>
<th>Reliability/Integrity</th>
<th>Latency</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>GoodJob</strong></td>
<td>✅ Yes</td>
<td>✅ Postgres</td>
<td>✅ Multithreaded</td>
<td>✅ ACID, Advisory Locks</td>
<td>✅ Postgres LISTEN/NOTIFY</td>
</tr>
<tr>
<td><strong>Que</strong></td>
<td>✅ Yes</td>
<td>🔶️ Postgres, requires <code>structure.sql</code></td>
<td>✅ Multithreaded</td>
<td>✅ ACID, Advisory Locks</td>
<td>✅ Postgres LISTEN/NOTIFY</td>
</tr>
<tr>
<td><strong>Delayed Job</strong></td>
<td>✅ Yes</td>
<td>✅ Postgres</td>
<td>🔴 Single-threaded</td>
<td>✅ ACID, record-based</td>
<td>🔶 Polling</td>
</tr>
<tr>
<td><strong>Sidekiq</strong></td>
<td>✅ Yes</td>
<td>🔴 Redis</td>
<td>✅ Multithreaded</td>
<td>🔴 Crashes lose jobs</td>
<td>✅ Redis BRPOP</td>
</tr>
<tr>
<td><strong>Sidekiq Pro</strong></td>
<td>✅ Yes</td>
<td>🔴 Redis</td>
<td>✅ Multithreaded</td>
<td>✅ Redis RPOPLPUSH</td>
<td>✅ Redis RPOPLPUSH</td>
</tr>
</tbody>
</table>
</details>
<h2>Table of contents</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#set-up">Set up</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#compatibility">Compatibility</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#configuration">Configuration</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#command-line-options">Command-line options</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#good_job-start"><code>good_job start</code></a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#good_job-cleanup_preserved_jobs"><code>good_job cleanup_preserved_jobs</code></a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#configuration-options">Configuration options</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#global-options">Global options</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#dashboard">Dashboard</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#api-only-rails-applications">API-only Rails applications</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#live-polling">Live polling</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#job-priority">Job priority</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#concurrency-controls">Concurrency controls</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#how-concurrency-controls-work">How concurrency controls work</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#cron-style-repeatingrecurring-jobs">Cron-style repeating/recurring jobs</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#bulk-enqueue">Bulk enqueue</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#batches">Batches</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#updating">Updating</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#upgrading-minor-versions">Upgrading minor versions</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#upgrading-v2-to-v3">Upgrading v2 to v3</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#upgrading-v1-to-v2">Upgrading v1 to v2</a></li>
</ul> </li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#go-deeper">Go deeper</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#exceptions-retries-and-reliability">Exceptions, retries, and reliability</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#exceptions">Exceptions</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#retries">Retries</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#action-mailer-retries">Action Mailer retries</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#interrupts">Interrupts</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#timeouts">Timeouts</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#optimize-queues-threads-and-processes">Optimize queues, threads, and processes</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#database-connections">Database connections</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#production-setup">Production setup</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#queue-performance-with-queue-select-limit">Queue performance with Queue Select Limit</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#execute-jobs-async--in-process">Execute jobs async / in-process</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#migrate-to-goodjob-from-a-different-active-job-backend">Migrate to GoodJob from a different Active Job backend</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#monitor-and-preserve-worked-jobs">Monitor and preserve worked jobs</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#write-tests">Write tests</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#pgbouncer-compatibility">PgBouncer compatibility</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#cli-http-health-check-probes">CLI HTTP health check probes</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#contribute">Contribute</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#gem-development">Gem development</a>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#development-setup">Development setup</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#rails-development-harness">Rails development harness</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#running-tests">Running tests</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#release">Release</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#license">License</a></li>
</ul>
<h2>Set up</h2>
<ol>
<li> <p>Add <code>good_job</code> to your application's Gemfile and install the gem:</p> <pre><code class="language-sh">bundle add good_job
</code></pre> </li>
<li> <p>Run the GoodJob install generator. This will generate a database migration to create a table for GoodJob's job records:</p> <pre><code class="language-bash">bin/rails g good_job:install
</code></pre> <p>Run the migration:</p> <pre><code class="language-bash">bin/rails db:migrate
</code></pre> <p>Optional: If using Rails' multiple databases with the <code>migrations_paths</code> configuration option, use the <code>--database</code> option:</p> <pre><code class="language-bash">bin/rails g good_job:install --database animals
bin/rails db:migrate:animals
</code></pre> </li>
<li> <p>Configure the Active Job adapter:</p> <pre><code class="language-ruby"># config/application.rb or config/environments/{RAILS_ENV}.rb
config.active_job.queue_adapter = :good_job
</code></pre> </li>
<li> <p>Inside of your application, queue your job 🎉:</p> <pre><code class="language-ruby">YourJob.perform_later
</code></pre> <p>GoodJob supports all Active Job features:</p> <pre><code class="language-ruby">YourJob.set(queue: :some_queue, wait: 5.minutes, priority: 10).perform_later
</code></pre> </li>
<li> <p><strong>In Rails' development environment</strong>, by default, GoodJob's Adapter executes jobs <code>async</code> in a background thread pool in <code>rails server</code>.</p>
<ul>
<li>Because of Rails deferred autoloading, jobs enqueued via the <code>rails console</code> may not begin executing on a separate server process until the Rails application is fully initialized by loading a web page once.</li>
<li>Remember, only Active Job's <code>perform_later</code> sends jobs to the queue adapter; Active Job's <code>perform_now</code> executes the job immediately and does not invoke the queue adapter. GoodJob is not involved in <code>perform_now</code> jobs.</li>
</ul> </li>
<li> <p><strong>In Rails' test environment</strong>, by default, GoodJob's Adapter executes jobs <code>inline</code> immediately in the current thread.</p>
<ul>
<li>Future-scheduled jobs can be executed with <code>GoodJob.perform_inline</code> using using a tool like Timecop or <code>ActiveSupport::Testing::TimeHelpers</code>.</li>
<li>Note that Active Job's TestAdapter, which powers test helpers (e.g. <code>assert_enqueued_with</code>), may override GoodJob's Adapter in <a href="https://github.com/rails/rails/issues/37270">some configurations</a>.</li>
</ul> </li>
<li> <p><strong>In Rails' production environment</strong>, by default, GoodJob's Adapter enqueues jobs in <code>external</code> mode to be executed by a separate execution process:</p>
<ul>
<li> <p>By default, GoodJob separates job enqueuing from job execution so that jobs can be scaled independently of the web server. Use the GoodJob command-line tool to execute jobs:</p> <pre><code class="language-bash">bundle exec good_job start
</code></pre> <p>Ideally the command-line tool should be run on a separate machine or container from the web process. For example, on Heroku:</p> <pre><code class="language-Procfile">web: rails server
worker: bundle exec good_job start
</code></pre> <p>The command-line tool supports a variety of options, see the reference below for command-line configuration.</p> </li>
<li> <p>GoodJob can also be configured to execute jobs within the web server process to save on resources. This is useful for low-workloads when economy is paramount.</p> <pre><code class="language-bash">GOOD_JOB_EXECUTION_MODE=async rails server
</code></pre> <p>Additional configuration is likely necessary, see the reference below for configuration.</p> </li>
</ul> </li>
</ol>
<h2>Compatibility</h2>
<ul>
<li><strong>Ruby on Rails:</strong> 6.0+</li>
<li><strong>Ruby:</strong> Ruby 2.6+. JRuby 9.3+</li>
<li><strong>Postgres:</strong> 10.0+</li>
</ul>
<h2>Configuration</h2>
<h3>Command-line options</h3>
<p>There are several top-level commands available through the <code>good_job</code> command-line tool.</p>
<p>Configuration options are available with <code>help</code>.</p>
<h4><code>good_job start</code></h4>
<p><code>good_job start</code> executes queued jobs.</p>
<pre><code class="language-bash">$ bundle exec good_job help start
Usage:
good_job start
Options:
[--queues=QUEUE_LIST] # Queues or pools to work from. (env var: GOOD_JOB_QUEUES, default: *)
[--max-threads=COUNT] # Default number of threads per pool to use for working jobs. (env var: GOOD_JOB_MAX_THREADS, default: 5)
[--poll-interval=SECONDS] # Interval between polls for available jobs in seconds (env var: GOOD_JOB_POLL_INTERVAL, default: 1)
[--max-cache=COUNT] # Maximum number of scheduled jobs to cache in memory (env var: GOOD_JOB_MAX_CACHE, default: 10000)
[--shutdown-timeout=SECONDS] # Number of seconds to wait for jobs to finish when shutting down before stopping the thread. (env var: GOOD_JOB_SHUTDOWN_TIMEOUT, default: -1 (forever))
[--enable-cron] # Whether to run cron process (default: false)
[--enable-listen-notify] # Whether to enqueue and read jobs with Postgres LISTEN/NOTIFY (default: true)
[--idle-timeout=SECONDS] # Exit process when no jobs have been performed for this many seconds (env var: GOOD_JOB_IDLE_TIMEOUT, default: nil)
[--daemonize] # Run as a background daemon (default: false)
[--pidfile=PIDFILE] # Path to write daemonized Process ID (env var: GOOD_JOB_PIDFILE, default: tmp/pids/good_job.pid)
[--probe-port=PORT] # Port for http health check (env var: GOOD_JOB_PROBE_PORT, default: nil)
[--queue-select-limit=COUNT] # The number of queued jobs to select when polling for a job to run. (env var: GOOD_JOB_QUEUE_SELECT_LIMIT, default: nil)"
Executes queued jobs.
All options can be configured with environment variables.
See option descriptions for the matching environment variable name.
== Configuring queues
Separate multiple queues with commas; exclude queues with a leading minus;
separate isolated execution pools with semicolons and threads with colons.
</code></pre>
<h4><code>good_job cleanup_preserved_jobs</code></h4>
<p><code>good_job cleanup_preserved_jobs</code> destroys preserved job records. See <code>GoodJob.preserve_job_records</code> for when this command is useful.</p>
<pre><code class="language-bash">$ bundle exec good_job help cleanup_preserved_jobs
Usage:
good_job cleanup_preserved_jobs
Options:
[--before-seconds-ago=SECONDS] # Destroy records finished more than this many seconds ago (env var: GOOD_JOB_CLEANUP_PRESERVED_JOBS_BEFORE_SECONDS_AGO, default: 1209600 (14 days))
Manually destroys preserved job records.
By default, GoodJob automatically destroys job records when the job is performed
and this command is not required to be used.
</code></pre>
<h3>Configuration options</h3>
<p>Active Job configuration depends on where the code is placed:</p>
<ul>
<li><code>config.active_job.queue_adapter = :good_job</code> within <code>config/application.rb</code> or <code>config/environments/*.rb</code>.</li>
<li><code>ActiveJob::Base.queue_adapter = :good_job</code> within an initializer (e.g. <code>config/initializers/active_job.rb</code>).</li>
</ul>
<p>GoodJob configuration can be placed within Rails <code>config</code> directory for all environments (<code>config/application.rb</code>), within a particular environment (e.g. <code>config/environments/development.rb</code>), or within an initializer (e.g. <code>config/initializers/good_job.rb</code>).</p>
<p>Configuration examples:</p>
<pre><code class="language-ruby"># config/initializers/good_job.rb OR config/application.rb OR config/environments/{RAILS_ENV}.rb
Rails.application.configure do
# Configure options individually...
config.good_job.preserve_job_records = true
config.good_job.retry_on_unhandled_error = false
config.good_job.on_thread_error = -> (exception) { Rails.error.report(exception) }
config.good_job.execution_mode = :async
config.good_job.queues = '*'
config.good_job.max_threads = 5
config.good_job.poll_interval = 30 # seconds
config.good_job.shutdown_timeout = 25 # seconds
config.good_job.enable_cron = true
config.good_job.cron = { example: { cron: '0 * * * *', class: 'ExampleJob' } }
config.good_job.dashboard_default_locale = :en
# ...or all at once.
config.good_job = {
preserve_job_records: true,
retry_on_unhandled_error: false,
on_thread_error: -> (exception) { Rails.error.report(exception) },
execution_mode: :async,
queues: '*',
max_threads: 5,
poll_interval: 30,
shutdown_timeout: 25,
enable_cron: true,
cron: {
example: {
cron: '0 * * * *',
class: 'ExampleJob'
},
},
dashboard_default_locale: :en,
}
end
</code></pre>
<p>Available configuration options are:</p>
<ul>
<li> <p><code>execution_mode</code> (symbol) specifies how and where jobs should be executed. You can also set this with the environment variable <code>GOOD_JOB_EXECUTION_MODE</code>. It can be any one of:</p>
<ul>
<li><code>:inline</code> executes jobs immediately in whatever process queued them (usually the web server process). This should only be used in test and development environments.</li>
<li><code>:external</code> causes the adapter to enqueue jobs, but not execute them. When using this option (the default for production environments), you’ll need to use the command-line tool to actually execute your jobs.</li>
<li><code>:async</code> (or <code>:async_server</code>) executes jobs in separate threads within the Rails web server process (<code>bundle exec rails server</code>). It can be more economical for small workloads because you don’t need a separate machine or environment for running your jobs, but if your web server is under heavy load or your jobs require a lot of resources, you should choose <code>:external</code> instead. When not in the Rails web server, jobs will execute in <code>:external</code> mode to ensure jobs are not executed within <code>rails console</code>, <code>rails db:migrate</code>, <code>rails assets:prepare</code>, etc.</li>
<li><code>:async_all</code> executes jobs in separate threads in <em>any</em> Rails process.</li>
</ul> </li>
<li> <p><code>queues</code> (string) sets queues or pools to execute jobs. You can also set this with the environment variable <code>GOOD_JOB_QUEUES</code>.</p> </li>
<li> <p><code>max_threads</code> (integer) sets the default number of threads per pool to use for working jobs. You can also set this with the environment variable <code>GOOD_JOB_MAX_THREADS</code>.</p> </li>
<li> <p><code>poll_interval</code> (integer) sets the number of seconds between polls for jobs when <code>execution_mode</code> is set to <code>:async</code>. You can also set this with the environment variable <code>GOOD_JOB_POLL_INTERVAL</code>. A poll interval of <code>-1</code> disables polling completely.</p> </li>
<li> <p><code>max_cache</code> (integer) sets the maximum number of scheduled jobs that will be stored in memory to reduce execution latency when also polling for scheduled jobs. Caching 10,000 scheduled jobs uses approximately 20MB of memory. You can also set this with the environment variable <code>GOOD_JOB_MAX_CACHE</code>.</p> </li>
<li> <p><code>shutdown_timeout</code> (integer) number of seconds to wait for jobs to finish when shutting down before stopping the thread. Defaults to forever: <code>-1</code>. You can also set this with the environment variable <code>GOOD_JOB_SHUTDOWN_TIMEOUT</code>.</p> </li>
<li> <p><code>enable_cron</code> (boolean) whether to run cron process. Defaults to <code>false</code>. You can also set this with the environment variable <code>GOOD_JOB_ENABLE_CRON</code>.</p> </li>
<li> <p><code>enable_listen_notify</code> (boolean) whether to enqueue and read jobs with Postgres LISTEN/NOTIFY. Defaults to <code>true</code>. You can also set this with the environment variable <code>GOOD_JOB_ENABLE_LISTEN_NOTIFY</code>.</p> </li>
<li> <p><code>cron</code> (hash) cron configuration. Defaults to <code>{}</code>. You can also set this as a JSON string with the environment variable <code>GOOD_JOB_CRON</code></p> </li>
<li> <p><code>cleanup_discarded_jobs</code> (boolean) whether to destroy discarded jobs when cleaning up preserved jobs using the <code>$ good_job cleanup_preserved_jobs</code> CLI command or calling <code>GoodJob.cleanup_preserved_jobs</code>. Defaults to <code>true</code>. Can also be set with the environment variable <code>GOOD_JOB_CLEANUP_DISCARDED_JOBS</code>. <em>This configuration is only used when {GoodJob.preserve_job_records} is <code>true</code>.</em></p> </li>
<li> <p><code>cleanup_preserved_jobs_before_seconds_ago</code> (integer) number of seconds to preserve jobs when using the <code>$ good_job cleanup_preserved_jobs</code> CLI command or calling <code>GoodJob.cleanup_preserved_jobs</code>. Defaults to <code>1209600</code> (14 days). Can also be set with the environment variable <code>GOOD_JOB_CLEANUP_PRESERVED_JOBS_BEFORE_SECONDS_AGO</code>. <em>This configuration is only used when {GoodJob.preserve_job_records} is <code>true</code>.</em></p> </li>
<li> <p><code>cleanup_interval_jobs</code> (integer) Number of jobs a Scheduler will execute before cleaning up preserved jobs. Defaults to <code>1000</code>. Disable with <code>false</code>. Can also be set with the environment variable <code>GOOD_JOB_CLEANUP_INTERVAL_JOBS</code> and disabled with <code>0</code>).</p> </li>
<li> <p><code>cleanup_interval_seconds</code> (integer) Number of seconds a Scheduler will wait before cleaning up preserved jobs. Defaults to <code>600</code> (10 minutes). Disable with <code>false</code>. Can also be set with the environment variable <code>GOOD_JOB_CLEANUP_INTERVAL_SECONDS</code> and disabled with <code>0</code>).</p> </li>
<li> <p><code>inline_execution_respects_schedule</code> (boolean) Opt-in to future behavior of inline execution respecting scheduled jobs. Defaults to <code>false</code>.</p> </li>
<li> <p><code>logger</code> (<a href="https://api.rubyonrails.org/classes/ActiveSupport/Logger.html">Rails Logger</a>) lets you set a custom logger for GoodJob. It should be an instance of a Rails <code>Logger</code> (Default: <code>Rails.logger</code>).</p> </li>
<li> <p><code>preserve_job_records</code> (boolean) keeps job records in your database even after jobs are completed. (Default: <code>true</code>)</p> </li>
<li> <p><code>smaller_number_is_higher_priority</code> (boolean) allows you to specifiy that jobs should be run in ascending order of priority (smallest priority numbers first). This will be enabled by default in the next major version of GoodJob (v4.0), but jobs with the highest priority number are run first by default in all earlier versions of GoodJob.</p> </li>
<li> <p><code>retry_on_unhandled_error</code> (boolean) causes jobs to be re-queued and retried if they raise an instance of <code>StandardError</code>. Be advised this may lead to jobs being repeated infinitely (<a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#retries">see below for more on retries</a>). Instances of <code>Exception</code>, like SIGINT, will <em>always</em> be retried, regardless of this attribute’s value. (Default: <code>false</code>)</p> </li>
<li> <p><code>on_thread_error</code> (proc, lambda, or callable) will be called when there is an Exception. It can be useful for logging errors to bug tracking services, like Sentry or Airbrake. Example:</p> <pre><code class="language-ruby">config.good_job.on_thread_error = -> (exception) { Rails.error.report(exception) }
</code></pre> </li>
</ul>
<p>By default, GoodJob configures the following execution modes per environment:</p>
<pre><code class="language-ruby">
# config/environments/development.rb
config.active_job.queue_adapter = :good_job
config.good_job.execution_mode = :async
# config/environments/test.rb
config.active_job.queue_adapter = :good_job
config.good_job.execution_mode = :inline
# config/environments/production.rb
config.active_job.queue_adapter = :good_job
config.good_job.execution_mode = :external
</code></pre>
<h3>Global options</h3>
<p>Good Job’s general behavior can also be configured via attributes directly on the <code>GoodJob</code> module:</p>
<ul>
<li> <p><strong><code>GoodJob.configure_active_record { ... }</code></strong> Inject Active Record configuration into GoodJob's base model, for example, when using <a href="https://guides.rubyonrails.org/active_record_multiple_databases.html">multiple databases with Active Record</a> or when other custom configuration is necessary for the Active Record model to connect to the Postgres database. Example:</p> <pre><code class="language-ruby"># config/initializers/good_job.rb
GoodJob.configure_active_record do
connects_to database: :special_database
self.table_name_prefix = "special_application_"
end
</code></pre> </li>
<li> <p><strong><code>GoodJob.active_record_parent_class</code></strong> (string) Alternatively, modify the Active Record parent class inherited by GoodJob's Active Record model <code>GoodJob::Job</code> (defaults to <code>"ActiveRecord::Base"</code>). Configure this <em>The value must be a String to avoid premature initialization of Active Record.</em></p> </li>
</ul>
<p>You’ll generally want to configure these in <code>config/initializers/good_job.rb</code>, like so:</p>
<pre><code class="language-ruby"># config/initializers/good_job.rb
GoodJob.active_record_parent_class = "ApplicationRecord"
</code></pre>
<p>The following options are also configurable via accessors, but you are encouraged to use the configuration attributes instead because these may be deprecated and removed in the future:</p>
<ul>
<li><strong><code>GoodJob.logger</code></strong> (<a href="https://api.rubyonrails.org/classes/ActiveSupport/Logger.html">Rails Logger</a>) lets you set a custom logger for GoodJob. It should be an instance of a Rails <code>Logger</code>.</li>
<li><strong><code>GoodJob.preserve_job_records</code></strong> (boolean) keeps job records in your database even after jobs are completed. (Default: <code>true</code>)</li>
<li><strong><code>GoodJob.retry_on_unhandled_error</code></strong> (boolean) causes jobs to be re-queued and retried if they raise an instance of <code>StandardError</code>. Be advised this may lead to jobs being repeated infinitely (<a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#retries">see below for more on retries</a>). Instances of <code>Exception</code>, like SIGINT, will <em>always</em> be retried, regardless of this attribute’s value. (Default: <code>false</code>)</li>
<li><strong><code>GoodJob.on_thread_error</code></strong> (proc, lambda, or callable) will be called when there is an Exception. It can be useful for logging errors to bug tracking services, like Sentry or Airbrake.</li>
</ul>
<h3>Dashboard</h3>
<p><img src="https://github.com/bensheldon/good_job/raw/main/SCREENSHOT.png" alt="Dashboard UI"></p>
<p><em>🚧 GoodJob's dashboard is a work in progress. Please contribute ideas and code on <a href="https://github.com/bensheldon/good_job/issues">Github</a>.</em></p>
<p>GoodJob includes a Dashboard as a mountable <code>Rails::Engine</code>.</p>
<ol>
<li> <p>Mount the engine in your <code>config/routes.rb</code> file. The following will mount it at <code>http://example.com/good_job</code>.</p> <pre><code class="language-ruby"># config/routes.rb
# ...
mount GoodJob::Engine => 'good_job'
</code></pre> </li>
<li> <p>Configure authentication. Because jobs can potentially contain sensitive information, you should authorize access. For example, using Devise's <code>authenticate</code> helper, that might look like:</p> <pre><code class="language-ruby"># config/routes.rb
# ...
authenticate :user, ->(user) { user.admin? } do
mount GoodJob::Engine => 'good_job'
end
</code></pre> <p>Another option is using basic auth like this:</p> <pre><code class="language-ruby"># config/initializers/good_job.rb
GoodJob::Engine.middleware.use(Rack::Auth::Basic) do |username, password|
ActiveSupport::SecurityUtils.secure_compare(Rails.application.credentials.good_job_username, username) &&
ActiveSupport::SecurityUtils.secure_compare(Rails.application.credentials.good_job_password, password)
end
</code></pre> <p>To support custom authentication, you can extend GoodJob's <code>ApplicationController</code> using the following hook:</p> <pre><code class="language-ruby"># config/initializers/good_job.rb
ActiveSupport.on_load(:good_job_application_controller) do
# context here is GoodJob::ApplicationController
before_action do
raise ActionController::RoutingError.new('Not Found') unless current_user&.admin?
end
def current_user
# load current user
end
end
</code></pre> </li>
</ol>
<p><em>To view finished jobs (succeeded and discarded) on the Dashboard, GoodJob must be configured to preserve job records. Preservation is enabled by default.</em></p>
<p><strong>Troubleshooting the Dashboard:</strong> Some applications are unable to autoload the Goodjob Engine. To work around this, explicitly require the Engine at the top of your <code>config/application.rb</code> file, immediately after Rails is required and before Bundler requires the Rails' groups.</p>
<pre><code class="language-ruby"># config/application.rb
require_relative 'boot'
require 'rails/all'
require 'good_job/engine' # <= Add this line
# ...
</code></pre>
<h4>API-only Rails applications</h4>
<p>API-only Rails applications may not have all of the required Rack middleware for the GoodJob Dashboard to function. To re-add the middleware:</p>
<pre><code class="language-ruby"># config/application.rb
module MyApp
class Application < Rails::Application
#...
config.middleware.use Rack::MethodOverride
config.middleware.use ActionDispatch::Flash
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore
end
end
</code></pre>
<h4>Live polling</h4>
<p>The Dashboard can be set to automatically refresh by checking "Live Poll" in the Dashboard header, or by setting <code>?poll=10</code> with the interval in seconds (default 30 seconds).</p>
<h3>Job priority</h3>
<p>Higher priority numbers run first in all versions of GoodJob v3.x and below. GoodJob v4.x will change job <code>priority</code> to give smaller numbers higher priority (default: <code>0</code>), in accordance with Active Job's definition of priority (see #524). To opt-in to this behavior now, set <code>config.good_job.smaller_number_is_higher_priority = true</code> in your GoodJob initializer or <code>application.rb</code>.</p>
<h3>Labelled jobs</h3>
<p>Labels are the recommended way to add context or metadata to specific jobs. For example, all jobs that have a dependency on an email service could be labeled <code>email</code>. Using labels requires adding the Active Job extension <code>GoodJob::ActiveJobExtensions::Labels</code> to your job class.</p>
<pre><code class="language-ruby">class ApplicationRecord < ActiveJob::Base
include GoodJob::ActiveJobExtensions::Labels
end
# Add a default label to every job within the class
class WelcomeJob < ApplicationRecord
self.good_job_labels = ["email"]
def perform
# Labels can be inspected from within the job
puts good_job_labels # => ["email"]
end
end
# Or add to individual jobs when enqueued
WelcomeJob.set(good_job_labels: ["email"]).perform_later
</code></pre>
<p>Labels can be used to search jobs in the Dashboard. For example, to find all jobs labeled <code>email</code>, search for <code>email</code>.</p>
<h3>Concurrency controls</h3>
<p>GoodJob can extend Active Job to provide limits on concurrently running jobs, either at time of <em>enqueue</em> or at <em>perform</em>. Limiting concurrency can help prevent duplicate, double or unnecessary jobs from being enqueued, or race conditions when performing, for example when interacting with 3rd-party APIs.</p>
<pre><code class="language-ruby">class MyJob < ApplicationJob
include GoodJob::ActiveJobExtensions::Concurrency
good_job_control_concurrency_with(
# Maximum number of unfinished jobs to allow with the concurrency key
# Can be an Integer or Lambda/Proc that is invoked in the context of the job
total_limit: 1,
# Or, if more control is needed:
# Maximum number of jobs with the concurrency key to be
# concurrently enqueued (excludes performing jobs)
# Can be an Integer or Lambda/Proc that is invoked in the context of the job
enqueue_limit: 2,
# Maximum number of jobs with the concurrency key to be
# concurrently performed (excludes enqueued jobs)
# Can be an Integer or Lambda/Proc that is invoked in the context of the job
perform_limit: 1,
# Note: Under heavy load, the total number of jobs may exceed the
# sum of `enqueue_limit` and `perform_limit` because of race conditions
# caused by imperfectly disjunctive states. If you need to constrain
# the total number of jobs, use `total_limit` instead. See #378.
# A unique key to be globally locked against.
# Can be String or Lambda/Proc that is invoked in the context of the job.
# Note: Arguments passed to #perform_later can be accessed through Active Job's `arguments` method
# which is an array containing positional arguments and, optionally, a kwarg hash.
key: -> { "MyJob-#{arguments.first}-#{arguments.last[:version]}" } # MyJob.perform_later("Alice", version: 'v2') => "MyJob-Alice-v2"
)
def perform(first_name)
# do work
end
end
</code></pre>
<p>When testing, the resulting concurrency key value can be inspected:</p>
<pre><code class="language-ruby">job = MyJob.perform_later("Alice")
job.good_job_concurrency_key #=> "MyJob-Alice"
</code></pre>
<h4>How concurrency controls work</h4>
<p>GoodJob's concurrency control strategy for <code>perform_limit</code> is "optimistic retry with an incremental backoff". The <a href="https://github.com/bensheldon/good_job/raw/main/lib/good_job/active_job_extensions/concurrency.rb">code is readable</a>.</p>
<ul>
<li>"Optimistic" meaning that the implementation's performance trade-off assumes that collisions are atypical (e.g. two users enqueue the same job at the same time) rather than regular (e.g. the system enqueues thousands of colliding jobs at the same time). Depending on your concurrency requirements, you may also want to manage concurrency through the number of GoodJob threads and processes that are performing a given queue.</li>
<li>"Retry with an incremental backoff" means that when <code>perform_limit</code> is exceeded, the job will raise a <code>GoodJob::ActiveJobExtensions::Concurrency::ConcurrencyExceededError</code> which is caught by a <code>retry_on</code> handler which re-schedules the job to execute in the near future with an incremental backoff.</li>
<li>First-in-first-out job execution order is not preserved when a job is retried with incremental back-off.</li>
<li>For pessimistic usecases that collisions are expected, use number of threads/processes (e.g., <code>good_job --queues "serial:1;-serial:5"</code>) to control concurrency. It is also a good idea to use <code>perform_limit</code> as backstop.</li>
</ul>
<h3>Cron-style repeating/recurring jobs</h3>
<p>GoodJob can enqueue Active Job jobs on a recurring basis that can be used as a replacement for cron.</p>
<p>Cron-style jobs can be performed by any GoodJob process (e.g., CLI or <code>:async</code> execution mode) that has <code>config.good_job.enable_cron</code> set to <code>true</code>. That is, one or more job executor processes can be configured to perform recurring jobs.</p>
<p>GoodJob's cron uses unique indexes to ensure that only a single job is enqueued at the given time interval. In order for this to work, GoodJob must preserve cron-created job records; these records will be automatically deleted like any other preserved record.</p>
<p>Cron-format is parsed by the <a href="https://github.com/floraison/fugit"><code>fugit</code></a> gem, which has support for seconds-level resolution (e.g. <code>* * * * * *</code>) and natural language parsing (e.g. <code>every second</code>).</p>
<p>If you use the <a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#dashboard">Dashboard</a> the scheduled tasks can be viewed in the 'cron' menu. In this view you can also disable a task or run/enqueue a task immediately.</p>
<pre><code class="language-ruby"># config/environments/application.rb or a specific environment e.g. production.rb
# Enable cron in this process, e.g., only run on the first Heroku worker process
config.good_job.enable_cron = ENV['DYNO'] == 'worker.1' # or `true` or via $GOOD_JOB_ENABLE_CRON
# Configure cron with a hash that has a unique key for each recurring job
config.good_job.cron = {
# Every 15 minutes, enqueue `ExampleJob.set(priority: -10).perform_later(42, "life", name: "Alice")`
frequent_task: { # each recurring job must have a unique key
cron: "*/15 * * * *", # cron-style scheduling format by fugit gem
class: "ExampleJob", # name of the job class as a String; must reference an Active Job job class
args: [42, "life"], # positional arguments to pass to the job; can also be a proc e.g. `-> { [Time.now] }`
kwargs: { name: "Alice" }, # keyword arguments to pass to the job; can also be a proc e.g. `-> { { name: NAMES.sample } }`
set: { priority: -10 }, # additional Active Job properties; can also be a lambda/proc e.g. `-> { { priority: [1,2].sample } }`
description: "Something helpful", # optional description that appears in Dashboard
},
another_task: {
cron: "0 0,12 * * *",
class: "AnotherJob",
},
complex_schedule: {
class: "ComplexScheduleJob",
cron: -> (last_ran) { (last_ran.blank? ? Time.now : last_ran + 14.hours).at_beginning_of_minute }
}
# etc.
}
</code></pre>
<h3>Bulk enqueue</h3>
<p>GoodJob's Bulk-enqueue functionality can buffer and enqueue multiple jobs at once, using a single INSERT statement. This can more performant when enqueuing a large number of jobs.</p>
<pre><code class="language-ruby"># Capture jobs using `.perform_later`:
active_jobs = GoodJob::Bulk.enqueue do
MyJob.perform_later
AnotherJob.perform_later
# If an exception is raised within this block, no jobs will be inserted.
end
# All Active Job instances are returned from GoodJob::Bulk.enqueue.
# Jobs that have been successfully enqueued have a `provider_job_id` set.
active_jobs.all?(&:provider_job_id)
# Bulk enqueue Active Job instances directly without using `.perform_later`:
GoodJob::Bulk.enqueue(MyJob.new, AnotherJob.new)
</code></pre>
<h3>Batches</h3>
<p>Batches track a set of jobs, and enqueue an optional callback job when all of the jobs have finished (succeeded or discarded).</p>
<ul>
<li> <p>A simple example that enqueues your <code>MyBatchCallbackJob</code> after the two jobs have finished, and passes along the current user as a batch property:</p> <pre><code class="language-ruby">GoodJob::Batch.enqueue(on_finish: MyBatchCallbackJob, user: current_user) do
MyJob.perform_later
OtherJob.perform_later
end
# When these jobs have finished, it will enqueue your `MyBatchCallbackJob.perform_later(batch, options)`
class MyBatchCallbackJob < ApplicationJob
# Callback jobs must accept a `batch` and `options` argument
def perform(batch, params)
# The batch object will contain the Batch's properties, which are mutable
batch.properties[:user] # => <User id: 1, ...>
# Params is a hash containing additional context (more may be added in the future)
params[:event] # => :finish, :success, :discard
end
end
</code></pre> </li>
<li> <p>Jobs can be added to an existing batch. Jobs in a batch are enqueued and performed immediately/asynchronously. The final callback job will not be enqueued until <code>GoodJob::Batch#enqueue</code> is called.</p> <pre><code class="language-ruby">batch = GoodJob::Batch.new
batch.add do
10.times { MyJob.perform_later }
end
batch.add do
10.times { OtherJob.perform_later }
end
batch.enqueue(on_finish: MyBatchCallbackJob, age: 42)
</code></pre> </li>
<li> <p>If you need to access the batch within a job that is part of the batch, include <a href="https://raw.githubusercontent.com/bensheldon/good_job/main/lib/good_job/active_job_extensions/batches.rb"><code>GoodJob::ActiveJobExtensions::Batches</code></a> in your job class:</p> <pre><code class="language-ruby"> class MyJob < ApplicationJob
include GoodJob::ActiveJobExtensions::Batches
def perform
self.batch # => <GoodJob::Batch id: 1, ...>
end
end
</code></pre> </li>
<li> <p><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/app/models/good_job/batch.rb"><code>GoodJob::Batch</code></a> has a number of assignable attributes and methods:</p> </li>
</ul>
<pre><code class="language-ruby">batch = GoodJob::Batch.new
batch.description = "My batch"
batch.on_finish = "MyBatchCallbackJob" # Callback job when all jobs have finished
batch.on_success = "MyBatchCallbackJob" # Callback job when/if all jobs have succeeded
batch.on_discard = "MyBatchCallbackJob" # Callback job when the first job in the batch is discarded
batch.callback_queue_name = "special_queue" # Optional queue for callback jobs, otherwise will defer to job class
batch.callback_priority = 10 # Optional priority name for callback jobs, otherwise will defer to job class
batch.properties = { age: 42 } # Custom data and state to attach to the batch
batch.add do
MyJob.perform_later
end
batch.enqueue
batch.discarded? # => Boolean
batch.discarded_at # => <DateTime>
batch.finished? # => Boolean
batch.finished_at # => <DateTime>
batch.succeeded? # => Boolean
batch.active_jobs # => Array of ActiveJob::Base-inherited jobs that are part of the batch
batch = GoodJob::Batch.find(batch.id)
batch.description = "Updated batch description"
batch.save
batch.reload
</code></pre>
<h3>Batch callback jobs</h3>
<p>Batch callbacks are Active Job jobs that are enqueued at certain events during the execution of jobs within the batch:</p>
<ul>
<li><code>:finish</code> - Enqueued when all jobs in the batch have finished, after all retries. Jobs will either be discarded or succeeded.</li>
<li><code>:success</code> - Enqueued only when all jobs in the batch have finished and succeeded.</li>
<li><code>:discard</code> - Enqueued immediately the first time a job in the batch is discarded.</li>
</ul>
<p>Callback jobs must accept a <code>batch</code> and <code>params</code> argument in their <code>perform</code> method:</p>
<pre><code class="language-ruby">class MyBatchCallbackJob < ApplicationJob
def perform(batch, params)
# The batch object will contain the Batch's properties
batch.properties[:user] # => <User id: 1, ...>
# Batches are mutable
batch.properties[:user] = User.find(2)
batch.save
# Params is a hash containing additional context (more may be added in the future)
params[:event] # => :finish, :success, :discard
end
end
</code></pre>
<h4>Complex batches</h4>
<p>Consider a multi-stage batch with both parallel and serial job steps:</p>
<pre><code class="language-mermaid">graph TD
0{"BatchJob\n{ stage: nil }"}
0 --> a["WorkJob]\n{ step: a }"]
0 --> b["WorkJob]\n{ step: b }"]
0 --> c["WorkJob]\n{ step: c }"]
a --> 1
b --> 1
c --> 1
1{"BatchJob\n{ stage: 1 }"}
1 --> d["WorkJob]\n{ step: d }"]
1 --> e["WorkJob]\n{ step: e }"]
e --> f["WorkJob]\n{ step: f }"]
d --> 2
f --> 2
2{"BatchJob\n{ stage: 2 }"}
</code></pre>
<p>This can be implemented with a single, mutable batch job:</p>
<pre><code class="language-ruby">class WorkJob < ApplicationJob
include GoodJob::ActiveJobExtensions::Batches
def perform(step)
# ...
if step == 'e'
batch.add { WorkJob.perform_later('f') }
end
end
end
class BatchJob < ApplicationJob
def perform(batch, options)
if batch.properties[:stage].nil?
batch.enqueue(stage: 1) do
WorkJob.perform_later('a')
WorkJob.perform_later('b')
WorkJob.perform_later('c')
end
elsif batch.properties[:stage] == 1
batch.enqueue(stage: 2) do
WorkJob.perform_later('d')
WorkJob.perform_later('e')
end
elsif batch.properties[:stage] == 2
# ...
end
end
end
GoodJob::Batch.enqueue(on_finish: BatchJob)
</code></pre>
<h4>Other batch details</h4>
<ul>
<li>Whether to enqueue a callback job is evaluated once the batch is in an <code>enqueued?</code>-state by using <code>GoodJob::Batch.enqueue</code> or <code>batch.enqueue</code>.</li>
<li>Callback job enqueueing will be re-triggered if additional jobs are <code>enqueue</code>'d to the batch; use <code>add</code> to add jobs to the batch without retriggering callback jobs.</li>
<li>Callback jobs will be enqueued even if the batch contains no jobs.</li>
<li>Callback jobs perform asynchronously. It's possible that <code>:finish</code> and <code>:success</code> or <code>:discard</code> callback jobs perform at the same time. Keep this in mind when updating batch properties.</li>
<li>Batch properties are serialized using Active Job serialization. This is flexible, but can lead to deserialization errors if a GlobalID record is directly referenced but is subsequently deleted and thus unloadable.</li>
<li>🚧Batches are a work in progress. Please let us know what would be helpful to improve their functionality and usefulness.</li>
</ul>
<h3>Updating</h3>
<p>GoodJob follows semantic versioning, though updates may be encouraged through deprecation warnings in minor versions.</p>
<h4>Upgrading minor versions</h4>
<p>Upgrading between minor versions (e.g. v1.4 to v1.5) should not introduce breaking changes, but can introduce new deprecation warnings and database migration warnings.</p>
<p>Database migrations introduced in minor releases are <em>not required</em> to be applied until the next major release. If you would like to apply newly introduced migrations immediately, assert <code>GoodJob.migrated?</code> in your application's test suite.</p>
<p>To perform upgrades to the GoodJob database tables:</p>
<ol>
<li> <p>Generate new database migration files:</p> <pre><code class="language-bash">bin/rails g good_job:update
</code></pre> <p>Optional: If using Rails' multiple databases with the <code>migrations_paths</code> configuration option, use the <code>--database</code> option:</p> <pre><code class="language-bash">bin/rails g good_job:update --database animals
</code></pre> </li>
<li> <p>Run the database migration locally</p> <pre><code class="language-bash">bin/rails db:migrate
</code></pre> </li>
<li> <p>Commit the migration files and resulting <code>db/schema.rb</code> changes.</p> </li>
<li> <p>Deploy the code, run the migrations against the production database, and restart server/worker processes.</p> </li>
</ol>
<h4>Upgrading v2 to v3</h4>
<p>GoodJob v3 is operationally identical to v2; upgrading to GoodJob v3 should be simple. If you are already using <code>>= v2.9+</code> no other changes are necessary.</p>
<ol>
<li>Upgrade to <code>v2.99.x</code>, following the minor version upgrade process, running any remaining database migrations (<code>rails g good_job:update</code>) and addressing deprecation warnings.</li>
<li>Upgrade from <code>v2.99.x</code> to <code>v3.x</code></li>
</ol>
<p>Notable changes:</p>
<ul>
<li>Defaults to preserve job records, and automatically delete them after 14 days.</li>
<li>Defaults to discarding failed jobs, instead of immediately retrying them.</li>
<li><code>:inline</code> execution mode respects job schedules. Tests can invoke <code>GoodJob.perform_inline</code> to execute jobs.</li>
<li><code>GoodJob::Adapter</code> can no longer can be initialized with custom execution options (<code>queues:</code>, <code>max_threads:</code>, <code>poll_interval:</code>).</li>
<li>Renames <code>GoodJob::ActiveJobJob</code> to <code>GoodJob::Job</code>.</li>
<li>Removes support for Rails 5.2.</li>
</ul>
<h4>Upgrading v1 to v2</h4>
<p>GoodJob v2 introduces a new Advisory Lock key format that is operationally different than the v1 advisory lock key format; it's therefore necessary to perform a simple, but staged production upgrade. If you are already using <code>>= v1.12+</code> no other changes are necessary.</p>
<ol>
<li>Upgrade your production environment to <code>v1.99.x</code> following the minor version upgrade process, including database migrations. <code>v1.99</code> is a transitional release that is safely compatible with both <code>v1.x</code> and <code>v2.0.0</code> because it uses both <code>v1</code>- and <code>v2</code>-formatted advisory locks.</li>
<li>Address any deprecation warnings generated by <code>v1.99</code>.</li>
<li>Upgrade your production environment from <code>v1.99.x</code> to <code>v2.0.x</code> again following the <em>minor</em> upgrade process.</li>
</ol>
<p>Notable changes:</p>
<ul>
<li>Renames <code>:async_server</code> execution mode to <code>:async</code>; renames prior <code>:async</code> execution mode to <code>:async_all</code>.</li>
<li>Sets default Development environment's execution mode to <code>:async</code> with disabled polling.</li>
<li>Excludes performing jobs from <code>enqueue_limit</code>'s count in <code>GoodJob::ActiveJobExtensions::Concurrency</code>.</li>
<li>Triggers <code>GoodJob.on_thread_error</code> for unhandled Active Job exceptions.</li>
<li>Renames <code>GoodJob.reperform_jobs_on_standard_error</code> accessor to <code>GoodJob.retry_on_unhandled_error</code>.</li>
<li>Renames <code>GoodJob::Adapter.shutdown(wait:)</code> argument to <code>GoodJob::Adapter.shutdown(timeout:)</code>.</li>
<li>Changes Advisory Lock key format from <code>good_jobs[ROW_ID]</code> to <code>good_jobs-[ACTIVE_JOB_ID]</code>.</li>
<li>Expects presence of columns <code>good_jobs.active_job_id</code>, <code>good_jobs.concurrency_key</code>, <code>good_jobs.concurrency_key</code>, and <code>good_jobs.retried_good_job_id</code>.</li>
</ul>
<h2>Go deeper</h2>
<h3>Exceptions, retries, and reliability</h3>
<p>GoodJob guarantees that a completely-performed job will run once and only once. GoodJob fully supports Active Job's built-in functionality for error handling, retries and timeouts.</p>
<h4>Exceptions</h4>
<p>Active Job provides <a href="https://guides.rubyonrails.org/active_job_basics.html#exceptions">tools for rescuing and retrying exceptions</a>, including <code>retry_on</code>, <code>discard_on</code>, <code>rescue_from</code> that will rescue exceptions before they get to GoodJob.</p>
<p>If errors do reach GoodJob, you can assign a callable to <code>GoodJob.on_thread_error</code> to be notified. For example, to log errors to an exception monitoring service like Sentry (or Bugsnag, Airbrake, Honeybadger, etc.):</p>
<pre><code class="language-ruby"># config/initializers/good_job.rb
GoodJob.on_thread_error = -> (exception) { Rails.error.report(exception) }
</code></pre>
<h4>Retries</h4>
<p>By default, GoodJob relies on Active Job's retry functionality.</p>
<p>Active Job can be configured to retry an infinite number of times, with a polynomial backoff. Using Active Job's <code>retry_on</code> prevents exceptions from reaching GoodJob:</p>
<pre><code class="language-ruby">class ApplicationJob < ActiveJob::Base
retry_on StandardError, wait: :exponentially_longer, attempts: Float::INFINITY
# ...
end
</code></pre>
<p>When using <code>retry_on</code> with <em>a limited number of retries</em>, the final exception will not be rescued and will raise to GoodJob's error handler. To avoid this, pass a block to <code>retry_on</code> to handle the final exception instead of raising it to GoodJob:</p>
<pre><code class="language-ruby">class ApplicationJob < ActiveJob::Base
retry_on StandardError, attempts: 5 do |_job, _exception|
# Log error, do nothing, etc.
end
# ...
end
</code></pre>
<p>When using <code>retry_on</code> with an infinite number of retries, exceptions will never be raised to GoodJob, which means <code>GoodJob.on_thread_error</code> will never be called. To report log or report exceptions to an exception monitoring service (e.g. Sentry, Bugsnag, Airbrake, Honeybadger, etc), create an explicit exception wrapper. For example:</p>
<pre><code class="language-ruby">class ApplicationJob < ActiveJob::Base
retry_on StandardError, wait: :exponentially_longer, attempts: Float::INFINITY
retry_on SpecialError, attempts: 5 do |_job, exception|
Rails.error.report(exception)
end
around_perform do |_job, block|
block.call
rescue StandardError => e
Rails.error.report(e)
raise
end
# ...
end
</code></pre>
<p>By default, jobs will not be retried unless <code>retry_on</code> is configured. This can be overridden by setting <code>GoodJob.retry_on_unhandled_error</code> to <code>true</code>; GoodJob will then retry the failing job immediately and infinitely, potentially causing high load.</p>
<h4>Action Mailer retries</h4>
<p>Any configuration in <code>ApplicationJob</code> will have to be duplicated on <code>ActionMailer::MailDeliveryJob</code> because ActionMailer uses that custom class which inherits from <code>ActiveJob::Base</code>, rather than your application's <code>ApplicationJob</code>.</p>
<p>You can use an initializer to configure <code>ActionMailer::MailDeliveryJob</code>, for example:</p>
<pre><code class="language-ruby"># config/initializers/good_job.rb
ActionMailer::MailDeliveryJob.retry_on StandardError, wait: :exponentially_longer, attempts: Float::INFINITY
# With Sentry (or Bugsnag, Airbrake, Honeybadger, etc.)
ActionMailer::MailDeliveryJob.around_perform do |_job, block|
block.call
rescue StandardError => e
Rails.error.report(e)
raise
end
</code></pre>
<p>Note, that <code>ActionMailer::MailDeliveryJob</code> is a default since Rails 6.0. Be sure that your app is using that class, as it might also be configured to use (deprecated now) <code>ActionMailer::DeliveryJob</code>.</p>
<h3>Interrupts</h3>
<p>Jobs will be automatically retried if the process is interrupted while performing a job, for example as the result of a <code>SIGKILL</code> or power failure.</p>
<p>If you need more control over interrupt-caused retries, include the <code>GoodJob::ActiveJobExtensions::InterruptErrors</code> extension in your job class. When an interrupted job is retried, the extension will raise a <code>GoodJob::InterruptError</code> exception within the job, which allows you to use Active Job's <code>retry_on</code> and <code>discard_on</code> to control the behavior of the job.</p>
<pre><code class="language-ruby">class MyJob < ApplicationJob
# The extension must be included before other extensions
include GoodJob::ActiveJobExtensions::InterruptErrors
# Discard the job if it is interrupted
discard_on GoodJob::InterruptError
# Retry the job if it is interrupted
retry_on GoodJob::InterruptError, wait: 0, attempts: Float::INFINITY
end
</code></pre>
<h3>Timeouts</h3>
<p>Job timeouts can be configured with an <code>around_perform</code>:</p>
<pre><code class="language-ruby">class ApplicationJob < ActiveJob::Base
JobTimeoutError = Class.new(StandardError)
around_perform do |_job, block|
# Timeout jobs after 10 minutes
Timeout.timeout(10.minutes, JobTimeoutError) do
block.call
end
end
end
</code></pre>
<h3>Optimize queues, threads, and processes</h3>
<p>By default, GoodJob creates a single thread execution pool that will execute jobs from any queue. Depending on your application's workload, job types, and service level objectives, you may wish to optimize execution resources. For example, providing dedicated execution resources for transactional emails so they are not delayed by long-running batch jobs. Some options:</p>
<ul>
<li> <p>Multiple isolated execution pools within a single process:</p> <p>For moderate workloads, multiple isolated thread execution pools offers a good balance between congestion management and economy.</p> <p>A pool is configured with the following syntax <code><participating_queues>:<thread_count></code>:</p>
<ul>
<li><code><participating_queues></code>: either <code>queue1,queue2</code> (only those queues), <code>+queue1,queue2</code> (only those queues, and processed in order), <code>*</code> (all) or <code>-queue1,queue2</code> (all except those queues).</li>
<li><code><thread_count></code>: a count overriding for this specific pool the global <code>max-threads</code>.</li>
</ul> <p>Pool configurations are separated with a semicolon (;) in the <code>queues</code> configuration</p> <pre><code class="language-bash">$ bundle exec good_job \
--queues="transactional_messages:2;batch_processing:1;-transactional_messages,batch_processing:2;*" \
--max-threads=5
</code></pre> <p>This configuration will result in a single process with 4 isolated thread execution pools.</p>
<ul>
<li><code>transactional_messages:2</code>: execute jobs enqueued on <code>transactional_messages</code>, with up to 2 threads.</li>
<li><code>batch_processing:1</code> execute jobs enqueued on <code>batch_processing</code>, with a single thread.</li>
<li><code>-transactional_messages,batch_processing:2</code>: execute jobs enqueued on <em>any</em> queue <em>excluding</em> <code>transactional_messages</code> or <code>batch_processing</code>, with up to 2 threads.</li>
<li><code>*</code>: execute jobs on any queue, with up to 5 threads (as configured by <code>--max-threads=5</code>).</li>
</ul> <p>When a pool is performing jobs from multiple queues, jobs will be performed from specified queues, ordered by priority and creation time. To perform jobs from queues in the queues' given order, use the <code>+</code> modifier. In this example, jobs in <code>batch_processing</code> will be performed only when there are no jobs in <code>transactional_messages</code>:</p> <pre><code class="language-bash">bundle exec good_job --queues="+transactional_messages,batch_processing"
</code></pre> <p>Configuration can be injected by environment variables too:</p> <pre><code class="language-bash">$ GOOD_JOB_QUEUES="transactional_messages:2;batch_processing:1;-transactional_messages,batch_processing:2;*" \
GOOD_JOB_MAX_THREADS=5 \
bundle exec good_job
</code></pre> </li>
<li> <p>Multiple processes:</p> <p>While multiple isolated thread execution pools offer a way to provide dedicated execution resources, those resources are bound to a single machine. To scale them independently, define several processes.</p> <p>For example, this configuration on Heroku allows to customize the dyno count (instances), or type (CPU/RAM), per process type:</p> <pre><code class="language-procfile"># Procfile
# Separate process types
worker: bundle exec good_job --max-threads=5
transactional_worker: bundle exec good_job --queues="transactional_messages" --max-threads=2
batch_worker: bundle exec good_job --queues="batch_processing" --max-threads=1
</code></pre> <p>To optimize for CPU performance at the expense of greater memory and system resource usage, while keeping a single process type (and thus a single dyno), combine several processes and wait for them:</p> <pre><code class="language-procfile"># Procfile
# Combined multi-process
combined_worker: bundle exec good_job --max-threads=5 & bundle exec good_job --queues="transactional_messages" --max-threads=2 & bundle exec good_job --queues="batch_processing" --max-threads=1 & wait -n
</code></pre> </li>
</ul>
<p>Keep in mind, queue operations and management is an advanced discipline. This stuff is complex, especially for heavy workloads and unique processing requirements. Good job 👍</p>
<h3>Database connections</h3>
<p>GoodJob job executor processes require the following database connections:</p>
<ul>
<li>1 connection per execution pool thread. E.g., <code>--queues=mice:2;elephants:1</code> is 3 threads and thus 3 connections. Pool size defaults to <code>--max-threads</code>.</li>
<li>2 additional connections that GoodJob uses for utility functionality (e.g. LISTEN/NOTIFY, cron, etc.)</li>
<li>1 connection per subthread, if your application makes multithreaded database queries (e.g. <code>load_async</code>) within a job.</li>
</ul>
<p>The executor process will not crash if the connections pool is exhausted, instead it will report an exception (eg. <code>ActiveRecord::ConnectionTimeoutError</code>).</p>
<p>When GoodJob runs in <code>:inline</code> mode (in Rails' test environment, by default), the default database pool configuration works.</p>
<pre><code class="language-yml"># config/database.yml
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
</code></pre>
<p>When GoodJob runs in <code>:async</code> mode (in Rails's development environment, by default), the following database pool configuration works, where:</p>
<ul>
<li><code>ENV.fetch("RAILS_MAX_THREADS", 5)</code> is the number of threads used by the web server</li>
<li><code>1</code> is the number of connections used by the job listener</li>
<li><code>2</code> is the number of connections used by the cron scheduler and executor</li>
<li><code>ENV.fetch("GOOD_JOB_MAX_THREADS", 5)</code> is the number of threads used to perform jobs</li>
</ul>
<pre><code class="language-yaml"># config/database.yml
pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5).to_i + 1 + 2 + ENV.fetch("GOOD_JOB_MAX_THREADS", 5).to_i %>
</code></pre>
<p>When GoodJob runs in <code>:external</code> mode (in Rails' production environment, by default), the following database pool configurations work for web servers and worker processes, respectively.</p>
<pre><code class="language-yaml"># config/database.yml
pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %>
</code></pre>
<pre><code class="language-yaml"># config/database.yml
pool: <%= 1 + 2 + ENV.fetch("GOOD_JOB_MAX_THREADS", 5).to_i %>
</code></pre>
<h3>Production setup</h3>
<p>When running GoodJob in a production environment, you should be mindful of:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#execute-jobs-async--in-process">Execution mode</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#database-connections">Database connection pool size</a></li>
<li><a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#cli-http-health-check-probes">Health check probes</a> and potentially the <a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#monitor-and-preserve-worked-jobs">instrumentation support</a></li>
</ul>
<p>The recommended way to monitor the queue in production is:</p>
<ul>
<li>have an exception notifier callback (see <a href="https://raw.githubusercontent.com/bensheldon/good_job/main/#configuration-options"><code>on_thread_error</code></a>)</li>
<li>if possible, run the queue as a dedicated instance and use available HTTP health check probes instead of PID-based monitoring</li>
<li>keep an eye on the number of jobs in the queue (abnormal high number of unscheduled jobs means the queue could be underperforming)</li>
<li>consider performance monitoring services which support the built-in Rails instrumentation (eg. Sentry, Skylight, etc.)</li>
</ul>
<h3>Queue performance with Queue Select Limit</h3>
<p>GoodJob’s advisory locking strategy uses a materialized CTE (Common Table Expression). This strategy can be non-performant when querying a very large queue of executable jobs (100,000+) because the database query must materialize all executable jobs before acquiring an advisory lock.</p>
<p>GoodJob offers an optional optimization to limit the number of jobs that are queried: Queue Select Limit.</p>
<pre><code class="language-none"># CLI option
--queue-select-limit=1000
# Rails configuration
config.good_job.queue_select_limit = 1000
# Environment Variable
GOOD_JOB_QUEUE_SELECT_LIMIT=1000
</code></pre>
<p>The Queue Select Limit value should be set to a rough upper-bound that exceeds all GoodJob execution threads / database connections. <code>1000</code> is a number that likely exceeds the available database connections on most PaaS offerings, but still offers a performance boost for GoodJob when executing very large queues.</p>
<p>To explain where this value is used, here is the pseudo-query that GoodJob uses to find executable jobs:</p>
<pre><code class="language-sql"> SELECT *
FROM good_jobs
WHERE id IN (
WITH rows AS MATERIALIZED (
SELECT id, active_job_id
FROM good_jobs
WHERE (scheduled_at <= NOW() OR scheduled_at IS NULL) AND finished_at IS NULL
ORDER BY priority DESC NULLS LAST, created_at ASC
[LIMIT 1000] -- <= introduced when queue_select_limit is set
)
SELECT id
FROM rows
WHERE pg_try_advisory_lock(('x' || substr(md5('good_jobs' || '-' || active_job_id::text), 1, 16))::bit(64)::bigint)
LIMIT 1
)
</code></pre>
<h3>Execute jobs async / in-process</h3>
<p>GoodJob can execute jobs "async" in the same process as the web server (e.g. <code>bin/rails s</code>). GoodJob's async execution mode offers benefits of economy by not requiring a separate job worker process, but with the tradeoff of increased complexity. Async mode can be configured in two ways:</p>
<ul>
<li> <p>Via Rails configuration:</p> <pre><code class="language-ruby"># config/environments/production.rb
config.active_job.queue_adapter = :good_job
# To change the execution mode
config.good_job.execution_mode = :async
# Or with more configuration
config.good_job = {
execution_mode: :async,
max_threads: 4,
poll_interval: 30
}
</code></pre> </li>
<li> <p>Or, with environment variables:</p> <pre><code class="language-bash">GOOD_JOB_EXECUTION_MODE=async GOOD_JOB_MAX_THREADS=4 GOOD_JOB_POLL_INTERVAL=30 bin/rails server
</code></pre> </li>
</ul>
<p>Depending on your application configuration, you may need to take additional steps:</p>
<ul>
<li> <p>Ensure that you have enough database connections for both web and job execution threads:</p> <pre><code class="language-yaml"># config/database.yml
pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5).to_i + ENV.fetch("GOOD_JOB_MAX_THREADS", 4).to_i %>
</code></pre> </li>
<li> <p>When running Puma with workers (<code>WEB_CONCURRENCY > 0</code>) or another process-forking web server, GoodJob's threadpool schedulers should be stopped before forking, restarted after fork, and cleanly shut down on exit. Stopping GoodJob's scheduler pre-fork is recommended to ensure that GoodJob does not continue executing jobs in the parent/controller process. For example, with Puma:</p> <pre><code class="language-ruby"># config/puma.rb
before_fork do
GoodJob.shutdown
end
on_worker_boot do
GoodJob.restart
end
on_worker_shutdown do
GoodJob.shutdown
end
MAIN_PID = Process.pid
at_exit do
GoodJob.shutdown if Process.pid == MAIN_PID
end
</code></pre> <p>GoodJob is compatible with Puma's <code>preload_app!</code> method.</p> <p>For Passenger:</p> <pre><code class="language-Ruby">if defined? PhusionPassenger
PhusionPassenger.on_event :starting_worker_process do |forked|
# If `forked` is true, we're in smart spawning mode.
# https://www.phusionpassenger.com/docs/advanced_guides/in_depth/ruby/spawn_methods.html#smart-spawning-hooks
if forked
GoodJob.logger.info { 'Starting Passenger worker process.' }
GoodJob.restart
end
end
PhusionPassenger.on_event :stopping_worker_process do
GoodJob.logger.info { 'Stopping Passenger worker process.' }
GoodJob.shutdown
end
end
# GoodJob also starts in the Passenger preloader process. This one does not
# trigger the above events, thus we catch it with `Kernel#at_exit`.
PRELOADER_PID = Process.pid
at_exit do
if Process.pid == PRELOADER_PID
GoodJob.logger.info { 'Passenger AppPreloader shutting down.' }
GoodJob.shutdown
end
end
</code></pre> <p>If you are using cron-style jobs, you might also want to look at your Passenger configuration, especially at <a href="https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_pool_idle_time"><code>passenger_pool_idle_time</code></a> and <a href="https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_min_instances"><code>passenger_min_instances</code></a> to make sure there's always at least once process running that can execute cron-style scheduled jobs. See also <a href="https://www.phusionpassenger.com/library/config/nginx/optimization/#minimizing-process-spawning">Passenger's optimization guide</a> for more information.</p> </li>
</ul>
<h3>Migrate to GoodJob from a different Active Job backend</h3>
<p>If your application is already using an Active Job backend, you will need to install GoodJob to enqueue and perform newly created jobs <em>and</em> finish performing pre-existing jobs on the previous backend.</p>
<ol>
<li> <p>Enqueue newly created jobs on GoodJob either entirely by setting <code>ActiveJob::Base.queue_adapter = :good_job</code> or progressively via individual job classes:</p> <pre><code class="language-ruby"># jobs/specific_job.rb
class SpecificJob < ApplicationJob
self.queue_adapter = :good_job
# ...
end
</code></pre> </li>
<li> <p>Continue running executors for both backends. For example, on Heroku it's possible to run <a href="https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno">two processes</a> within the same dyno:</p> <pre><code class="language-procfile"> # Procfile
# ...
worker: bundle exec que ./config/environment.rb & bundle exec good_job & wait -n
</code></pre> </li>
<li> <p>Once you are confident that no unperformed jobs remain in the previous Active Job backend, code and configuration for that backend can be completely removed.</p> </li>
</ol>
<h3>Monitor and preserve worked jobs</h3>
<p>GoodJob is fully instrumented with <a href="https://edgeguides.rubyonrails.org/active_support_instrumentation.html#introduction-to-instrumentation"><code>ActiveSupport::Notifications</code></a>.</p>
<p>By default, GoodJob will preserve job records for 14 days after they are run, regardless of whether they succeed or raised an exception.</p>
<p>To instead delete job records immediately after they are finished:</p>
<pre><code class="language-ruby"># config/initializers/good_job.rb
config.good_job.preserve_job_records = false # defaults to true; can also be `false` or `:on_unhandled_error`
</code></pre>
<p>GoodJob will automatically delete preserved job records after 14 days. The retention period, as well as the frequency GoodJob checks for deletable records can be configured:</p>
<pre><code class="language-ruby">config.good_job.cleanup_preserved_jobs_before_seconds_ago = 14.days
config.good_job.cleanup_interval_jobs = 1_000 # Number of executed jobs between deletion sweeps.
config.good_job.cleanup_interval_seconds = 10.minutes # Number of seconds between deletion sweeps.
</code></pre>
<p>It is also possible to manually trigger a cleanup of preserved job records:</p>
<ul>
<li> <p>For example, in a Rake task:</p> <pre><code class="language-ruby">GoodJob.cleanup_preserved_jobs # Will use default retention period
GoodJob.cleanup_preserved_jobs(older_than: 7.days) # custom retention period
</code></pre> </li>
<li> <p>For example, using the <code>good_job</code> command-line utility:</p> <pre><code class="language-bash">bundle exec good_job cleanup_preserved_jobs --before-seconds-ago=86400
</code></pre> </li>
</ul>
<h3>Write tests</h3>
<p>By default, GoodJob uses its inline adapter in the test environment; the inline adapter is designed for the test environment. When enqueuing a job with GoodJob's inline adapter, the job will be executed immediately on the current thread; unhandled exceptions will be raised.</p>
<p>In GoodJob 2.0, the inline adapter will execute future scheduled jobs immediately. In the next major release, GoodJob 3.0, the inline adapter will not execute future scheduled jobs and instead enqueue them in the database.</p>
<p>To opt into this behavior immediately set: <code>config.good_job.inline_execution_respects_schedule = true</code></p>
<p>To perform jobs inline at any time, use <code>GoodJob.perform_inline</code>. For example, using time helpers within an integration test:</p>
<pre><code class="language-ruby">MyJob.set(wait: 10.minutes).perform_later
travel_to(15.minutes.from_now) { GoodJob.perform_inline }
</code></pre>
<p><em>Note: Rails <code>travel</code>/<code>travel_to</code> time helpers do not have millisecond precision, so you must leave at least 1 second between the schedule and time traveling for the job to be executed. This <a href="https://github.com/rails/rails/pull/44088">behavior may change in Rails 7.1</a>.</em></p>
<h3>PgBouncer compatibility</h3>
<p>GoodJob is not compatible with PgBouncer in <em>transaction</em> mode, but is compatible with PgBouncer's <em>connection</em> mode. GoodJob uses connection-based advisory locks and LISTEN/NOTIFY, both of which require full database connections.</p>
<p>A workaround to this limitation is to make a direct database connection available to GoodJob. With Rails 6.0's support for <a href="https://guides.rubyonrails.org/active_record_multiple_databases.html">multiple databases</a>, a direct connection to the database can be configured:</p>
<ol>
<li> <p>Define a direct connection to your database that is not proxied through PgBouncer, for example:</p> <pre><code class="language-yml"># config/database.yml
production:
primary:
url: postgres://pgbouncer_host/my_database
primary_direct:
url: postgres://database_host/my_database
</code></pre> </li>
<li> <p>Create a new Active Record base class that uses the direct database connection</p> <pre><code class="language-ruby"># app/models/application_direct_record.rb
class ApplicationDirectRecord < ActiveRecord::Base
self.abstract_class = true
connects_to database: :primary_direct
end
</code></pre> </li>
<li> <p>Configure GoodJob to use the newly created Active Record base class:</p> <pre><code class="language-ruby"># config/initializers/good_job.rb
GoodJob.active_record_parent_class = "ApplicationDirectRecord"
</code></pre> </li>
</ol>
<h3>CLI HTTP health check probes</h3>
<p>GoodJob's CLI offers an http health check probe to better manage process lifecycle in containerized environments like Kubernetes:</p>
<pre><code class="language-bash"># Run the CLI with a health check on port 7001
good_job start --probe-port=7001
# or via an environment variable
GOOD_JOB_PROBE_PORT=7001 good_job start
# Probe the status
curl localhost:7001/status
curl localhost:7001/status/started
curl localhost:7001/status/connected
</code></pre>
<p>Multiple health checks are available at different paths:</p>
<ul>
<li><code>/</code> or <code>/status</code>: the CLI process is running</li>
<li><code>/status/started</code>: the multithreaded job executor is running</li>
<li><code>/status/connected</code>: the database connection is established</li>
</ul>
<p>This can be configured, for example with Kubernetes:</p>
<pre><code class="language-yaml">spec:
containers:
- name: good_job
image: my_app:latest
env:
- name: RAILS_ENV
value: production
- name: GOOD_JOB_PROBE_PORT
value: 7001
command:
- good_job
- start
ports:
- name: probe-port
containerPort: 7001
startupProbe:
httpGet:
path: "/status/started"
port: probe-port
failureThreshold: 30
periodSeconds: 10
livenessProbe:
httpGet:
path: "/status/connected"
port: probe-port
failureThreshold: 1
periodSeconds: 10
</code></pre>
<h2>Contribute</h2>
<!-- Please keep this section in sync with CONTRIBUTING.md -->
<p>All contributions, from feedback to code and beyond, are welcomed and appreciated 🙏</p>
<ul>
<li>Review the <a href="https://github.com/bensheldon/good_job/projects/1">Prioritized Project Backlog</a>.</li>
<li>Open a new issue or contribute to an <a href="https://github.com/bensheldon/good_job/issues">existing Issue</a>. Questions or suggestions are fantastic.</li>
<li>Participate according to our <a href="https://raw.githubusercontent.com/bensheldon/good_job/main/CODE_OF_CONDUCT.md">Code of Conduct</a>.</li>
<li>Financially support the project via <a href="https://github.com/sponsors/bensheldon">Sponsorship</a>.</li>
</ul>
<p>For gem development and debugging information, please review the <a href="https://raw.githubusercontent.com/bensheldon/good_job/main/README.md#gem-development">README's Gem Development section</a>.</p>
<h3>Gem development</h3>
<h4>Development setup</h4>
<pre><code class="language-bash"># Clone the repository locally
git clone git@github.com:bensheldon/good_job.git
# Set up the gem development environment
bin/setup
</code></pre>
<h4>Rails development harness</h4>
<p>A Rails application exists within <code>demo</code> that is used for development, test, and GoodJob Demo environments.</p>
<pre><code class="language-bash"># Run a local development webserver
bin/rails s
# Disable job execution and cron for cleaner console output
GOOD_JOB_ENABLE_CRON=0 GOOD_JOB_EXECUTION_MODE=external bin/rails s
# Open the Rails console
bin/rails c
</code></pre>
<p>For developing locally within another Ruby on Rails project:</p>
<pre><code class="language-bash"># Within Ruby on Rails project directory
# Ensure that the Gemfile is set to git with a branch e.g.
# gem "good_job", git: "https://github.com/bensheldon/good_job.git", branch: "main"
# Then, override the Bundle config to point to the local filesystem's good_job repository
bundle config local.good_job /path/to/local/good_job/repository
# Confirm that the local copy is used
bundle install
# => Using good_job 0.1.0 from https://github.com/bensheldon/good_job.git (at /Users/You/Projects/good_job@dc57fb0)
</code></pre>
<h4>Running tests</h4>
<p>Tests can be run against the primary development environment:</p>
<pre><code class="language-bash"># Set up the gem development environment
bin/setup
# Run the tests
bin/rspec
</code></pre>
<p>Environment variables that may help with debugging:</p>
<ul>
<li><code>LOUD=1</code>: display all stdout/stderr output from all sources. This is helpful because GoodJob wraps some tests with <code>quiet { }</code> for cleaner test output, but it can hinder debugging.</li>
<li><code>SHOW_BROWSER=1</code>: Run system tests headfully with Chrome/Chromedriver. Use <code>binding.irb</code> in the system tests to pause.</li>
</ul>
<p>Appraisal can be used to run a test matrix of multiple versions of Rails:</p>
<pre><code class="language-bash"># Install Appraisal matrix of gemfiles
bin/appraisal
# Run tests against matrix
bin/appraisal bin/rspec
</code></pre>
<h3>Release</h3>
<p>Package maintainers can release this gem by running:</p>
<pre><code class="language-bash"># Sign into rubygems
$ gem signin
# Add a .env file with the following:
# CHANGELOG_GITHUB_TOKEN= # Github Personal Access Token
# Update version number, changelog, and create git commit:
$ bundle exec rake release_good_job[minor] # major,minor,patch
# ..and follow subsequent directions.
</code></pre>
<h2>License</h2>
<p>The gem is available as open source under the terms of the <a href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
+
+
+ omniauth/omniauth
+ 2023-12-24T01:58:51Z
+ tag:github.com,2023-12-24:/omniauth/omniauth
+
+ <p>OmniAuth is a flexible authentication system utilizing Rack middleware.</p><hr><h1>OmniAuth: Standardized Multi-Provider Authentication</h1>
<p><a href="https://rubygems.org/gems/omniauth"><img src="http://img.shields.io/gem/v/omniauth.svg?sanitize=true" alt="Gem Version"></a> <a href="https://github.com/omniauth/omniauth/actions/workflows/main.yml"><img src="https://github.com/omniauth/omniauth/actions/workflows/main.yml/badge.svg?sanitize=true" alt="Ruby"></a> <a href="https://github.com/omniauth/omniauth/actions/workflows/truffle_ruby.yml"><img src="https://github.com/omniauth/omniauth/actions/workflows/truffle_ruby.yml/badge.svg?sanitize=true" alt="TruffleRuby"></a> <a href="https://github.com/omniauth/omniauth/actions/workflows/jruby.yml"><img src="https://github.com/omniauth/omniauth/actions/workflows/jruby.yml/badge.svg?sanitize=true" alt="JRuby"></a> <a href="https://codeclimate.com/github/omniauth/omniauth"><img src="https://api.codeclimate.com/v1/badges/ffd33970723587806744/maintainability" alt="Code Climate"></a> <a href="https://coveralls.io/r/omniauth/omniauth"><img src="http://img.shields.io/coveralls/omniauth/omniauth.svg?sanitize=true" alt="Coverage Status"></a></p>
<p>This is the documentation for the in-development branch of OmniAuth. You can find the documentation for the latest stable release <a href="https://github.com/omniauth/omniauth/tree/v2.1.2">here</a></p>
<h2>An Introduction</h2>
<p>OmniAuth is a library that standardizes multi-provider authentication for web applications. It was created to be powerful, flexible, and do as little as possible. Any developer can create <strong>strategies</strong> for OmniAuth that can authenticate users via disparate systems. OmniAuth strategies have been created for everything from Facebook to LDAP.</p>
<p>In order to use OmniAuth in your applications, you will need to leverage one or more strategies. These strategies are generally released individually as RubyGems, and you can see a <a href="https://github.com/omniauth/omniauth/wiki/List-of-Strategies">community maintained list</a> on the wiki for this project.</p>
<p>One strategy, called <code>Developer</code>, is included with OmniAuth and provides a completely insecure, non-production-usable strategy that directly prompts a user for authentication information and then passes it straight through. You can use it as a placeholder when you start development and easily swap in other strategies later.</p>
<h2>Getting Started</h2>
<p>Each OmniAuth strategy is a Rack Middleware. That means that you can use it the same way that you use any other Rack middleware. For example, to use the built-in Developer strategy in a Sinatra application you might do this:</p>
<pre><code class="language-ruby">require 'sinatra'
require 'omniauth'
class MyApplication < Sinatra::Base
use Rack::Session::Cookie
use OmniAuth::Strategies::Developer
end
</code></pre>
<p>Because OmniAuth is built for <em>multi-provider</em> authentication, you may want to leave room to run multiple strategies. For this, the built-in <code>OmniAuth::Builder</code> class gives you an easy way to specify multiple strategies. Note that there is <strong>no difference</strong> between the following code and using each strategy individually as middleware. This is an example that you might put into a Rails initializer at <code>config/initializers/omniauth.rb</code>:</p>
<pre><code class="language-ruby">Rails.application.config.middleware.use OmniAuth::Builder do
provider :developer unless Rails.env.production?
provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
end
</code></pre>
<p>You should look to the documentation for each provider you use for specific initialization requirements.</p>
<h2>Integrating OmniAuth Into Your Application</h2>
<p>OmniAuth is an extremely low-touch library. It is designed to be a black box that you can send your application's users into when you need authentication and then get information back. OmniAuth was intentionally built not to automatically associate with a User model or make assumptions about how many authentication methods you might want to use or what you might want to do with the data once a user has authenticated. This makes OmniAuth incredibly flexible. To use OmniAuth, you need only to redirect users to <code>/auth/:provider</code>, where <code>:provider</code> is the name of the strategy (for example, <code>developer</code> or <code>twitter</code>). From there, OmniAuth will take over and take the user through the necessary steps to authenticate them with the chosen strategy.</p>
<p>Once the user has authenticated, what do you do next? OmniAuth simply sets a special hash called the Authentication Hash on the Rack environment of a request to <code>/auth/:provider/callback</code>. This hash contains as much information about the user as OmniAuth was able to glean from the utilized strategy. You should set up an endpoint in your application that matches to the callback URL and then performs whatever steps are necessary for your application.</p>
<p>The <code>omniauth.auth</code> key in the environment hash provides an Authentication Hash which will contain information about the just authenticated user including a unique id, the strategy they just used for authentication, and personal details such as name and email address as available. For an in-depth description of what the authentication hash might contain, see the <a href="https://github.com/omniauth/omniauth/wiki/Auth-Hash-Schema">Auth Hash Schema wiki page</a>.</p>
<p>Note that OmniAuth does not perform any actions beyond setting some environment information on the callback request. It is entirely up to you how you want to implement the particulars of your application's authentication flow.</p>
<h2>rack_csrf</h2>
<p><code>omniauth</code> is not OOTB-compatible with <a href="https://github.com/baldowl/rack_csrf">rack_csrf</a>. In order to do so, the following code needs to be added to the application bootstrapping code:</p>
<pre><code class="language-ruby">OmniAuth::AuthenticityTokenProtection.default_options(key: "csrf.token", authenticity_param: "_csrf")
</code></pre>
<h2>Rails (without Devise)</h2>
<p>To get started, add the following gems</p>
<p><strong>Gemfile</strong>:</p>
<pre><code class="language-ruby">gem 'omniauth'
gem "omniauth-rails_csrf_protection"
</code></pre>
<p>Then insert OmniAuth as a middleware</p>
<p><strong>config/initializers/omniauth.rb</strong>:</p>
<pre><code class="language-ruby">Rails.application.config.middleware.use OmniAuth::Builder do
provider :developer if Rails.env.development?
end
</code></pre>
<p>Additional providers can be added here in the future. Next we wire it all up using routes, a controller and a login view.</p>
<p><strong>config/routes.rb</strong>:</p>
<pre><code class="language-ruby"> get 'auth/:provider/callback', to: 'sessions#create'
get '/login', to: 'sessions#new'
</code></pre>
<p><strong>app/controllers/sessions_controller.rb</strong>:</p>
<pre><code class="language-ruby">class SessionsController < ApplicationController
def new
render :new
end
def create
user_info = request.env['omniauth.auth']
raise user_info # Your own session management should be placed here.
end
end
</code></pre>
<p><strong>app/views/sessions/new.html.erb</strong>:</p>
<pre><code class="language-erb"><%= form_tag('/auth/developer', method: 'post', data: {turbo: false}) do %>
<button type='submit'>Login with Developer</button>
<% end %>
</code></pre>
<p>Now if you visit <code>/login</code> and click the Login button, you should see the OmniAuth developer login screen. After submitting it, you are returned to your application at <code>Sessions#create</code>. The raise should now display all the Omniauth details you have available to integrate it into your own user management.</p>
<p>If you want out of the box usermanagement, you should consider using Omniauth through Devise. Please visit the <a href="https://github.com/heartcombo/devise#omniauth">Devise Github page</a> for more information.</p>
<h2>Rails API</h2>
<p>The following middleware are (by default) included for session management in Rails applications. When using OmniAuth with a Rails API, you'll need to add one of these required middleware back in:</p>
<ul>
<li><code>ActionDispatch::Session::CacheStore</code></li>
<li><code>ActionDispatch::Session::CookieStore</code></li>
<li><code>ActionDispatch::Session::MemCacheStore</code></li>
</ul>
<p>The trick to adding these back in is that, by default, they are passed <code>session_options</code> when added (including the session key), so you can't just add a <code>session_store.rb</code> initializer, add <code>use ActionDispatch::Session::CookieStore</code> and have sessions functioning as normal.</p>
<p>To be clear: sessions may work, but your session options will be ignored (i.e. the session key will default to <code>_session_id</code>). Instead of the initializer, you'll have to set the relevant options somewhere before your middleware is built (like <code>application.rb</code>) and pass them to your preferred middleware, like this:</p>
<p><strong>application.rb:</strong></p>
<pre><code class="language-ruby">config.session_store :cookie_store, key: '_interslice_session'
config.middleware.use ActionDispatch::Cookies # Required for all session management
config.middleware.use ActionDispatch::Session::CookieStore, config.session_options
</code></pre>
<p>(Thanks @mltsy)</p>
<h2>Logging</h2>
<p>OmniAuth supports a configurable logger. By default, OmniAuth will log to <code>STDOUT</code> but you can configure this using <code>OmniAuth.config.logger</code>:</p>
<pre><code class="language-ruby"># Rails application example
OmniAuth.config.logger = Rails.logger
</code></pre>
<h2>Origin Param</h2>
<p>The <code>origin</code> url parameter is typically used to inform where a user came from and where, should you choose to use it, they'd want to return to. Omniauth supports the following settings which can be configured on a provider level:</p>
<p><strong>Default</strong>:</p>
<pre><code class="language-ruby">provider :twitter, ENV['KEY'], ENV['SECRET']
POST /auth/twitter/?origin=[URL]
# If the `origin` parameter is blank, `omniauth.origin` is set to HTTP_REFERER
</code></pre>
<p><strong>Using a differently named origin parameter</strong>:</p>
<pre><code class="language-ruby">provider :twitter, ENV['KEY'], ENV['SECRET'], origin_param: 'return_to'
POST /auth/twitter/?return_to=[URL]
# If the `return_to` parameter is blank, `omniauth.origin` is set to HTTP_REFERER
</code></pre>
<p><strong>Disabled</strong>:</p>
<pre><code class="language-ruby">provider :twitter, ENV['KEY'], ENV['SECRET'], origin_param: false
POST /auth/twitter
# This means the origin should be handled by your own application.
# Note that `omniauth.origin` will always be blank.
</code></pre>
<h2>Resources</h2>
<p>The <a href="https://github.com/omniauth/omniauth/wiki">OmniAuth Wiki</a> has actively maintained in-depth documentation for OmniAuth. It should be your first stop if you are wondering about a more in-depth look at OmniAuth, how it works, and how to use it.</p>
<h2>OmniAuth for Enterprise</h2>
<p>Available as part of the Tidelift Subscription.</p>
<p>The maintainers of OmniAuth and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use. <a href="https://tidelift.com/subscription/pkg/rubygems-omniauth?utm_source=undefined&utm_medium=referral&utm_campaign=enterprise&utm_term=repo">Learn more.</a></p>
<h2>Supported Ruby Versions</h2>
<p>OmniAuth is tested under 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, truffleruby, and JRuby.</p>
<h2>Versioning</h2>
<p>This library aims to adhere to <a href="http://semver.org/">Semantic Versioning 2.0.0</a>. Violations of this scheme should be reported as bugs. Specifically, if a minor or patch version is released that breaks backward compatibility, that version should be immediately yanked and/or a new version should be immediately released that restores compatibility. Breaking changes to the public API will only be introduced with new major versions. As a result of this policy, you can (and should) specify a dependency on this gem using the <a href="http://guides.rubygems.org/patterns/#pessimistic-version-constraint">Pessimistic Version Constraint</a> with two digits of precision. For example:</p>
<pre><code>spec.add_dependency 'omniauth', '~> 1.0'
</code></pre>
<h2>License</h2>
<p>Copyright (c) 2010-2017 Michael Bleigh and Intridea, Inc. See <a href="https://raw.githubusercontent.com/omniauth/omniauth/master/LICENSE.md">LICENSE</a> for details.</p>
+
+
\ No newline at end of file
diff --git a/runoff/daily/index.xml b/runoff/daily/index.xml
index d871e54164d..409a55d60bc 100644
--- a/runoff/daily/index.xml
+++ b/runoff/daily/index.xml
@@ -1,7 +1,7 @@
GitHub RUNOFF Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:37:56Z
+ 2023-12-24T01:41:19Z
Daily Trending of RUNOFF in GitHub
\ No newline at end of file
diff --git a/runoff/weekly/index.xml b/runoff/weekly/index.xml
new file mode 100644
index 00000000000..b9707d669a5
--- /dev/null
+++ b/runoff/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub RUNOFF Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:37Z
+ Weekly Trending of RUNOFF in GitHub
+
+
\ No newline at end of file
diff --git a/rust/daily/index.xml b/rust/daily/index.xml
index 683e0e1fe6f..8ccae78a02f 100644
--- a/rust/daily/index.xml
+++ b/rust/daily/index.xml
@@ -1,28 +1,14 @@
GitHub Rust Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:02Z
+ 2023-12-24T01:41:25Z
Daily Trending of Rust in GitHub
- stellar-amenities/assistants
- 2023-12-23T01:38:02Z
- tag:github.com,2023-12-23:/stellar-amenities/assistants
-
- <p>The ⭐️ Open Source Assistants API allows you to build AI assistants within your own applications with your own models. 75% Cheaper & 23x Faster Assistants. Same API/SDK.</p><hr><p align="center"> <img width="600" alt="assistants" src="https://github.com/stellar-amenities/assistants/assets/25003283/77d78c9a-cc44-492a-b085-8f22e9d5e4ef"> </p>
<h1 align="center">⭐️ Open Source Assistants API</h1>
<h2 align="center">Build Powerful AI Assistants In-House, On Your Terms</h2>
<h4 align="center">75% Cheaper & 23x Faster Assistants. Same API/SDK.</h4>
<p align="center"> <a href="https://codespaces.new/stellar-amenities/assistants?quickstart=1"><img src="https://github.com/codespaces/badge.svg?sanitize=true" alt="Open in GitHub Codespaces" style="max-width: 100%;"></a> <br> <a href="https://discord.gg/pj5VRqqs84"><img alt="Join Discord" src="https://img.shields.io/discord/1066022656845025310?color=blue&style=for-the-badge"></a> </p>
<hr>
<a href="https://cal.com/louis030195/unleash-llms">📞 Need Support? We're here for you.</a>
<br>
<a href="https://link.excalidraw.com/readonly/YSE7DNzB2LmEPfVdCqq3">🖼️ How it Works – Visual Guide</a>
<br>
<a href="https://github.com/stellar-amenities/assistants/issues/new?assignees=&labels=enhancement">✨ Suggest a Feature</a>
<br>
<a href="https://github.com/stellar-amenities/assistants/issues/new?assignees=&labels=bug">❤️🩹 Found a Bug? Let us know.</a>
<p></p>
<p></p>
<h1>Quickstart</h1>
<p>Get started in less than a minute through GitHub Codespaces:</p>
<p><a href="https://codespaces.new/stellar-amenities/assistants?quickstart=1"><img src="https://github.com/codespaces/badge.svg?sanitize=true" alt="Open in GitHub Codespaces"></a></p>
<h2>Why Open Source Assistants API?</h2>
<ul>
<li><strong>Full Control</strong>: Own your data, your models, and your destiny.</li>
<li><strong>No Hidden Costs</strong>: Absolutely free. Seriously, no strings attached.</li>
<li><strong>Customizable</strong>: Tailor the AI to your specific needs and use cases.</li>
<li><strong>Offline Capabilities</strong>: Perfect for edge cases or internet-free zones.</li>
<li><strong>OpenAI Compatibility</strong>: Love OpenAI's API? We play nice with that too.</li>
<li><strong>Simplicity</strong>: Easy setup, no steep learning curve.</li>
</ul>
<h2>What's Cooking? – Latest News</h2>
<ul>
<li>[2023/08/19] 🔥 New example: Open source LLM with code interpreter. <a href="https://raw.githubusercontent.com/stellar-amenities/assistants/main/examples/hello-world-code-interpreter-mixtral-nodejs/README.md">Learn more</a>.</li>
<li>[2023/08/12] 🔥 New example: Open source LLM with function calling. <a href="https://raw.githubusercontent.com/stellar-amenities/assistants/main/examples/hello-world-intel-neural-chat-nodejs-function-calling/README.md">Learn more</a>.</li>
<li>[2023/29/11] 🔥 New example: Using mistral-7b, an open source LLM. <a href="https://raw.githubusercontent.com/stellar-amenities/assistants/main/examples/hello-world-mistral-curl/README.md">Check it out</a>.</li>
</ul>
<h2>Key Features</h2>
<ul>
<li><input type="checkbox" checked disabled> <strong>Code Interpreter</strong>: Runs Python code in a sandboxed environment. (Beta)</li>
<li><input type="checkbox" checked disabled> <strong>Knowledge Retrieval</strong>: Retrieves external knowledge or documents.</li>
<li><input type="checkbox" checked disabled> <strong>Function Calling</strong>: Defines and executes custom functions.</li>
<li><input type="checkbox" checked disabled> <strong>File Handling</strong>: Supports a range of file formats.</li>
<li><input type="checkbox" disabled> <strong>Multimodal</strong>: Supports audio, images, and text.
<ul>
<li><input type="checkbox" disabled> image audio text</li>
<li><input type="checkbox" disabled> audio text</li>
<li><input type="checkbox" disabled> image text (soon)</li>
<li><input type="checkbox" checked disabled> text</li>
</ul> </li>
</ul>
<h2>What can you build with Assistants?</h2>
<ul>
<li><a href="https://ai.stellaramenities.space">Perplexity for Astronauts: Stellar Amenities uses Assistants to let the LLM automatically find the right information on the spacecraft to help Astronauts</a></li>
</ul>
<h2>Join the Movement</h2>
<ul>
<li><strong>For Developers</strong>: We've got the docs, tools, and a community ready to help you build what's next.</li>
<li><strong>For Innovators</strong>: Looking for an edge in AI? Here's where you leapfrog the competition.</li>
<li><strong>For the Visionaries</strong>: Dreamt of a custom AI assistant? Let's make it a reality.</li>
</ul>
<h2>Deployment</h2>
<p>Please follow <a href="https://github.com/stellar-amenities/assistants/raw/main/ee/k8s/README.md">this documentation</a>.</p>
<h2>FAQ</h2>
<details>
<summary>What's the difference with LangChain?</summary> LangChain offers detailed control over AI conversations, while OpenAI's Assistants API simplifies the process, managing conversation history, data/vector store, and tool switching for you.
</details>
<details>
<summary>Are you related to OpenAI?</summary> No.
</details>
<details>
<summary>I don't use Assistants API. Can I use this?</summary> We recommend switching to the Assistants API for a more streamlined experience, allowing you to focus more on your product than on infrastructure.
</details>
<details>
<summary>Does the Assistants API support audio and images?</summary> Images soon, working on it. Audio in a few weeks.
</details>
-
-
- GoXLR-on-Linux/goxlr-utility
- 2023-12-23T01:38:02Z
- tag:github.com,2023-12-23:/GoXLR-on-Linux/goxlr-utility
-
- <p>An unofficial GoXLR App replacement for Linux, Windows and MacOS</p><hr><p><a href="https://discord.gg/BRBjkkbvmZ"><img src="https://img.shields.io/discord/1124010710138106017.svg?label=Discord&logo=Discord&colorB=7289da&style=flat" alt="Support Server"></a> <a href="http://github.com/goxlr-on-linux/goxlr-utility/releases/latest"><img src="https://img.shields.io/github/v/tag/goxlr-on-linux/goxlr-utility?label=Latest" alt="GitHub tag (latest SemVer pre-release)"></a> <img src="https://img.shields.io/github/actions/workflow/status/goxlr-on-linux/goxlr-utility/build.yml" alt="GitHub Workflow Status (with event)"></p>
<h2>GoXLR Configuration Utility</h2>
<p>An unofficial tool to configure and control a TC-Helicon GoXLR or GoXLR Mini on Linux, MacOS and Windows. <a href="https://discord.gg/BRBjkkbvmZ">Click Here</a> to join our discord!</p>
<h2>Features</h2>
<ul>
<li>Full control over the GoXLR and GoXLR Mini (Similar to the official App)</li>
<li>Compatibility with profiles created by the official application</li>
<li>An accessible UI designed to work well with Assistive Technologies</li>
<li>Remote Access. Control your GoXLR from another computer on your network</li>
<li>A Sample 'Pre-Buffer'. Record audio from before you press the button</li>
<li>Exit Actions, including saving profiles and loading other profiles / lighting</li>
<li>Multiple Device Support. Run more than one GoXLR on one PC</li>
<li>A CLI and API for basic or advanced scripting and automation</li>
<li>Streamdeck Integration (through <a href="https://github.com/FrostyCoolSlug/goxlr-utility-streamdeck">https://github.com/FrostyCoolSlug/goxlr-utility-streamdeck</a>)</li>
</ul>
<h2>Downloads</h2>
<p>Downloads are available on the <a href="https://github.com/GoXLR-on-Linux/goxlr-utility/releases/latest">Releases Page</a> under the 'Assets' header, we currently provide the following files:</p>
<ul>
<li><code>.exe</code> files, usable on Windows<sup>1</sup></li>
<li><code>.deb</code> files, usable on Debian based systems (Ubuntu, Mint, Pop!_OS, etc)</li>
<li><code>.rpm</code> files, usable on Redhat based systems (CentOS, Fedora, etc)</li>
</ul>
<p>If you're an Arch user, updated versions of the utility are available via <a href="https://aur.archlinux.org/packages/goxlr-utility">AUR</a> using the <code>goxlr-utility</code> package.<br> If you're a MacOS user, check out the <a href="https://github.com/Adelenade/GoXlr-Macos">MacOS Project</a> for a more integrated implementation.</p>
<p><sup>1</sup> Windows requires the official device drivers provided by TC-Helicon. If you have the official app installed you don't need to do anything, otherwise download the latest drivers from TC-Helicon's website <a href="https://go.tc-helicon.com/GoXLR_driver_5.12">here</a>.</p>
<h2>Getting Started</h2>
<p>Once installed, you can launch the Utility using the <code>GoXLR Utility</code> item in your Applications Menu, this will launch the utility and configuration UI. The UI will then be accessible via the system tray icon, or (if you don't have a tray) by re-running the <code>GoXLR Utility</code> menu item.</p>
<p>If you're running on Linux, a first configuration step should be to enable <code>Autostart on Login</code> via System -> Settings. Windows users will get the choice during installation. If you change your mind, you can change the setting.</p>
<p>If you want to import your profiles from the official app, simply click on the folder icon in the top right of the relevant profiles pane (either Main or Mic) which will open the directory in your file browser. Copy the profile across from the Official App's directory (normally <code>Documents/GoXLR</code>) and they'll appear in the util ready to load, simply double click them.</p>
<p>If you're setting up from scratch, the best place to start is configuring your microphone. Head over to the <code>Mic</code> tab and hit <code>Mic Setup</code> to configure your microphone type and gain. It may be easier to configure if you first set your Gate Amount to 0, then reconfigure it once your mic is working. Once done, go explore the UI!</p>
<h2>The UI</h2>
<p>The Utility's UI is web based, and served directly from the utility to your web browser of choice (if configured, it can also be served to a web browser on another computer). The UI design was modelled around the official application in an attempt to provide a familiar interface for those moving from Windows to other platforms, rather than forcing people to learn a new configuration paradigm.</p>
<p><img src="https://user-images.githubusercontent.com/574943/255011559-90e69f0d-a42b-4be6-8d99-9e5da1a4df2c.png" alt="image"></p>
<h2>Building</h2>
<p>Build instructions and other useful information can be found on the project's <a href="https://github.com/GoXLR-on-Linux/goxlr-utility/wiki/Compilation-Guide">wiki</a>. While it's a little sparse at the moment, over time it should grow, and requests / feedback are always welcome!</p>
<h2>Disclaimer</h2>
<p>This project is also not supported by, or affiliated in any way with, TC-Helicon. For the official GoXLR software, please refer to their website.</p>
<p>In addition, this project accepts no responsibility or liability for use of this software, or any problems which may occur from its use. Please read the <a href="https://github.com/GoXLR-on-Linux/goxlr-utility/raw/main/LICENSE">LICENSE</a> for more information.</p>
-
-
- astriaorg/astria
- 2023-12-23T01:38:02Z
- tag:github.com,2023-12-23:/astriaorg/astria
-
- <p>A monorepo containing all the custom components of the Astria network, a decentralized system that replaces traditional sequencers, offering a shared, permissionless sequencer network.</p><hr><h1>Astria</h1>
<p>Astria replaces centralized sequencers, allowing many rollups to share a single decentralized network of sequencers that’s simple and permissionless to join. This shared sequencer network provides out-of-the-box censorship resistance, fast block confirmations, and atomic cross-rollup composability – all while retaining each rollup’s sovereignty.</p>
<p>This repository contains the custom Astria components that make up the Astria network. Other components of the Astria network can be found in the <a href="https://github.com/astriaorg">astriaorg</a> organization.</p>
<p>To run locally, we utilize a dev-cluster which can be found at <a href="https://github.com/astriaorg/dev-cluster">astriaorg/dev-cluster</a>.</p>
<p>To learn more about Astria, please visit <a href="https://astria.org">astria.org</a>.</p>
<h2>Components</h2>
<ul>
<li><a href="https://github.com/astriaorg/astria/tree/main/crates/astria-conductor">conductor</a>: conducts blocks from the data availability layer to the execution layer.</li>
<li><a href="https://github.com/astriaorg/astria/tree/main/crates/astria-proto">proto</a>: relevant protobufs for Astria types.</li>
<li><a href="https://github.com/astriaorg/astria/tree/main/crates/astria-sequencer">sequencer</a>: ABCI application that defines the sequencer state transition logic.</li>
<li><a href="https://github.com/astriaorg/astria/tree/main/crates/astria-sequencer-relayer">sequencer-relayer</a>: relays blocks from the sequencer chain to the data availability layer.</li>
</ul>
<h2>Build</h2>
<p>To build the relevant Astria binaries, you only need <a href="https://www.rust-lang.org/tools/install">Rust</a> installed.</p>
<p>Then:</p>
<pre><code class="language-sh">git clone https://github.com/astriaorg/astria.git
cd astria
cargo build --release
</code></pre>
<h3>Docker build</h3>
<p>To build a docker image locally you will first need docker installed. With docker installed you can use the following just command:</p>
<pre><code class="language-sh"># Full command:
just docker-build <CRATE> <TAG=local>
#
# Replace CRATE with what the target binary is ie `astria-sequencer`
# TAG defaults to `local` but can be changed.
# this command will build a local image tagged as 'astria-sequencer:local'
just docker-build astria-sequencer
# this command will build a local image tagged as 'astria-sequencer:debug'
just docker-build astria-sequencer debug
</code></pre>
<h2>Running locally</h2>
<p>The entire stack consists of many different binaries. It's recommended to use the setup located in <a href="https://github.com/astriaorg/dev-cluster">astriaorg/dev-cluster</a>.</p>
<h2>Testing</h2>
<p>To run unit tests:</p>
<pre><code class="language-sh">cargo test
</code></pre>
<p>Note that the <code>astria-proto</code> generates its code by running tests (and verifying that nothing changed). In order for its tests to run you also need <a href="https://buf.build/docs/installation/">Buf</a> installed.</p>
<h2>Formatting</h2>
<p>This project uses <a href="https://github.com/rust-lang/rustfmt">rustfmt</a> to format rust sources, <a href="https://github.com/tamasfe/taplo">taplo</a> to format toml files, and <a href="https://github.com/DavidAnson/markdownlint-cli2">markdownlint-cli2</a> for markdown.</p>
<h3>Rust</h3>
<pre><code class="language-sh"># Install rustfmt
rustup +nightly-2023-08-18 component add rustfmt
# Run rustfmt
just fmt rust
</code></pre>
<h3>Toml</h3>
<pre><code class="language-sh"># Install for macOS
brew install taplo
# Install for Arch Linux
sudo pacman -S taplo
# Run
just fmt toml
</code></pre>
<h3>Markdown</h3>
<pre><code class="language-sh"># Install for macOS w/ homebrew
brew install markdownlint-cli2
# Install for Arch Linux
sudo pacman -S markdownlint-cli2
# Install with NPM
npm install markdownlint-cli2 --global
# Run
just lint md
# Run with docker
docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.8.1 "**/*.md" "#.github"
</code></pre>
<h2>Contributing</h2>
<p>Pull requests should be created against the <code>main</code> branch. In general, we follow the "fork-and-pull" Git workflow.</p>
<ol>
<li>Fork the repo on GitHub</li>
<li>Clone the project to your own machine</li>
<li>Commit changes to your own branch</li>
<li>Push your work back up to your fork</li>
<li>Submit a Pull request so that we can review your changes</li>
</ol>
<p>NOTE: Be sure to merge the latest from upstream before making a pull request!</p>
<h2>Issues</h2>
<p>If you encounter any issues while using this project or have any questions, please open an issue in this repository <a href="https://github.com/astriaorg/astria/issues">here</a>.</p>
+ adam-mcdaniel/sage
+ 2023-12-24T01:41:25Z
+ tag:github.com,2023-12-24:/adam-mcdaniel/sage
+
+ <p>A programming language that's wise beyond its bytes!🌱🌿🪴</p><hr><div align="center">
<h1>🌿🌱<b>The Sage Programming Language</b>🪴🍃</h1>
<p> <strong>Sage advice for your coding conundrums!</strong> </p>
<p float="left"> <img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/code1.png" width="29.5%"> <a href="https://adam-mcdaniel.net/sage"><img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/sage.png" width="68%"></a> </p>
</div>
<p><a href="https://adam-mcdaniel.net/sage"><em><strong>Here's a link to the online compiler playground!</strong></em></a></p>
<h2>Table of Contents</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#community">Community</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#what-is-sage">What is Sage?</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#why-sage">Why Sage?</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#how-useful-is-sage">How useful is Sage?</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#how-do-i-use-sage">How do I use Sage?</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#what-does-sage-look-like">What does Sage look like?</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#feature-roadmap">Feature Roadmap</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#where-can-i-learn-more">Where can I learn more?</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#how-do-i-contribute">How do I contribute?</a></li>
<li><a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/#about-the-author">About the Author</a></li>
</ul>
<h2>Community</h2>
<p>Join the <a href="https://discord.gg/rSGkM4bcdP">Discord server</a> to chat about Sage! Let us know if you have any thoughts or comments about the language!</p>
<h2>What is Sage?</h2>
<p>Sage is a programming language that tries to be maximally portable, expressive, and intuitive. It borrows some aspects of Rust, C, and Python. It currently has an x86 compiler backend, a C source backend, and a VM interpreter backend <a href="https://adam-mcdaniel.net/sage">which can run on the web</a>.</p>
<div align="center">
<p float="left"> <img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/code2.png" width="32.5%"> <img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/code1.png" width="31.5%"> <img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/code3.png" width="28.5%"> </p>
</div>
<p>Sage is licensed under the <a href="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/LICENSE">MIT License</a>, and has been under development since April 2022.</p>
<h2>Why Sage?</h2>
<p>Sage is very portable -- run it on your thermostat! Here's the complete list of core virtual machine instructions and their C equivalents:</p>
<table>
<thead>
<tr>
<th>Instruction</th>
<th>C Equivalent</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>while</code></td>
<td><code>while (reg) {</code></td>
</tr>
<tr>
<td><code>if</code></td>
<td><code>if (reg) {</code></td>
</tr>
<tr>
<td><code>else</code></td>
<td><code>} else {</code></td>
</tr>
<tr>
<td><code>end</code></td>
<td><code>}</code></td>
</tr>
<tr>
<td><code>set N</code></td>
<td><code>reg = N;</code></td>
</tr>
<tr>
<td><code>call</code></td>
<td><code>funs[reg]();</code></td>
</tr>
<tr>
<td><code>ret</code></td>
<td><code>return;</code></td>
</tr>
<tr>
<td><code>save</code></td>
<td><code>*tape_ptr = reg;</code></td>
</tr>
<tr>
<td><code>res</code></td>
<td><code>reg = *tape_ptr;</code></td>
</tr>
<tr>
<td><code>move N</code></td>
<td><code>tape_ptr += N;</code></td>
</tr>
<tr>
<td><code>where</code></td>
<td><code>reg = tape_ptr;</code></td>
</tr>
<tr>
<td><code>deref</code></td>
<td><code>push(tape_ptr); tape_ptr = *tape_ptr;</code></td>
</tr>
<tr>
<td><code>refer</code></td>
<td><code>tape_ptr = pop();</code></td>
</tr>
<tr>
<td><code>index</code></td>
<td><code>reg = (cell*)(reg) + *tape_ptr;</code></td>
</tr>
<tr>
<td><code>add</code></td>
<td><code>reg += *tape_ptr;</code></td>
</tr>
<tr>
<td><code>sub</code></td>
<td><code>reg -= *tape_ptr;</code></td>
</tr>
<tr>
<td><code>mul</code></td>
<td><code>reg *= *tape_ptr;</code></td>
</tr>
<tr>
<td><code>div</code></td>
<td><code>reg /= *tape_ptr;</code></td>
</tr>
<tr>
<td><code>rem</code></td>
<td><code>reg %= *tape_ptr;</code></td>
</tr>
<tr>
<td><code>gez</code></td>
<td><code>reg = reg >= 0;</code></td>
</tr>
</tbody>
</table>
<p>The compiler can target this limited "core" instruction set, with an expanded "standard" instruction set for floating point operations and foreign functions. The core instruction set is designed to be as simple as possible for anyone to implement their own backend. <a href="https://github.com/adam-mcdaniel/sage/raw/main/src/targets/c.rs">Try to see if you can implement it yourself for your backend of choice!</a></p>
<p>The instruction set is a "zero address code" IR, unlike the popular <a href="https://en.wikipedia.org/wiki/Three-address_code">"three address code"</a> LLVM IR, but it's still possible to apply single static assignment to it. This makes the instruction set capable of applying LLVM's optimizations while being easy to implement.</p>
<p>This project is based on some ideas I had while working on <a href="https://github.com/adam-mcdaniel/harbor">Harbor</a> for a hackathon.</p>
<h2>How useful is Sage?</h2>
<p>Sage is a very young project, and is not ready for production. It's still possible to write very useful programs in it, though.</p>
<p><a href="https://github.com/adam-mcdaniel/sage-os">SageOS is an operating system with a userspace written in Sage.</a> Its graphical shell and presentation app (both written in Sage) use the FFI to draw to the screen, receive input from the mouse and keyboard, interact with the filesystem, and schedule new processes. <a href="https://github.com/adam-mcdaniel/sage/tree/main/examples/sage-os/shell.sg">You can look at the shell code here.</a></p>
<p><a href="https://github.com/adam-mcdaniel/sage-os"><img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/shell1.png" alt="Shell1"></a> <a href="https://github.com/adam-mcdaniel/sage-os"><img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/shell2.png" alt="Shell2"></a></p>
<p>The presentation app parses PPM image files from the filesystem and renders them to the screen. <a href="https://github.com/adam-mcdaniel/sage/tree/main/examples/sage-os/presentation.sg">You can look at the presentation code here.</a></p>
<p><a href="https://github.com/adam-mcdaniel/sage-os"><img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/presentation.png" alt="Presentation"></a></p>
<p>Sage's FFI is simple and can directly call C functions or backend-specific builtins. Check out the <a href="https://adam-mcdaniel.net/sage">web-demo</a>'s FFI example that calls some JavaScript code.</p>
<h2>How do I use Sage?</h2>
<p>To start using sage, install it with cargo:</p>
<pre><code class="language-bash">$ cargo install --git https://github.com/adam-mcdaniel/sage
</code></pre>
<p>Then, you can run a sage file with the <code>sage</code> command:</p>
<pre><code class="language-bash">$ sage examples/frontend/interactive-calculator.sg
</code></pre>
<p>You can also compile a sage file to C with the <code>--target</code> flag:</p>
<pre><code class="language-bash">$ sage examples/frontend/interactive-calculator.sg --target c
$ # Or `-t c` for short
$ sage examples/frontend/interactive-calculator.sg -tc
$ gcc out.c -o out
$ ./out
</code></pre>
<p>Check out the <a href="https://github.com/adam-mcdaniel/sage/tree/main/examples/web">code for the web-demo</a> to see how to use Sage in a web page.</p>
<h2>What does Sage look like?</h2>
<p>Here's an example of a polymorphic linked list in Sage using Rust-like <code>enum</code>s! It's straightforward to implement operations like <code>map</code> with just a few lines.</p>
<div align="center">
<img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/code1.png" width="66%">
</div>
<p>Here's an example of Sage's structural typing: a <code>Rectangle</code> can be created by concatenating the fields of a <code>Position</code> and a <code>Size</code>!</p>
<div align="center">
<img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/code2.png" width="66%">
</div>
<p>Here's an example of Sage's pattern matching: it's easy to deconstruct a value using <code>match</code>, <code>if let</code>, or a simple <code>let</code> binding. Sage's <code>match</code> expressions are very powerful!</p>
<div align="center">
<img src="https://raw.githubusercontent.com/adam-mcdaniel/sage/main/assets/code3.png" width="66%">
</div>
<p>Go to the <a href="https://adam-mcdaniel.net/sage">web-demo</a> or the <a href="https://github.com/adam-mcdaniel/sage/tree/main/examples/frontend">examples/frontend</a> folder to see more code examples.</p>
<h2>Feature Roadmap</h2>
<ul>
<li><input type="checkbox" checked disabled> Compiler Backends
<ul>
<li><input type="checkbox" checked disabled> x86 (semi-implemented and unoptimized)</li>
<li><input type="checkbox" disabled> RISC-V</li>
<li><input type="checkbox" disabled> ARM</li>
<li><input type="checkbox" disabled> LLVM (highly desired!)</li>
<li><input type="checkbox" checked disabled> C (fully-implemented but unoptimized)</li>
<li><input type="checkbox" checked disabled> Interpreter (fully-implemented but unoptimized)</li>
<li><input type="checkbox" checked disabled> Web Backend
<ul>
<li><input type="checkbox" checked disabled> Interpreter</li>
<li><input type="checkbox" disabled> Visual demo like the <a href="https://adam-mcdaniel.net/harbor">web-demo</a> for <a href="https://github.com/adam-mcdaniel/harbor">Harbor</a></li>
</ul> </li>
</ul> </li>
<li><input type="checkbox" checked disabled> Static variables and constant expressions</li>
<li><input type="checkbox" checked disabled> Conditional compilation</li>
<li><input type="checkbox" checked disabled> Polymorphic functions</li>
<li><input type="checkbox" checked disabled> Mutability checks</li>
<li><input type="checkbox" checked disabled> Rust-like <code>enum</code>s</li>
<li><input type="checkbox" checked disabled> Pattern <code>match</code>ing</li>
<li><input type="checkbox" checked disabled> Structural typing</li>
<li><input type="checkbox" checked disabled> Associated constants and methods</li>
<li><input type="checkbox" checked disabled> Recursive polymorphic types</li>
<li><input type="checkbox" disabled> Iterators and list/vector/array comprehensions</li>
<li><input type="checkbox" disabled> Hindley-Milner type inference</li>
<li><input type="checkbox" disabled> VSCode extension (syntax highlighting, code completion, etc.)</li>
<li><input type="checkbox" disabled> Typeclasses</li>
<li><input type="checkbox" disabled> <code>no-std</code> implementation of compiler</li>
<li><input type="checkbox" disabled> Modules</li>
<li><input type="checkbox" disabled> A standard library
<ul>
<li><input type="checkbox" disabled> Type Reflection Module</li>
<li><input type="checkbox" disabled> Collections Module</li>
<li><input type="checkbox" disabled> Networking Module</li>
<li><input type="checkbox" disabled> Filesystem Module</li>
<li><input type="checkbox" disabled> Graphics Module</li>
<li><input type="checkbox" disabled> Audio Module</li>
<li><input type="checkbox" disabled> GUI Module</li>
<li><input type="checkbox" disabled> WebAssembly Module</li>
<li><input type="checkbox" disabled> Foreign Function Interface Module (create backend with <code>.toml</code> file)</li>
<li><input type="checkbox" disabled> Memory Management Module</li>
</ul> </li>
<li><input type="checkbox" disabled> Better frontend parser (switch to <a href="https://crates.io/crates/nom">Nom</a>?)</li>
<li><input type="checkbox" disabled> A package manager</li>
<li><input type="checkbox" disabled> AST Macros</li>
<li><input type="checkbox" disabled> C frontend (compile C to Sage VM)</li>
<li><input type="checkbox" disabled> Self-hosting implementation</li>
</ul>
<h2>Where can I learn more?</h2>
<p>You can read <a href="https://adam-mcdaniel-blog.github.io/compilers-for-the-future">my blog post</a> (~20 minute read) about the programming language to learn more about the implementation!</p>
<p>Join the <a href="https://discord.gg/rSGkM4bcdP">Discord server</a> to chat about Sage!</p>
<h2>How do I contribute?</h2>
<p>If you want to contribute, you can open an issue or a pull request. <a href="https://github.com/adam-mcdaniel/sage/raw/main/src/targets/c.rs">Adding backends for other architectures is a great way to contribute!</a> We also need a VSCode syntax highlighting extension!</p>
<h2>About the Author</h2>
<p><a href="https://adam-mcdaniel.net">I'm a 21 year old computer science graduate student</a> at the <a href="https://www.youtube.com/watch?v=-8MlEo02u54">University of Tennessee, Knoxville🍊</a>. Rust is my favorite language, and <a href="https://github.com/adam-mcdaniel/oakc">I've</a> <a href="https://github.com/adam-mcdaniel/harbor">written</a> <a href="https://github.com/adam-mcdaniel/tsar">many</a> <a href="https://github.com/adam-mcdaniel/free">other</a> <a href="https://github.com/adam-mcdaniel/xasm">compilers</a>. This is the last project I started as a teenager, and I've been the only author to touch any of the code up to version <code>v0.0.2-alpha</code> (12/20/2023)! I'm looking for work opportunities for Summer 2024 (after I finish my Masters degree), so if you're interested in hiring me, please reach out to me at <a href="mailto:amcdan23@vols.utk.edu">amcdan23@vols.utk.edu</a>!</p>
\ No newline at end of file
diff --git a/rust/weekly/index.xml b/rust/weekly/index.xml
new file mode 100644
index 00000000000..87fee5c38a0
--- /dev/null
+++ b/rust/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Rust Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:58:42Z
+ Weekly Trending of Rust in GitHub
+
+
+ oxc-project/oxc
+ 2023-12-24T01:58:42Z
+ tag:github.com,2023-12-24:/oxc-project/oxc
+
+ <p>⚓ A collection of JavaScript tools written in Rust.</p><hr><p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Boshen/oxc-assets/main/preview-dark-transparent.png" width="600">
<img alt="OXC Logo" src="https://raw.githubusercontent.com/Boshen/oxc-assets/main/preview-white.png" width="600">
</picture> </p>
<div align="center">
<p><a href="https://github.com/oxc-project/oxc/raw/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true" alt="MIT licensed"></a> <a href="https://github.com/oxc-project/oxc/actions/workflows/ci.yml?query=event%3Apush+branch%3Amain"><img src="https://github.com/oxc-project/oxc/actions/workflows/ci.yml/badge.svg?event=push&branch=main" alt="Build Status"></a> <a href="https://codecov.io/gh/oxc-project/oxc"><img src="https://codecov.io/github/oxc-project/oxc/branch/main/graph/badge.svg?sanitize=true" alt="Code Coverage"></a> <a href="https://codspeed.io/oxc-project/oxc"><img src="https://img.shields.io/endpoint?url=https://codspeed.io/badge.json" alt="CodSpeed Badge"></a> <a href="https://github.com/sponsors/Boshen"><img src="https://img.shields.io/github/sponsors/Boshen" alt="Sponsors"></a></p>
<p><a href="https://discord.gg/9uXCAwqQZW"><img src="https://img.shields.io/discord/1079625926024900739?logo=discord&label=Discord" alt="Discord chat"></a> <a href="https://oxc-project.github.io/oxc/playground"><img src="https://img.shields.io/badge/Playground-blue?color=9BE4E0" alt="Playground"></a></p>
</div>
<h2>⚓ Oxc</h2>
<p>The Oxidation Compiler is creating a collection of high-performance tools for JavaScript and TypeScript.</p>
<p>Oxc is building a parser, linter, formatter, transpiler, minifier, resolver ... all written in Rust.</p>
<h2>💡 Philosophy</h2>
<p>This project shares the same philosophies as <a href="https://biomejs.dev/">Biome</a> and <a href="https://beta.ruff.rs">Ruff</a>.</p>
<ol>
<li>JavaScript tooling could be rewritten in a more performant language.</li>
<li>An integrated toolchain can tap into efficiencies that are not available to a disparate set of tools.</li>
</ol>
<h2>⚡️ Quick Start</h2>
<p>The linter is ready to catch mistakes for you. It comes with over 60 default rules and no configuration is required.</p>
<p>To start using, install <a href="https://www.npmjs.com/package/oxlint">oxlint</a> or via <code>npx</code>:</p>
<pre><code class="language-bash">npx oxlint@latest
</code></pre>
<p>To give you an idea of its capabilities, here is an example from the <a href="https://github.com/microsoft/vscode">vscode</a> repository, which finishes linting 4000+ files in 0.5 seconds.</p>
<p float="left" align="left"> <img src="https://raw.githubusercontent.com/Boshen/oxc-assets/main/linter-screenshot.png" width="60%"> </p>
<h2>⚡️ Performance</h2>
<ul>
<li>The parser aim to be the fastest Rust-based ready-for-production parser.</li>
<li>The linter is more than 50 times faster than <a href="https://eslint.org/">ESLint</a>, and scales with the number of CPU cores.</li>
</ul>
<p float="left" align="middle"> <img src="https://raw.githubusercontent.com/Boshen/bench-javascript-parser-written-in-rust/main/bar-graph.svg?sanitize=true" width="49%"> <img src="https://raw.githubusercontent.com/Boshen/bench-javascript-linter/main/bar-graph.svg?sanitize=true" width="49%"> </p>
<h2>⌨️ Programming Usage</h2>
<h3>Rust</h3>
<p>Individual crates are published, you may use them to build your own JavaScript tools.</p>
<ul>
<li>The umbrella crate <a href="https://docs.rs/oxc">oxc</a> exports all public crates from this repository.</li>
<li>The AST and parser crates <a href="https://docs.rs/oxc_ast">oxc_ast</a> and <a href="https://docs.rs/oxc_parser">oxc_parser</a> are production ready.</li>
<li>See <code>crates/*/examples</code> for example usage.</li>
</ul>
<p>While Rust has gained a reputation for its comparatively slower compilation speed, we have dedicated significant effort to fine-tune the Rust compilation speed. Our aim is to minimize any impact on your development workflow, ensuring that developing your own Oxc based tools remains a smooth and efficient experience.</p>
<p>This is demonstrated by our <a href="https://github.com/oxc-project/oxc/actions/workflows/ci.yml?query=branch%3Amain">CI runs</a>, where warm runs complete in 5 minutes.</p>
<h3>Node.js</h3>
<ul>
<li>You may use the parser via napi: <a href="https://www.npmjs.com/package/oxc-parser">oxc-parser</a></li>
</ul>
<hr>
<h2>🎯 Tools</h2>
<ul>
<li><a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-ast-and-parser">AST and Parser</a></li>
<li><a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-linter">Linter</a></li>
<li><a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-resolver">Resolver</a></li>
<li><a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-minifier">Minifier</a></li>
<li><a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-formatter">Formatter</a></li>
<li><a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-transpiler">Transpiler</a></li>
<li><a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-ezno-type-checker">Ezno Type Checker</a></li>
</ul>
<h3>🔸 AST and Parser</h3>
<p>Oxc maintains its own AST and parser, which is by far the fastest and most conformant JavaScript and TypeScript (including JSX and TSX) parser written in Rust.</p>
<p>As the parser often represents a key performance bottleneck in JavaScript tooling, any minor improvements can have a cascading effect on our downstream tools. By developing our parser, we have the opportunity to explore and implement well-researched performance techniques.</p>
<p>While many existing JavaScript tools rely on <a href="https://github.com/estree/estree">estree</a> as their AST specification, a notable drawback is its abundance of ambiguous nodes. This ambiguity often leads to confusion during development with <a href="https://github.com/estree/estree">estree</a>.</p>
<p>The Oxc AST differs slightly from the <a href="https://github.com/estree/estree">estree</a> AST by removing ambiguous nodes and introducing distinct types. For example, instead of using a generic <a href="https://github.com/estree/estree">estree</a> <code>Identifier</code>, the Oxc AST provides specific types such as <code>BindingIdentifier</code>, <code>IdentifierReference</code>, and <code>IdentifierName</code>. This clear distinction greatly enhances the development experience by aligning more closely with the ECMAScript specification.</p>
<h4>🏆 Parser Performance</h4>
<p>Our <a href="https://github.com/Boshen/bench-javascript-parser-written-in-rust">benchmark</a> reveals that the Oxc parser surpasses the speed of the <a href="https://swc.rs">swc</a> parser by approximately 2 times and the <a href="https://biomejs.dev/">Biome</a> parser by 3 times.</p>
<details>
<summary>How is it so fast?</summary>
<ul>
<li>AST is allocated in a memory arena (<a href="https://crates.io/crates/bumpalo">bumpalo</a>) for fast AST memory allocation and deallocation.</li>
<li>Short strings are inlined by <a href="https://crates.io/crates/compact_str">CompactString</a>.</li>
<li>No other heap allocations are done except the above two.</li>
<li>Scope binding, symbol resolution and some syntax errors are not done in the parser, they are delegated to the semantic analyzer.</li>
</ul>
</details>
<h3>🔸 Linter</h3>
<p>The linter embraces convention over configuration, eliminating the need for extensive configuration and plugin setup. Unlike other linters like <a href="https://eslint.org/">ESLint</a>, which often require intricate configurations and plugin installations (e.g. <a href="https://typescript-eslint.io">@typescript-eslint</a>), our linter only requires a single command that you can immediately run on your codebase:</p>
<pre><code class="language-bash">npx oxlint@latest
</code></pre>
<p>We also plan to port essential plugins such as <a href="https://www.npmjs.com/package/eslint-plugin-import">eslint-plugin-import</a> and <a href="https://www.npmjs.com/package/eslint-plugin-jest">eslint-plugin-jest</a>.</p>
<h4>🏆 Linter Performance</h4>
<p>The linter is 50 - 100 times faster than <a href="https://eslint.org/">ESLint</a> depending on the number of rules and number of CPU cores used. It completes in less than a second for most codebases with a few hundred files and completes in a few seconds for larger monorepos. See <a href="https://github.com/Boshen/bench-javascript-linter">bench-javascript-linter</a> for details.</p>
<p>As an upside, the binary is approximately 3MB, whereas <a href="https://eslint.org/">ESLint</a> and its associated plugin dependencies can easily exceed 100.</p>
<p>You may also download the linter binary from the <a href="https://github.com/oxc-project/oxc/releases/latest">latest release tag</a> as a standalone binary, this lets you run the linter without a Node.js installation in your CI.</p>
<details>
<summary>How is it so fast?</summary>
<ul>
<li>Oxc parser is used.</li>
<li>AST visit is a fast operation due to linear memory scan from the memory arena.</li>
<li>Files are linted in a multi-threaded environment, so scales with the total number of CPU cores.</li>
<li>Every single lint rule is tuned for performance.</li>
</ul>
</details>
<h4>Linter Plugin</h4>
<p>We are currently developing a DSL-based plugin system. The plugin system uses <a href="https://github.com/obi1kenobi/trustfall">trustfall</a> as its query engine and a subset of GraphQL as its query language.</p>
<p>You will not need to use JavaScript or Rust to write a plugin, this is useful for QAs and security researchers.</p>
<h3>🔸 Resolver</h3>
<p>Module resolution plays a crucial role in JavaScript tooling, especially for tasks like multi-file analysis or bundling. However, it can often become a performance bottleneck. To address this, we are actively working on porting <a href="https://github.com/webpack/enhanced-resolve">enhanced-resolve</a>.</p>
<p><a href="https://www.npmjs.com/package/eslint-plugin-import">eslint-plugin-import</a> will be our first application for the resolver, since it is currently a performance and complexity blocker for a lot of projects.</p>
<h3>🔸 Transpiler</h3>
<p>A transpiler is responsible for turning higher versions of ECMAScript to a lower version that can be used in older browsers. We are currently focusing on an esnext to es2015 transpiler. See the <a href="https://github.com/oxc-project/oxc/issues/974">umbrella issue</a> for details.</p>
<h3>🔸 Minifier</h3>
<p>JavaScript minification plays a crucial role in optimizing website performance as it reduces the amount of data sent to users, resulting in faster page loads. This holds tremendous economic value, particularly for e-commerce websites, where every second can equate to millions of dollars.</p>
<p>However, existing minifiers typically require a trade-off between compression quality and speed. You have to choose between the slowest for the best compression or the fastest for less compression. But what if we could develop a faster minifier without compromising on compression?</p>
<p>We are actively working on a prototype that aims to achieve this goal, by porting all test cases from well-known minifiers such as <a href="https://github.com/google/closure-compiler">google-closure-compiler</a>, <a href="https://terser.org">terser</a>, <a href="https://esbuild.github.io/">esbuild</a>, and <a href="https://github.com/tdewolff/minify">tdewolff-minify</a>.</p>
<p>Preliminary results indicate that we are on track to achieve our objectives. With the Oxc minifier, you can expect faster minification times without sacrificing compression quality.</p>
<h3>🔸 Formatter</h3>
<p>While <a href="https://prettier.io">prettier</a> has established itself as the de facto code formatter for JavaScript, there is a significant demand in the developer community for a less opinionated alternative. Recognizing this need, our ambition is to undertake research and development to create a new JavaScript formatter that offers increased flexibility and customization options. Unfortunately we are currently lacking the resources to do so.</p>
<h3>🔸 Ezno Type Checker</h3>
<p>Developed by @kaleidawave, <a href="https://github.com/kaleidawave/ezno">ezno</a> is a TypeScript checker written in Rust with a focus on static analysis and runtime performance. You may read the <a href="https://kaleidawave.github.io/posts/introducing-ezno/">announcement blog post</a> for more information.</p>
<p>The type checker is available via <code>npx oxidation-compiler@latest check path</code> and the <a href="https://oxc-project.github.io/oxc/playground">playground</a>.</p>
<hr>
<h2>✍️ Contribute</h2>
<p>See <a href="https://raw.githubusercontent.com/oxc-project/oxc/main/CONTRIBUTING.md">CONTRIBUTING.md</a> for guidance.</p>
<p>Check out some of the <a href="https://github.com/oxc-project/oxc/contribute">good first issues</a> or ask us on <a href="https://discord.gg/9uXCAwqQZW">Discord</a>.</p>
<p>If you are unable to contribute by code, you can still participate by:</p>
<ul>
<li>Add a <a href="https://github.com/oxc-project/oxc/stargazers">GitHub Star</a> to the project.</li>
<li>Join us on <a href="https://discord.gg/9uXCAwqQZW">Discord</a>.</li>
<li><a href="https://twitter.com/boshen_c">Follow me on twitter</a> and tweet about this project.</li>
</ul>
<h2>📚 Learning Resources</h2>
<ul>
<li>My small tutorial on <a href="https://oxc-project.github.io/javascript-parser-in-rust">how to write a JavaScript Parser in Rust</a></li>
<li>My small article <a href="https://rustmagazine.org/issue-3/javascript-compiler/">Pursuit of Performance on Building a JavaScript Compiler</a></li>
<li><a href="https://craftinginterpreters.com">Crafting Interpreters</a></li>
<li><a href="https://vimeo.com/649009599">Andrew Kelley - Practical DOD</a></li>
</ul>
<h2>🧑💻 Maintenance</h2>
<p>Oxc is being maintained by <a href="https://github.com/boshen">Boshen</a> as the project lead with the help of <a href="https://github.com/oxc-project/oxc/graphs/contributors">contributors</a> from all over the world.</p>
<p>Rules of thumb:</p>
<ul>
<li>APIs should be simple and well-documented.</li>
<li>All performance issues (runtime and compilation speed) are considered as bugs in this project.</li>
<li>Third-party dependencies should be minimal.</li>
<li>Monitor code coverage for unused code. Aim for 99% code coverage.</li>
<li>Embrace data-oriented design.</li>
<li>Prefer smaller PRs. Try <a href="https://graphite.dev">graphite.dev</a>.</li>
</ul>
<h2>🤝 Credits</h2>
<p>This project was incubated with the assistance of these exceptional mentors and their projects:</p>
<ul>
<li><a href="https://biomejs.dev/">Biome</a> - <a href="https://github.com/ematipico">@ematipico</a></li>
<li><a href="https://beta.ruff.rs">Ruff</a> - <a href="https://github.com/charliermarsh">@charliermarsh</a>, <a href="https://github.com/MichaReiser">@MichaReiser</a></li>
<li><a href="https://quick-lint-js.com">quick-lint-js</a> - <a href="https://github.com/strager">@strager</a></li>
<li><a href="https://package.elm-lang.org/packages/jfmengels/elm-review/latest">elm-review</a> - <a href="https://github.com/jfmengels">@jfmengels</a></li>
</ul>
<p>Special thanks go to</p>
<ul>
<li><a href="https://github.com/domonji">@domonji</a> for contribution to the TypeScript parser</li>
<li><a href="https://github.com/guan-wy">@guan-wy</a> for the <a href="https://github.com/Boshen/oxc-assets">project logo</a></li>
</ul>
<p>And also</p>
<ul>
<li><a href="https://github.com/kaleidawave">@kaleidawave</a> for <a href="https://raw.githubusercontent.com/oxc-project/oxc/main/#-ezno-type-checker">Ezno Type Checker</a></li>
<li><a href="https://github.com/zackradisic">@zackradisic</a> for <a href="https://github.com/zackradisic/tyvm">tyvm</a></li>
<li><a href="https://github.com/u9g">@u9g</a> for the work in progress <a href="https://raw.githubusercontent.com/oxc-project/oxc/main/crates/oxc_linter_plugin">oxc_linter_plugin</a></li>
</ul>
<h2>📖 License</h2>
<p>Oxc is free and open-source software licensed under the <a href="https://raw.githubusercontent.com/oxc-project/oxc/main/LICENSE">MIT License</a>.</p>
<p>Oxc partially copies code from the following projects, their licenses are listed in <a href="https://raw.githubusercontent.com/oxc-project/oxc/main/THIRD-PARTY-LICENSE"><strong>Third-party library licenses</strong></a>.</p>
<table>
<thead>
<tr>
<th>Project</th>
<th>License</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/eslint/eslint">eslint/eslint</a></td>
<td><a href="https://github.com/eslint/eslint/raw/main/LICENSE">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/typescript-eslint/typescript-eslint">typescript-eslint/typescript-eslint</a></td>
<td><a href="https://github.com/typescript-eslint/typescript-eslint/raw/main/LICENSE">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/import-js/eslint-plugin-import">import-js/eslint-plugin-import</a></td>
<td><a href="https://github.com/import-js/eslint-plugin-import/raw/main/LICENSE">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/jest-community/eslint-plugin-jest">jest-community/eslint-plugin-jest</a></td>
<td><a href="https://github.com/jest-community/eslint-plugin-jest/raw/main/LICENSE">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/microsoft/TypeScript">microsoft/TypeScript</a></td>
<td><a href="https://github.com/microsoft/TypeScript/raw/main/LICENSE.txt">Apache 2.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/biomejs/biome">biomejs/biome</a></td>
<td><a href="https://github.com/biomejs/biome/raw/main/LICENSE-MIT">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/mozilla-spidermonkey/jsparagus">mozilla-spidermonkey/jsparagus</a></td>
<td><a href="https://github.com/mozilla-spidermonkey/jsparagus/raw/master/LICENSE-MIT">MIT</a> <a href="https://github.com/mozilla-spidermonkey/jsparagus/raw/master/LICENSE-APACHE-2.0">Apache 2.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/prettier/prettier">prettier/prettier</a></td>
<td><a href="https://github.com/prettier/prettier/raw/main/LICENSE">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/acornjs/acorn">acorn</a></td>
<td><a href="https://github.com/acornjs/acorn/raw/master/acorn/LICENSE">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/zkat/miette">zkat/miette</a></td>
<td><a href="https://github.com/zkat/miette/raw/main/LICENSE">Apache 2.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/sindresorhus/globals">sindresorhus/globals</a></td>
<td><a href="https://github.com/sindresorhus/globals/raw/main/license">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/terser/terser">terser</a></td>
<td><a href="https://github.com/terser/terser/raw/master/LICENSE">BSD</a></td>
</tr>
<tr>
<td><a href="https://github.com/evanw/esbuild">evanw/esbuild</a></td>
<td><a href="https://github.com/evanw/esbuild/raw/main/LICENSE.md">MIT</a></td>
</tr>
<tr>
<td><a href="https://github.com/google/closure-compiler">google/closure-compiler</a></td>
<td><a href="https://github.com/google/closure-compiler#closure-compiler-license">Apache 2.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/tdewolff/minify">tdewolff/minify</a></td>
<td><a href="https://github.com/tdewolff/minify/raw/master/LICENSE">MIT</a></td>
</tr>
</tbody>
</table>
+
+
+ bionic-gpt/bionic-gpt
+ 2023-12-24T01:58:42Z
+ tag:github.com,2023-12-24:/bionic-gpt/bionic-gpt
+
+ <p>BionicGPT is an on-premise replacement for ChatGPT, offering the advantages of Generative AI while maintaining strict data confidentiality</p><hr><h1 align="center">BionicGPT</h1>
<div align="center">
<strong> BionicGPT is an on-premise replacement for ChatGPT, offering the advantages of Generative AI while maintaining strict data confidentiality </strong> BionicGPT can run on your laptop or scale into the data center.
</div>
<br>
<div align="center">
<!-- License -->
<a href="https://github.com/purton-tech/bionic-gpt#License"> <img src="https://img.shields.io/badge/License-MIT-green.svg?sanitize=true" alt="License"> </a>
<a href="https://github.com/purton-tech/bionic-gpt#License"> <img src="https://img.shields.io/badge/License-Apache-green.svg?sanitize=true" alt="License"> </a>
</div>
<div align="center">
<h4> <a href="https://bionic-gpt.com"> Homepage </a> </h4>
</div>
<br>
<p><img src="https://raw.githubusercontent.com/bionic-gpt/bionic-gpt/main/website/static/github-readme.png" alt="Alt text" title="BionicGPT Screenshot"></p>
<!-- ROADMAP -->
<h2>Roadmap</h2>
<ul>
<li><input type="checkbox" checked disabled> Text Generation
<ul>
<li><input type="checkbox" checked disabled> Connect to Open AI compatible API's i.e. LocalAI</li>
<li><input type="checkbox" checked disabled> Select different prompts</li>
<li><input type="checkbox" checked disabled> Syntax highlighting for code</li>
</ul> </li>
<li><input type="checkbox" disabled> Image Generation
<ul>
<li><input type="checkbox" disabled> Connect to stable diffusion</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Authentication
<ul>
<li><input type="checkbox" checked disabled> Email/Password sign in and registration</li>
<li><input type="checkbox" disabled> SSO</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Teams
<ul>
<li><input type="checkbox" checked disabled> Invite Team Members</li>
<li><input type="checkbox" checked disabled> Manage the teams you belong to</li>
<li><input type="checkbox" checked disabled> Create new teams</li>
<li><input type="checkbox" checked disabled> Switch between teams</li>
<li><input type="checkbox" disabled> RBAC</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Document Management
<ul>
<li><input type="checkbox" checked disabled> Document Upload</li>
<li><input type="checkbox" checked disabled> Allow user to create datasets</li>
<li><input type="checkbox" checked disabled> UI for datasets table</li>
<li><input type="checkbox" checked disabled> Turn documents into 1K batches and generate embeddings</li>
<li><input type="checkbox" checked disabled> OCR for document upload</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Document Pipelines
<ul>
<li><input type="checkbox" checked disabled> Allow user to upload docs via API to datasets</li>
<li><input type="checkbox" checked disabled> Process documents and create chunks and embeddings</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Retrieval Augmented Generation
<ul>
<li><input type="checkbox" checked disabled> Parse text out of documents</li>
<li><input type="checkbox" checked disabled> Generate Embeddings and store in pgVector</li>
<li><input type="checkbox" checked disabled> Add Embeddings to the prompt using similarity search</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Prompt Management
<ul>
<li><input type="checkbox" checked disabled> Create and Edit prompts on a per team basis</li>
<li><input type="checkbox" checked disabled> Associate prompts with datasets</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Model Management
<ul>
<li><input type="checkbox" checked disabled> Create/update default prompt fo a model</li>
<li><input type="checkbox" checked disabled> Set model location URL.</li>
<li><input type="checkbox" checked disabled> Switchable LLM backends.</li>
<li><input type="checkbox" disabled> Associate models with a command i.e. /image</li>
</ul> </li>
<li><input type="checkbox" disabled> Guardrails
<ul>
<li><input type="checkbox" disabled> Figure out a strategy</li>
</ul> </li>
<li><input type="checkbox" checked disabled> API
<ul>
<li><input type="checkbox" checked disabled> Create per team API keys</li>
<li><input type="checkbox" checked disabled> Attach keys to a prompt</li>
<li><input type="checkbox" disabled> Revoke keys</li>
</ul> </li>
<li><input type="checkbox" disabled> Fine Tuning
<ul>
<li><input type="checkbox" disabled> QLORA adapters</li>
</ul> </li>
<li><input type="checkbox" checked disabled> System Admin
<ul>
<li><input type="checkbox" checked disabled> Usage Statistics</li>
<li><input type="checkbox" checked disabled> Audit Trail</li>
<li><input type="checkbox" disabled> Set API limits</li>
</ul> </li>
<li><input type="checkbox" checked disabled> Deployment
<ul>
<li><input type="checkbox" checked disabled> Docker compose so people can test quickly.</li>
<li><input type="checkbox" checked disabled> Kubernetes deployment strategy.</li>
<li><input type="checkbox" disabled> Kubernetes bionicgpt.yaml</li>
<li><input type="checkbox" disabled> Hardware recommendations.</li>
</ul> </li>
</ul>
<p>See the <a href="https://github.com/purton-tech/bionicgpt/issues">open issues</a> for a full list of proposed features (and known issues).</p>
<!-- Try it out -->
<h2>Try it out</h2>
<p>Download our <code>docker-compose.yml</code> file and run <code>docker-compose up</code> access the user interface on <a href="http://localhost:7800/auth/sign_up">http://localhost:7800/auth/sign_up</a></p>
<pre><code class="language-sh">curl -O https://raw.githubusercontent.com/purton-tech/bionicgpt/main/docker-compose.yml
</code></pre>
<p>This has been tested on an AMD 2700x with 16GB of ram. The included <code>llama-2-7b-chat</code> model runs on CPU only.</p>
<p><strong>Warning</strong> - The images in this <code>docker-compose</code> are large due to having the model weights pre-loaded for convenience.</p>
<h2>Kubernetes Ready</h2>
<p>BionicGPT is optimized to run on Kubernetes and implements the full pipeline of LLM fine tuning from data acquisition to user interface.</p>
<p><img src="https://raw.githubusercontent.com/bionic-gpt/bionic-gpt/main/website/content/docs/production/architecture.svg?sanitize=true" alt="Alt text" title="BionicGPT Architetcure"></p>
+
+
+ sharkdp/fd
+ 2023-12-24T01:58:42Z
+ tag:github.com,2023-12-24:/sharkdp/fd
+
+ <p>A simple, fast and user-friendly alternative to 'find'</p><hr><h1>fd</h1>
<p><a href="https://github.com/sharkdp/fd/actions/workflows/CICD.yml"><img src="https://github.com/sharkdp/fd/actions/workflows/CICD.yml/badge.svg?sanitize=true" alt="CICD"></a> <a href="https://crates.io/crates/fd-find"><img src="https://img.shields.io/crates/v/fd-find.svg?sanitize=true" alt="Version info"></a> [<a href="https://github.com/cha0ran/fd-zh">中文</a>] [<a href="https://github.com/spearkkk/fd-kor">한국어</a>]</p>
<p><code>fd</code> is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to <a href="https://www.gnu.org/software/findutils/"><code>find</code></a>. While it does not aim to support all of <code>find</code>'s powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.</p>
<p>Quick links:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/sharkdp/fd/master/#how-to-use">How to use</a></li>
<li><a href="https://raw.githubusercontent.com/sharkdp/fd/master/#installation">Installation</a></li>
<li><a href="https://raw.githubusercontent.com/sharkdp/fd/master/#troubleshooting">Troubleshooting</a></li>
</ul>
<h2>Features</h2>
<ul>
<li>Intuitive syntax: <code>fd PATTERN</code> instead of <code>find -iname '*PATTERN*'</code>.</li>
<li>Regular expression (default) and glob-based patterns.</li>
<li><a href="https://raw.githubusercontent.com/sharkdp/fd/master/#benchmark">Very fast</a> due to parallelized directory traversal.</li>
<li>Uses colors to highlight different file types (same as <code>ls</code>).</li>
<li>Supports <a href="https://raw.githubusercontent.com/sharkdp/fd/master/#command-execution">parallel command execution</a></li>
<li>Smart case: the search is case-insensitive by default. It switches to case-sensitive if the pattern contains an uppercase character<a href="http://vimdoc.sourceforge.net/htmldoc/options.html#'smartcase'">*</a>.</li>
<li>Ignores hidden directories and files, by default.</li>
<li>Ignores patterns from your <code>.gitignore</code>, by default.</li>
<li>The command name is <em>50%</em> shorter<a href="https://github.com/ggreer/the_silver_searcher">*</a> than <code>find</code> :-).</li>
</ul>
<h2>Demo</h2>
<p><img src="https://raw.githubusercontent.com/sharkdp/fd/master/doc/screencast.svg?sanitize=true" alt="Demo"></p>
<h2>How to use</h2>
<p>First, to get an overview of all available command line options, you can either run <a href="https://raw.githubusercontent.com/sharkdp/fd/master/#command-line-options"><code>fd -h</code></a> for a concise help message or <code>fd --help</code> for a more detailed version.</p>
<h3>Simple search</h3>
<p><em>fd</em> is designed to find entries in your filesystem. The most basic search you can perform is to run <em>fd</em> with a single argument: the search pattern. For example, assume that you want to find an old script of yours (the name included <code>netflix</code>):</p>
<pre><code class="language-bash">> fd netfl
Software/python/imdb-ratings/netflix-details.py
</code></pre>
<p>If called with just a single argument like this, <em>fd</em> searches the current directory recursively for any entries that <em>contain</em> the pattern <code>netfl</code>.</p>
<h3>Regular expression search</h3>
<p>The search pattern is treated as a regular expression. Here, we search for entries that start with <code>x</code> and end with <code>rc</code>:</p>
<pre><code class="language-bash">> cd /etc
> fd '^x.*rc$'
X11/xinit/xinitrc
X11/xinit/xserverrc
</code></pre>
<p>The regular expression syntax used by <code>fd</code> is <a href="https://docs.rs/regex/1.0.0/regex/#syntax">documented here</a>.</p>
<h3>Specifying the root directory</h3>
<p>If we want to search a specific directory, it can be given as a second argument to <em>fd</em>:</p>
<pre><code class="language-bash">> fd passwd /etc
/etc/default/passwd
/etc/pam.d/passwd
/etc/passwd
</code></pre>
<h3>List all files, recursively</h3>
<p><em>fd</em> can be called with no arguments. This is very useful to get a quick overview of all entries in the current directory, recursively (similar to <code>ls -R</code>):</p>
<pre><code class="language-bash">> cd fd/tests
> fd
testenv
testenv/mod.rs
tests.rs
</code></pre>
<p>If you want to use this functionality to list all files in a given directory, you have to use a catch-all pattern such as <code>.</code> or <code>^</code>:</p>
<pre><code class="language-bash">> fd . fd/tests/
testenv
testenv/mod.rs
tests.rs
</code></pre>
<h3>Searching for a particular file extension</h3>
<p>Often, we are interested in all files of a particular type. This can be done with the <code>-e</code> (or <code>--extension</code>) option. Here, we search for all Markdown files in the fd repository:</p>
<pre><code class="language-bash">> cd fd
> fd -e md
CONTRIBUTING.md
README.md
</code></pre>
<p>The <code>-e</code> option can be used in combination with a search pattern:</p>
<pre><code class="language-bash">> fd -e rs mod
src/fshelper/mod.rs
src/lscolors/mod.rs
tests/testenv/mod.rs
</code></pre>
<h3>Searching for a particular file name</h3>
<p>To find files with exactly the provided search pattern, use the <code>-g</code> (or <code>--glob</code>) option:</p>
<pre><code class="language-bash">> fd -g libc.so /usr
/usr/lib32/libc.so
/usr/lib/libc.so
</code></pre>
<h3>Hidden and ignored files</h3>
<p>By default, <em>fd</em> does not search hidden directories and does not show hidden files in the search results. To disable this behavior, we can use the <code>-H</code> (or <code>--hidden</code>) option:</p>
<pre><code class="language-bash">> fd pre-commit
> fd -H pre-commit
.git/hooks/pre-commit.sample
</code></pre>
<p>If we work in a directory that is a Git repository (or includes Git repositories), <em>fd</em> does not search folders (and does not show files) that match one of the <code>.gitignore</code> patterns. To disable this behavior, we can use the <code>-I</code> (or <code>--no-ignore</code>) option:</p>
<pre><code class="language-bash">> fd num_cpu
> fd -I num_cpu
target/debug/deps/libnum_cpus-f5ce7ef99006aa05.rlib
</code></pre>
<p>To really search <em>all</em> files and directories, simply combine the hidden and ignore features to show everything (<code>-HI</code>) or use <code>-u</code>/<code>--unrestricted</code>.</p>
<h3>Matching the full path</h3>
<p>By default, <em>fd</em> only matches the filename of each file. However, using the <code>--full-path</code> or <code>-p</code> option, you can match against the full path.</p>
<pre><code class="language-bash">> fd -p -g '**/.git/config'
> fd -p '.*/lesson-\d+/[a-z]+.(jpg|png)'
</code></pre>
<h3>Command execution</h3>
<p>Instead of just showing the search results, you often want to <em>do something</em> with them. <code>fd</code> provides two ways to execute external commands for each of your search results:</p>
<ul>
<li>The <code>-x</code>/<code>--exec</code> option runs an external command <em>for each of the search results</em> (in parallel).</li>
<li>The <code>-X</code>/<code>--exec-batch</code> option launches the external command once, with <em>all search results as arguments</em>.</li>
</ul>
<h4>Examples</h4>
<p>Recursively find all zip archives and unpack them:</p>
<pre><code class="language-bash">fd -e zip -x unzip
</code></pre>
<p>If there are two such files, <code>file1.zip</code> and <code>backup/file2.zip</code>, this would execute <code>unzip file1.zip</code> and <code>unzip backup/file2.zip</code>. The two <code>unzip</code> processes run in parallel (if the files are found fast enough).</p>
<p>Find all <code>*.h</code> and <code>*.cpp</code> files and auto-format them inplace with <code>clang-format -i</code>:</p>
<pre><code class="language-bash">fd -e h -e cpp -x clang-format -i
</code></pre>
<p>Note how the <code>-i</code> option to <code>clang-format</code> can be passed as a separate argument. This is why we put the <code>-x</code> option last.</p>
<p>Find all <code>test_*.py</code> files and open them in your favorite editor:</p>
<pre><code class="language-bash">fd -g 'test_*.py' -X vim
</code></pre>
<p>Note that we use capital <code>-X</code> here to open a single <code>vim</code> instance. If there are two such files, <code>test_basic.py</code> and <code>lib/test_advanced.py</code>, this will run <code>vim test_basic.py lib/test_advanced.py</code>.</p>
<p>To see details like file permissions, owners, file sizes etc., you can tell <code>fd</code> to show them by running <code>ls</code> for each result:</p>
<pre><code class="language-bash">fd … -X ls -lhd --color=always
</code></pre>
<p>This pattern is so useful that <code>fd</code> provides a shortcut. You can use the <code>-l</code>/<code>--list-details</code> option to execute <code>ls</code> in this way: <code>fd … -l</code>.</p>
<p>The <code>-X</code> option is also useful when combining <code>fd</code> with <a href="https://github.com/BurntSushi/ripgrep/">ripgrep</a> (<code>rg</code>) in order to search within a certain class of files, like all C++ source files:</p>
<pre><code class="language-bash">fd -e cpp -e cxx -e h -e hpp -X rg 'std::cout'
</code></pre>
<p>Convert all <code>*.jpg</code> files to <code>*.png</code> files:</p>
<pre><code class="language-bash">fd -e jpg -x convert {} {.}.png
</code></pre>
<p>Here, <code>{}</code> is a placeholder for the search result. <code>{.}</code> is the same, without the file extension. See below for more details on the placeholder syntax.</p>
<p>The terminal output of commands run from parallel threads using <code>-x</code> will not be interlaced or garbled, so <code>fd -x</code> can be used to rudimentarily parallelize a task run over many files. An example of this is calculating the checksum of each individual file within a directory.</p>
<pre><code>fd -tf -x md5sum > file_checksums.txt
</code></pre>
<h4>Placeholder syntax</h4>
<p>The <code>-x</code> and <code>-X</code> options take a <em>command template</em> as a series of arguments (instead of a single string). If you want to add additional options to <code>fd</code> after the command template, you can terminate it with a <code>\;</code>.</p>
<p>The syntax for generating commands is similar to that of <a href="https://www.gnu.org/software/parallel/">GNU Parallel</a>:</p>
<ul>
<li><code>{}</code>: A placeholder token that will be replaced with the path of the search result (<code>documents/images/party.jpg</code>).</li>
<li><code>{.}</code>: Like <code>{}</code>, but without the file extension (<code>documents/images/party</code>).</li>
<li><code>{/}</code>: A placeholder that will be replaced by the basename of the search result (<code>party.jpg</code>).</li>
<li><code>{//}</code>: The parent of the discovered path (<code>documents/images</code>).</li>
<li><code>{/.}</code>: The basename, with the extension removed (<code>party</code>).</li>
</ul>
<p>If you do not include a placeholder, <em>fd</em> automatically adds a <code>{}</code> at the end.</p>
<h4>Parallel vs. serial execution</h4>
<p>For <code>-x</code>/<code>--exec</code>, you can control the number of parallel jobs by using the <code>-j</code>/<code>--threads</code> option. Use <code>--threads=1</code> for serial execution.</p>
<h3>Excluding specific files or directories</h3>
<p>Sometimes we want to ignore search results from a specific subdirectory. For example, we might want to search all hidden files and directories (<code>-H</code>) but exclude all matches from <code>.git</code> directories. We can use the <code>-E</code> (or <code>--exclude</code>) option for this. It takes an arbitrary glob pattern as an argument:</p>
<pre><code class="language-bash">> fd -H -E .git …
</code></pre>
<p>We can also use this to skip mounted directories:</p>
<pre><code class="language-bash">> fd -E /mnt/external-drive …
</code></pre>
<p>.. or to skip certain file types:</p>
<pre><code class="language-bash">> fd -E '*.bak' …
</code></pre>
<p>To make exclude-patterns like these permanent, you can create a <code>.fdignore</code> file. They work like <code>.gitignore</code> files, but are specific to <code>fd</code>. For example:</p>
<pre><code class="language-bash">> cat ~/.fdignore
/mnt/external-drive
*.bak
</code></pre>
<p>Note: <code>fd</code> also supports <code>.ignore</code> files that are used by other programs such as <code>rg</code> or <code>ag</code>.</p>
<p>If you want <code>fd</code> to ignore these patterns globally, you can put them in <code>fd</code>'s global ignore file. This is usually located in <code>~/.config/fd/ignore</code> in macOS or Linux, and <code>%APPDATA%\fd\ignore</code> in Windows.</p>
<h3>Deleting files</h3>
<p>You can use <code>fd</code> to remove all files and directories that are matched by your search pattern. If you only want to remove files, you can use the <code>--exec-batch</code>/<code>-X</code> option to call <code>rm</code>. For example, to recursively remove all <code>.DS_Store</code> files, run:</p>
<pre><code class="language-bash">> fd -H '^\.DS_Store$' -tf -X rm
</code></pre>
<p>If you are unsure, always call <code>fd</code> without <code>-X rm</code> first. Alternatively, use <code>rm</code>s "interactive" option:</p>
<pre><code class="language-bash">> fd -H '^\.DS_Store$' -tf -X rm -i
</code></pre>
<p>If you also want to remove a certain class of directories, you can use the same technique. You will have to use <code>rm</code>s <code>--recursive</code>/<code>-r</code> flag to remove directories.</p>
<p>Note: there are scenarios where using <code>fd … -X rm -r</code> can cause race conditions: if you have a path like <code>…/foo/bar/foo/…</code> and want to remove all directories named <code>foo</code>, you can end up in a situation where the outer <code>foo</code> directory is removed first, leading to (harmless) <em>"'foo/bar/foo': No such file or directory"</em> errors in the <code>rm</code> call.</p>
<h3>Command-line options</h3>
<p>This is the output of <code>fd -h</code>. To see the full set of command-line options, use <code>fd --help</code> which also includes a much more detailed help text.</p>
<pre><code>Usage: fd [OPTIONS] [pattern] [path]...
Arguments:
[pattern] the search pattern (a regular expression, unless '--glob' is used; optional)
[path]... the root directories for the filesystem search (optional)
Options:
-H, --hidden Search hidden files and directories
-I, --no-ignore Do not respect .(git|fd)ignore files
-s, --case-sensitive Case-sensitive search (default: smart case)
-i, --ignore-case Case-insensitive search (default: smart case)
-g, --glob Glob-based search (default: regular expression)
-a, --absolute-path Show absolute instead of relative paths
-l, --list-details Use a long listing format with file metadata
-L, --follow Follow symbolic links
-p, --full-path Search full abs. path (default: filename only)
-d, --max-depth <depth> Set maximum search depth (default: none)
-E, --exclude <pattern> Exclude entries that match the given glob pattern
-t, --type <filetype> Filter by type: file (f), directory (d), symlink (l),
executable (x), empty (e), socket (s), pipe (p), char-device
(c), block-device (b)
-e, --extension <ext> Filter by file extension
-S, --size <size> Limit results based on the size of files
--changed-within <date|dur> Filter by file modification time (newer than)
--changed-before <date|dur> Filter by file modification time (older than)
-o, --owner <user:group> Filter by owning user and/or group
-x, --exec <cmd>... Execute a command for each search result
-X, --exec-batch <cmd>... Execute a command with all search results at once
-c, --color <when> When to use colors [default: auto] [possible values: auto,
always, never]
-h, --help Print help (see more with '--help')
-V, --version Print version
</code></pre>
<h2>Benchmark</h2>
<p>Let's search my home folder for files that end in <code>[0-9].jpg</code>. It contains ~750.000 subdirectories and about a 4 million files. For averaging and statistical analysis, I'm using <a href="https://github.com/sharkdp/hyperfine">hyperfine</a>. The following benchmarks are performed with a "warm"/pre-filled disk-cache (results for a "cold" disk-cache show the same trends).</p>
<p>Let's start with <code>find</code>:</p>
<pre><code>Benchmark 1: find ~ -iregex '.*[0-9]\.jpg$'
Time (mean ± σ): 19.922 s ± 0.109 s
Range (min … max): 19.765 s … 20.065 s
</code></pre>
<p><code>find</code> is much faster if it does not need to perform a regular-expression search:</p>
<pre><code>Benchmark 2: find ~ -iname '*[0-9].jpg'
Time (mean ± σ): 11.226 s ± 0.104 s
Range (min … max): 11.119 s … 11.466 s
</code></pre>
<p>Now let's try the same for <code>fd</code>. Note that <code>fd</code> performs a regular expression search by defautl. The options <code>-u</code>/<code>--unrestricted</code> option is needed here for a fair comparison. Otherwise <code>fd</code> does not have to traverse hidden folders and ignored paths (see below):</p>
<pre><code>Benchmark 3: fd -u '[0-9]\.jpg$' ~
Time (mean ± σ): 854.8 ms ± 10.0 ms
Range (min … max): 839.2 ms … 868.9 ms
</code></pre>
<p>For this particular example, <code>fd</code> is approximately <strong>23 times faster</strong> than <code>find -iregex</code> and about <strong>13 times faster</strong> than <code>find -iname</code>. By the way, both tools found the exact same 546 files <span>😄</span>.</p>
<p><strong>Note</strong>: This is <em>one particular</em> benchmark on <em>one particular</em> machine. While we have performed a lot of different tests (and found consistent results), things might be different for you! We encourage everyone to try it out on their own. See <a href="https://github.com/sharkdp/fd-benchmarks">this repository</a> for all necessary scripts.</p>
<p>Concerning <em>fd</em>'s speed, a lot of credit goes to the <code>regex</code> and <code>ignore</code> crates that are also used in <a href="https://github.com/BurntSushi/ripgrep">ripgrep</a> (check it out!).</p>
<h2>Troubleshooting</h2>
<h3><code>fd</code> does not find my file!</h3>
<p>Remember that <code>fd</code> ignores hidden directories and files by default. It also ignores patterns from <code>.gitignore</code> files. If you want to make sure to find absolutely every possible file, always use the options <code>-u</code>/<code>--unrestricted</code> option (or <code>-HI</code> to enable hidden and ignored files):</p>
<pre><code class="language-bash">> fd -u …
</code></pre>
<h3>Colorized output</h3>
<p><code>fd</code> can colorize files by extension, just like <code>ls</code>. In order for this to work, the environment variable <a href="https://linux.die.net/man/5/dir_colors"><code>LS_COLORS</code></a> has to be set. Typically, the value of this variable is set by the <code>dircolors</code> command which provides a convenient configuration format to define colors for different file formats. On most distributions, <code>LS_COLORS</code> should be set already. If you are on Windows or if you are looking for alternative, more complete (or more colorful) variants, see <a href="https://github.com/sharkdp/vivid">here</a>, <a href="https://github.com/seebi/dircolors-solarized">here</a> or <a href="https://github.com/trapd00r/LS_COLORS">here</a>.</p>
<p><code>fd</code> also honors the <a href="https://no-color.org/"><code>NO_COLOR</code></a> environment variable.</p>
<h3><code>fd</code> doesn't seem to interpret my regex pattern correctly</h3>
<p>A lot of special regex characters (like <code>[]</code>, <code>^</code>, <code>$</code>, ..) are also special characters in your shell. If in doubt, always make sure to put single quotes around the regex pattern:</p>
<pre><code class="language-bash">> fd '^[A-Z][0-9]+$'
</code></pre>
<p>If your pattern starts with a dash, you have to add <code>--</code> to signal the end of command line options. Otherwise, the pattern will be interpreted as a command-line option. Alternatively, use a character class with a single hyphen character:</p>
<pre><code class="language-bash">> fd -- '-pattern'
> fd '[-]pattern'
</code></pre>
<h3>"Command not found" for <code>alias</code>es or shell functions</h3>
<p>Shell <code>alias</code>es and shell functions can not be used for command execution via <code>fd -x</code> or <code>fd -X</code>. In <code>zsh</code>, you can make the alias global via <code>alias -g myalias="…"</code>. In <code>bash</code>, you can use <code>export -f my_function</code> to make available to child processes. You would still need to call <code>fd -x bash -c 'my_function "$1"' bash</code>. For other use cases or shells, use a (temporary) shell script.</p>
<h2>Integration with other programs</h2>
<h3>Using fd with <code>fzf</code></h3>
<p>You can use <em>fd</em> to generate input for the command-line fuzzy finder <a href="https://github.com/junegunn/fzf">fzf</a>:</p>
<pre><code class="language-bash">export FZF_DEFAULT_COMMAND='fd --type file'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
</code></pre>
<p>Then, you can type <code>vim <Ctrl-T></code> on your terminal to open fzf and search through the fd-results.</p>
<p>Alternatively, you might like to follow symbolic links and include hidden files (but exclude <code>.git</code> folders):</p>
<pre><code class="language-bash">export FZF_DEFAULT_COMMAND='fd --type file --follow --hidden --exclude .git'
</code></pre>
<p>You can even use fd's colored output inside fzf by setting:</p>
<pre><code class="language-bash">export FZF_DEFAULT_COMMAND="fd --type file --color=always"
export FZF_DEFAULT_OPTS="--ansi"
</code></pre>
<p>For more details, see the <a href="https://github.com/junegunn/fzf#tips">Tips section</a> of the fzf README.</p>
<h3>Using fd with <code>rofi</code></h3>
<p><a href="https://github.com/davatorium/rofi"><em>rofi</em></a> is a graphical launch menu application that is able to create menus by reading from <em>stdin</em>. Piping <code>fd</code> output into <code>rofi</code>s <code>-dmenu</code> mode creates fuzzy-searchable lists of files and directories.</p>
<h4>Example</h4>
<p>Create a case-insensitive searchable multi-select list of <em>PDF</em> files under your <code>$HOME</code> directory and open the selection with your configured PDF viewer. To list all file types, drop the <code>-e pdf</code> argument.</p>
<pre><code class="language-bash">fd --type f -e pdf . $HOME | rofi -keep-right -dmenu -i -p FILES -multi-select | xargs -I {} xdg-open {}
</code></pre>
<p>To modify the list that is presented by rofi, add arguments to the <code>fd</code> command. To modify the search behaviour of rofi, add arguments to the <code>rofi</code> command.</p>
<h3>Using fd with <code>emacs</code></h3>
<p>The emacs package <a href="https://github.com/technomancy/find-file-in-project">find-file-in-project</a> can use <em>fd</em> to find files.</p>
<p>After installing <code>find-file-in-project</code>, add the line <code>(setq ffip-use-rust-fd t)</code> to your <code>~/.emacs</code> or <code>~/.emacs.d/init.el</code> file.</p>
<p>In emacs, run <code>M-x find-file-in-project-by-selected</code> to find matching files. Alternatively, run <code>M-x find-file-in-project</code> to list all available files in the project.</p>
<h3>Printing the output as a tree</h3>
<p>To format the output of <code>fd</code> as a file-tree you can use the <code>tree</code> command with <code>--fromfile</code>:</p>
<pre><code class="language-bash">❯ fd | tree --fromfile
</code></pre>
<p>This can be more useful than running <code>tree</code> by itself because <code>tree</code> does not ignore any files by default, nor does it support as rich a set of options as <code>fd</code> does to control what to print:</p>
<pre><code class="language-bash">❯ fd --extension rs | tree --fromfile
.
├── build.rs
└── src
├── app.rs
└── error.rs
</code></pre>
<p>On bash and similar you can simply create an alias:</p>
<pre><code class="language-bash">❯ alias as-tree='tree --fromfile'
</code></pre>
<h3>Using fd with <code>xargs</code> or <code>parallel</code></h3>
<p>Note that <code>fd</code> has a builtin feature for <a href="https://raw.githubusercontent.com/sharkdp/fd/master/#command-execution">command execution</a> with its <code>-x</code>/<code>--exec</code> and <code>-X</code>/<code>--exec-batch</code> options. If you prefer, you can still use it in combination with <code>xargs</code>:</p>
<pre><code class="language-bash">> fd -0 -e rs | xargs -0 wc -l
</code></pre>
<p>Here, the <code>-0</code> option tells <em>fd</em> to separate search results by the NULL character (instead of newlines). In the same way, the <code>-0</code> option of <code>xargs</code> tells it to read the input in this way.</p>
<h2>Installation</h2>
<p><a href="https://repology.org/project/fd-find/versions"><img src="https://repology.org/badge/vertical-allrepos/fd-find.svg?sanitize=true" alt="Packaging status"></a></p>
<h3>On Ubuntu</h3>
<p><em>... and other Debian-based Linux distributions.</em></p>
<p>If you run Ubuntu 19.04 (Disco Dingo) or newer, you can install the <a href="https://packages.ubuntu.com/fd-find">officially maintained package</a>:</p>
<pre><code>sudo apt install fd-find
</code></pre>
<p>Note that the binary is called <code>fdfind</code> as the binary name <code>fd</code> is already used by another package. It is recommended that after installation, you add a link to <code>fd</code> by executing command <code>ln -s $(which fdfind) ~/.local/bin/fd</code>, in order to use <code>fd</code> in the same way as in this documentation. Make sure that <code>$HOME/.local/bin</code> is in your <code>$PATH</code>.</p>
<p>If you use an older version of Ubuntu, you can download the latest <code>.deb</code> package from the <a href="https://github.com/sharkdp/fd/releases">release page</a> and install it via:</p>
<pre><code class="language-bash">sudo dpkg -i fd_9.0.0_amd64.deb # adapt version number and architecture
</code></pre>
<h3>On Debian</h3>
<p>If you run Debian Buster or newer, you can install the <a href="https://tracker.debian.org/pkg/rust-fd-find">officially maintained Debian package</a>:</p>
<pre><code>sudo apt-get install fd-find
</code></pre>
<p>Note that the binary is called <code>fdfind</code> as the binary name <code>fd</code> is already used by another package. It is recommended that after installation, you add a link to <code>fd</code> by executing command <code>ln -s $(which fdfind) ~/.local/bin/fd</code>, in order to use <code>fd</code> in the same way as in this documentation. Make sure that <code>$HOME/.local/bin</code> is in your <code>$PATH</code>.</p>
<h3>On Fedora</h3>
<p>Starting with Fedora 28, you can install <code>fd</code> from the official package sources:</p>
<pre><code class="language-bash">dnf install fd-find
</code></pre>
<h3>On Alpine Linux</h3>
<p>You can install <a href="https://pkgs.alpinelinux.org/packages?name=fd">the fd package</a> from the official sources, provided you have the appropriate repository enabled:</p>
<pre><code>apk add fd
</code></pre>
<h3>On Arch Linux</h3>
<p>You can install <a href="https://www.archlinux.org/packages/community/x86_64/fd/">the fd package</a> from the official repos:</p>
<pre><code>pacman -S fd
</code></pre>
<h3>On Gentoo Linux</h3>
<p>You can use <a href="https://packages.gentoo.org/packages/sys-apps/fd">the fd ebuild</a> from the official repo:</p>
<pre><code>emerge -av fd
</code></pre>
<h3>On openSUSE Linux</h3>
<p>You can install <a href="https://software.opensuse.org/package/fd">the fd package</a> from the official repo:</p>
<pre><code>zypper in fd
</code></pre>
<h3>On Void Linux</h3>
<p>You can install <code>fd</code> via xbps-install:</p>
<pre><code>xbps-install -S fd
</code></pre>
<h3>On RedHat Enterprise Linux 8/9 (RHEL8/9), Almalinux 8/9, EuroLinux 8/9 or Rocky Linux 8/9</h3>
<p>You can install <a href="https://copr.fedorainfracloud.org/coprs/tkbcopr/fd/">the <code>fd</code> package</a> from Fedora Copr.</p>
<pre><code class="language-bash">dnf copr enable tkbcopr/fd
dnf install fd
</code></pre>
<p>A different version using the <a href="https://github.com/sharkdp/fd/pull/481#issuecomment-534494592">slower</a> malloc <a href="https://bugzilla.redhat.com/show_bug.cgi?id=2216193#c1">instead of jemalloc</a> is also available from the EPEL8/9 repo as the package <code>fd-find</code>.</p>
<h3>On macOS</h3>
<p>You can install <code>fd</code> with <a href="https://formulae.brew.sh/formula/fd">Homebrew</a>:</p>
<pre><code>brew install fd
</code></pre>
<p>… or with MacPorts:</p>
<pre><code>sudo port install fd
</code></pre>
<h3>On Windows</h3>
<p>You can download pre-built binaries from the <a href="https://github.com/sharkdp/fd/releases">release page</a>.</p>
<p>Alternatively, you can install <code>fd</code> via <a href="http://scoop.sh">Scoop</a>:</p>
<pre><code>scoop install fd
</code></pre>
<p>Or via <a href="https://chocolatey.org">Chocolatey</a>:</p>
<pre><code>choco install fd
</code></pre>
<p>Or via <a href="https://learn.microsoft.com/en-us/windows/package-manager/">Winget</a>:</p>
<pre><code>winget install sharkdp.fd
</code></pre>
<h3>On GuixOS</h3>
<p>You can install <a href="https://guix.gnu.org/en/packages/fd-8.1.1/">the fd package</a> from the official repo:</p>
<pre><code>guix install fd
</code></pre>
<h3>On NixOS / via Nix</h3>
<p>You can use the <a href="https://nixos.org/nix/">Nix package manager</a> to install <code>fd</code>:</p>
<pre><code>nix-env -i fd
</code></pre>
<h3>On FreeBSD</h3>
<p>You can install <a href="https://www.freshports.org/sysutils/fd">the fd-find package</a> from the official repo:</p>
<pre><code>pkg install fd-find
</code></pre>
<h3>From npm</h3>
<p>On linux and macOS, you can install the <a href="https://npm.im/fd-find">fd-find</a> package:</p>
<pre><code>npm install -g fd-find
</code></pre>
<h3>From source</h3>
<p>With Rust's package manager <a href="https://github.com/rust-lang/cargo">cargo</a>, you can install <em>fd</em> via:</p>
<pre><code>cargo install fd-find
</code></pre>
<p>Note that rust version <em>1.70.0</em> or later is required.</p>
<p><code>make</code> is also needed for the build.</p>
<h3>From binaries</h3>
<p>The <a href="https://github.com/sharkdp/fd/releases">release page</a> includes precompiled binaries for Linux, macOS and Windows. Statically-linked binaries are also available: look for archives with <code>musl</code> in the file name.</p>
<h2>Development</h2>
<pre><code class="language-bash">git clone https://github.com/sharkdp/fd
# Build
cd fd
cargo build
# Run unit tests and integration tests
cargo test
# Install
cargo install --path .
</code></pre>
<h2>Maintainers</h2>
<ul>
<li><a href="https://github.com/sharkdp">sharkdp</a></li>
<li><a href="https://github.com/tmccombs">tmccombs</a></li>
<li><a href="https://github.com/tavianator">tavianator</a></li>
</ul>
<h2>License</h2>
<p><code>fd</code> is distributed under the terms of both the MIT License and the Apache License 2.0.</p>
<p>See the <a href="https://raw.githubusercontent.com/sharkdp/fd/master/LICENSE-APACHE">LICENSE-APACHE</a> and <a href="https://raw.githubusercontent.com/sharkdp/fd/master/LICENSE-MIT">LICENSE-MIT</a> files for license details.</p>
+
+
\ No newline at end of file
diff --git a/sage/daily/index.xml b/sage/daily/index.xml
index 4667ed1aee1..7f8c855ce56 100644
--- a/sage/daily/index.xml
+++ b/sage/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Sage Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:22Z
+ 2023-12-24T01:41:45Z
Daily Trending of Sage in GitHub
\ No newline at end of file
diff --git a/sage/weekly/index.xml b/sage/weekly/index.xml
new file mode 100644
index 00000000000..4d0a24a9fec
--- /dev/null
+++ b/sage/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Sage Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:00Z
+ Weekly Trending of Sage in GitHub
+
+
\ No newline at end of file
diff --git a/saltstack/daily/index.xml b/saltstack/daily/index.xml
index bc4ae9ad5b4..85f184d2798 100644
--- a/saltstack/daily/index.xml
+++ b/saltstack/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SaltStack Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:23Z
+ 2023-12-24T01:41:46Z
Daily Trending of SaltStack in GitHub
\ No newline at end of file
diff --git a/saltstack/weekly/index.xml b/saltstack/weekly/index.xml
new file mode 100644
index 00000000000..46b0720b097
--- /dev/null
+++ b/saltstack/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SaltStack Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:01Z
+ Weekly Trending of SaltStack in GitHub
+
+
\ No newline at end of file
diff --git a/sas/daily/index.xml b/sas/daily/index.xml
index 301602b2505..36a909196ca 100644
--- a/sas/daily/index.xml
+++ b/sas/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SAS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:24Z
+ 2023-12-24T01:41:46Z
Daily Trending of SAS in GitHub
\ No newline at end of file
diff --git a/sas/weekly/index.xml b/sas/weekly/index.xml
new file mode 100644
index 00000000000..1ce5a0e2a86
--- /dev/null
+++ b/sas/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SAS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:02Z
+ Weekly Trending of SAS in GitHub
+
+
\ No newline at end of file
diff --git a/sass/daily/index.xml b/sass/daily/index.xml
index 70c25cede61..cd72255b4dd 100644
--- a/sass/daily/index.xml
+++ b/sass/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Sass Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:25Z
+ 2023-12-24T01:41:47Z
Daily Trending of Sass in GitHub
\ No newline at end of file
diff --git a/sass/weekly/index.xml b/sass/weekly/index.xml
new file mode 100644
index 00000000000..0aa4df5f15e
--- /dev/null
+++ b/sass/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Sass Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:02Z
+ Weekly Trending of Sass in GitHub
+
+
\ No newline at end of file
diff --git a/scala/daily/index.xml b/scala/daily/index.xml
index 263f5b35ec2..0fde2e43775 100644
--- a/scala/daily/index.xml
+++ b/scala/daily/index.xml
@@ -1,21 +1,28 @@
GitHub Scala Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:32Z
+ 2023-12-24T01:41:53Z
Daily Trending of Scala in GitHub
- xitrum-framework/xitrum-scalate
- 2023-12-23T01:38:32Z
- tag:github.com,2023-12-23:/xitrum-framework/xitrum-scalate
-
- <p>Template engine for Xitrum based on Scalate</p><hr><p><code>Xitrum <http://xitrum-framework.github.io/></code>_ allows you to choose template engines. This library is a template engine for Xitrum. It wraps <code>Scalate <http://scalate.github.io/scalate/></code>_.</p>
<p>See CHANGELOG to know which version of xitrum-scalate to use for which version of Xitrum.</p>
<p>Config your Xitrum project to use this template engine</p>
<pre><code>
Edit your Xitrum project's project/plugins.sbt:
::
// For precompiling Scalate templates in the compile phase of SBT
addSbtPlugin("org.scalatra.scalate" % "sbt-scalate-precompiler" % "1.9.6.0")
Edit build.sbt:
::
// Template engine for Xitrum
libraryDependencies += "tv.cntt" %% "xitrum-scalate" % "2.9.2"
// Precompile Scalate templates
import org.fusesource.scalate.ScalatePlugin._
ScalateKeys.scalateTemplateConfig in Compile := Seq(TemplateConfig(
baseDirectory.value / "src" / "main" / "scalate",
Seq(),
Seq(Binding("helper", "xitrum.Action", importMembers = true))
))
Edit xitrum.conf:
::
xitrum {
...
template {
"xitrum.view.Scalate" {
defaultType = jade # jade, mustache, scaml, or ssp
}
}
...
}
"type" option
~~~~~~~~~~~~~
In xitrum.conf, you config "defaultType" (see above).
When calling Xitrum's renderView method, if you want to use template type other
than the defaultType, set the last argument (options) like this:
::
renderView(Map("type" -> "mustache")
"date" option
~~~~~~~~~~~~~
If you don't specify `DateFormat <http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html>`_,
``java.text.DateFormat.getDateInstance(DateFormat.DEFAULT, lo)`` will be used,
where ``lo`` is ``java.util.Locale.forLanguageTag(currentAction.language)``.
::
renderView(Map("date" -> myDateFormat)
"number" option
~~~~~~~~~~~~~~~
If you don't specify `NumberFormat <http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html>`_,
``java.text.NumberFormat.getInstance(lo)`` will be used,
where ``lo`` is ``java.util.Locale.forLanguageTag(currentAction.language)``.
::
renderView(Map("date" -> myNumberFormat)
If you want to display an integer number as is, without any number format,
instead of (Jade example):
::
= myObject.myInt
Use:
::
= myObject.myInt.toString
Other utility methods
~~~~~~~~~~~~~~~~~~~~~
You can use methods [view and collection](http://scalate.github.io/scalate/documentation/user-guide.html#Views) of Scalate.
`xitrum.view.Scalate` provides some utility methods so that you can easily
use Scalate features. See the `API doc <http://xitrum-framework.github.io/xitrum-scalate/>`_.
Ex:
::
import xitrum.Config
import xitrum.view.Scalate
// In your action:
val scalate = Config.xitrum.template.get.asInstanceOf[Scalate]
val template = "p This Jade template is from a string, not from a file."
val string = scalate.renderJadeString(template)
respondInlineView(string)
Log
~~~
To avoid unnecessary log, you should add these to config/logback.xml:
::
<logger name="org.fusesource.scalate" level="INFO"/>
<logger name="org.fusesource.scalate.util.ClassPathBuilder" level="ERROR"/>
</code></pre>
+ heroku/heroku-sbt-plugin
+ 2023-12-24T01:41:53Z
+ tag:github.com,2023-12-24:/heroku/heroku-sbt-plugin
+
+ <p>An sbt plugin for deploying Heroku Scala applications</p><hr><h1>Heroku sbt Plugin</h1>
<p><a href="https://raw.githubusercontent.com/heroku/heroku-sbt-plugin/main/LICENSE"><img src="https://badgen.net/github/license/heroku/sbt-heroku" alt=""></a> <a href="https://github.com/heroku/sbt-heroku/actions/workflows/ci.yml"><img src="https://github.com/heroku/sbt-heroku/actions/workflows/ci.yml/badge.svg?sanitize=true" alt="CI"></a></p>
<blockquote>
<p>[!IMPORTANT] This plugin is no longer maintained.</p>
<p>Heroku offers a build tool independent CLI for the purpose of deploying JAR and WAR files directly to Heroku without using the standard Git workflow. Users that require the functionality of the Heroku sbt Plugin are encouraged to migrate to it.</p>
<p>Find out more: <a href="https://github.com/heroku/heroku-jvm-application-deployer">Heroku JVM Application Deployer</a></p>
</blockquote>
<p>This plugin is used to deploy Scala and Play applications directly to Heroku without pushing to a Git repository. This is can be useful when deploying from a CI server.</p>
<h2>Using the Plugin</h2>
<p>Add the following to your <code>project/plugins.sbt</code> file:</p>
<pre><code class="language-scala">addSbtPlugin("com.heroku" % "sbt-heroku" % "2.1.4")
</code></pre>
<p>If you're not using Play, then you'll also need to add the <a href="https://github.com/sbt/sbt-native-packager">sbt-native-packager plugin</a>, which creates a <code>stage</code> task. Alternatively, you can <a href="https://raw.githubusercontent.com/heroku/heroku-sbt-plugin/main/#deploying-a-fat-jar">deploy a fat JAR using sbt-assembly</a>.</p>
<p>Next, add something like this to your <code>build.sbt</code> if you do not have a Heroku Git repo in your <code>git remote</code>s.</p>
<pre><code class="language-scala">herokuAppName in Compile := "your-heroku-app-name"
</code></pre>
<p>Now, if you have the <a href="https://devcenter.heroku.com/articles/heroku-cli">Heroku CLI</a> installed, run:</p>
<pre><code class="language-sh-session">$ sbt stage deployHeroku
</code></pre>
<p>If you do not have the CLI installed, then run:</p>
<pre><code class="language-sh-session">$ HEROKU_API_KEY="xxx-xxx-xxxx" sbt stage deployHeroku
</code></pre>
<p>And replace "xxx-xxx-xxxx" with the value of your Heroku API token.</p>
<h3>Requirements</h3>
<ul>
<li> <p>It is required that you use sbt 0.13.5 or greater.</p> </li>
<li> <p>You must use Java 1.7 or higher locally.</p> </li>
<li> <p>This plugin has not been tested with Play 2.0 or 2.1.</p> </li>
</ul>
<h3>Configuring the Plugin</h3>
<p>You may set the desired JDK version like so:</p>
<pre><code class="language-scala">herokuJdkVersion in Compile := "11"
</code></pre>
<p>For a list of supported JDK versions, refer to the <a href="https://devcenter.heroku.com/articles/java-support#supported-java-versions">Heroku Java Support DevCenter article</a>.</p>
<p>You can (but probably should not) set configuration variables like so:</p>
<pre><code class="language-scala">herokuConfigVars in Compile := Map(
"MY_VAR" -> "some value",
"JAVA_OPTS" -> "-XX:+UseCompressedOops"
)
</code></pre>
<p>If you adhere to the principles of the <a href="http://12factor.net/config">12 Factor app</a>, Configuration should be strictly seperated from code. Thus, you do not want to tie your configuration to your codebase. There are a few exceptions to this, such as <code>conf/routes</code>, and some <code>JAVA_OPTS</code> may be universal. But please use <code>herokuConfigVars</code> sparingly.</p>
<p>Any variable defined in <code>herokuConfigVars</code> will override defaults. However, if you remove a variable from this list, it will not automatically be removed from your Heroku app (even on the next deploy).</p>
<p>You may set process types (similar to a <code>Procfile</code>) with <code>herokuProcessTypes</code>:</p>
<pre><code class="language-scala">herokuProcessTypes in Compile := Map(
"web" -> "target/universal/stage/bin/my-app -Dhttp.port=$PORT",
"worker" -> "java -jar target/universal/stage/lib/my-worker.jar"
)
</code></pre>
<p>You can include additional directories in the slug (they must be relative to the project root):</p>
<pre><code class="language-scala">herokuIncludePaths in Compile := Seq(
"app", "conf/routes", "public/javascripts"
)
</code></pre>
<p>You can run the plugin against all sub-projects (in addition to the root project) by setting the following option:</p>
<pre><code class="language-scala">herokuSkipSubProjects in Compile := false
</code></pre>
<p>This defaults to <code>true</code> (and currently it only runs against all sub-projects or none).</p>
<p>You can disable the upload progress in the console by setting the <code>heroku.log.format</code> system property to <code>false</code>, like this:</p>
<pre><code>$ sbt -Dheroku.log.format=false deployHeroku
</code></pre>
<p>See the <code>src/sbt-test</code> directory for examples.</p>
<h2>Deploying a Fat JAR</h2>
<p>If you are packaging your application with <a href="https://github.com/sbt/sbt-assembly">sbt-assembly</a> or any other plugin that produces a "fat JAR", you can deploy that file by adding the following configuration to your <code>build.sbt</code>:</p>
<pre><code class="language-scala">herokuFatJar in Compile := Some((assemblyOutputPath in assembly).value)
</code></pre>
<p>If not using sbt-assembly, you may replace <code>(assemblyOutputPath in assembly).value</code> with the relative path to your JAR file. Then you can deploy by running:</p>
<pre><code>$ sbt assembly deployHeroku
</code></pre>
<p>The sbt-heroku plugin will skip the sbt-native-packager bits and deploy your JAR directly to Heroku.</p>
<h2>Running a Remote Console</h2>
<p>When using <code>sbt-native-packager</code> version 0.7.6 or greater, sbt-heroku will create a <code>console</code> process type for you. This command can be run like so:</p>
<pre><code class="language-sh-session">$ heroku run console -a <appname>
Running `console` attached to terminal... up, run.5154
Picked up JAVA_TOOL_OPTIONS: -Xmx384m -Djava.rmi.server.useCodebaseOnly=true
Failed to created JLineReader: java.lang.NoClassDefFoundError: scala/tools/jline/console/completer/Completer
Falling back to SimpleReader.
Welcome to Scala version 2.10.4 (OpenJDK 64-Bit Server VM, Java 1.8.0_20).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
</code></pre>
<p>For older versions of Play 2.x it might be necessary to upgrade <code>sbt-native-packager</code> manually. You can do this by adding the following line of code to your <code>project/plugins.sbt</code>:</p>
<pre><code>addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.6")
</code></pre>
<p>Additionally, the is <a href="https://issues.scala-lang.org/browse/SI-9199">a bug in Scala 2.11.6</a> that causes this console task to fail. Upgrading to Scala 2.11.7 fixes the issue.</p>
<h2>Deploying to Multiple Environments</h2>
<p>To deploy to multiple Heroku app environments, you can use either system properties, environment variables, or any other native sbt/Java configuration method. For example, you might define your <code>appName</code> as a Map and choose a value with the system property as a key.</p>
<pre><code class="language-scala">herokuAppName in Compile := Map(
"test" -> "your-heroku-app-test",
"stg" -> "your-heroku-app-stage",
"prod" -> "your-heroku-app-prod"
).getOrElse(sys.props("appEnv"), "your-heroku-app-dev")
</code></pre>
<p>Then run the sbt command like so:</p>
<pre><code class="language-sh-session">$ sbt -DappEnv=test stage deployHeroku
</code></pre>
<h3>Deploying from Git Branches</h3>
<p>Another option when using multiple environments is to deploy from a Git branch that corresponds to the environment. This is particularly useful if you are using <a href="https://github.com/nvie/gitflow">git-flow</a> or a similar process.</p>
<p>First, add the sbt-git plugin ot your <code>project/plugins.sbt</code> like this:</p>
<pre><code class="language-scala">resolvers += "jgit-repo" at "http://download.eclipse.org/jgit/maven"
addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.6.4")
</code></pre>
<p>Then in your <code>build.sbt</code> you can configure the sbt-heroku plugin to deploy to the environment that corresponds to the current Git branch like this:</p>
<pre><code class="language-scala">import com.typesafe.sbt.SbtGit._
// ...
herokuAppName in Compile := Map(
"testing" -> "myapp-testing",
"staging" -> "myapp-staging",
"production" -> "myapp"
).getOrElse(git.gitCurrentBranch.value, "myapp-dev")
showCurrentGitBranch
</code></pre>
<h2>Hacking</h2>
<p>In order to run the test suite, you must have the <a href="https://devcenter.heroku.com/articles/heroku-cli">Heroku CLI</a> installed. Then run:</p>
<pre><code class="language-sh-session">$ sbt scripted
</code></pre>
<p>To run an individual test, use a command like this:</p>
<pre><code class="language-sh-session">$ sbt "scripted settings/config_vars"
</code></pre>
<p>The heavy lifting for this plugin is done by the <code>heroku-deploy</code> library. The source code for that project can be found in the <a href="https://github.com/heroku/heroku-maven-plugin/tree/main/heroku-deploy">heroku-maven-plugin repository</a>. If you need to update that library, do this:</p>
<pre><code class="language-sh-session">$ git clone https://github.com/heroku/heroku-maven-plugin
$ cd heroku-maven-plugin/heroku-deploy
# make your changes
$ mvn clean install
</code></pre>
<p>Then update the <code>heroku-deploy</code> dependency version in the sbt-heroku <code>build.sbt</code> to whatever version is specified in the heroku-deploy <code>pom.xml</code>. The next time you run the <code>scripted</code> tests it will pick up the snapshot version from your local Maven repository.</p>
- hmrc/pbd-4334-live-test
- 2023-12-23T01:38:32Z
- tag:github.com,2023-12-23:/hmrc/pbd-4334-live-test
-
- <p></p><hr><h1>pbd-4334-live-test</h1>
<p>This is a placeholder README.md for a new repository</p>
<h3>License</h3>
<p>This code is open source software licensed under the <a href="https://raw.githubusercontent.com/hmrc/pbd-4334-live-test/main/%22http://www.apache.org/licenses/LICENSE-2.0.html%22">Apache 2.0 License</a>.</p>
+ heroku/scala-play-sample
+ 2023-12-24T01:41:53Z
+ tag:github.com,2023-12-24:/heroku/scala-play-sample
+
+ <p></p><hr><h1>This is your new Play 2.0 application</h1>
<p>This file will be packaged with your application, when using <code>play dist</code>.</p>
+
+
+ heroku/predictionio-engine-ur
+ 2023-12-24T01:41:53Z
+ tag:github.com,2023-12-24:/heroku/predictionio-engine-ur
+
+ <p>Universal Recommender optimized for deployment to Heroku</p><hr><p>⚠️ <strong>This project is no longer active.</strong> No further updates are planned.</p>
<h1><a href="https://predictionio.incubator.apache.org">PredictionIO</a> Universal Recommender for <a href="https://www.heroku.com">Heroku</a></h1>
<p>A fork of the <strong><a href="https://github.com/actionml/universal-recommender">Universal Recommender</a> version 0.5.0</strong> deployable with the <a href="https://github.com/heroku/predictionio-buildpack">PredictionIO buildpack for Heroku</a>. Due to substantial revisions to support Elasticsearch on Heroku, this fork lags behind the main UR; conceptual differences beyond version 0.5.0 are listed in the <a href="http://actionml.com/docs/ur_version_log">UR release log</a>.</p>
<blockquote>
<p>The Universal Recommender (UR) is a new type of collaborative filtering recommender based on an algorithm that can use data from a wide variety of user taste indicators—it is called the <a href="https://mahout.apache.org/users/algorithms/intro-cooccurrence-spark.html">Correlated Cross-Occurrence algorithm</a>. …CCO is able to ingest any number of user actions, events, profile data, and contextual information. It then serves results in a fast and scalable way. It also supports item properties for filtering and boosting recommendations and can therefor be considered a hybrid collaborative filtering and content-based recommender.</p>
</blockquote>
<p>—<a href="https://github.com/actionml/universal-recommender">upstream docs</a></p>
<p>The Heroku app depends on:</p>
<ul>
<li><a href="https://elements.heroku.com/addons/bonsai">Bonsai Add-on</a> to provide the search engine (Elasticsearch 5.x)</li>
<li><a href="https://elements.heroku.com/addons/heroku-postgresql">Heroku Postgres Add-on</a> to provide the database</li>
</ul>
<h2>Demo Story 🐸</h2>
<p>This engine demonstrates recommendation of <strong>items</strong> for a <strong>mobile phone user</strong> based on their <strong>purchase history</strong>. The model is trained with a small <a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/data/initial-events.json">example data set</a>.</p>
<h2>How To 📚</h2>
<p>✏️ Throughout this document, code terms that start with <code>$</code> represent a value (shell variable) that should be replaced with a customized value, e.g <code>$ENGINE_NAME</code>…</p>
<ol>
<li>⚠️ <a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-requirements">Requirements</a></li>
<li>🚀 <a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-demo-deployment">Demo Deployment</a>
<ol>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-create-the-app">Create the app</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-configure-the-app">Configure the app</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-provision-elasticsearch">Provision Elasticsearch</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-provision-postgres">Provision Postgres</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-import-data">Import data</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-deploy-the-app">Deploy the app</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-scale-up">Scale up</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-retry-release">Retry release</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-diagnostics">Diagnostics</a></li>
</ol> </li>
<li>🎯 <a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-query-for-predictions">Query for predictions</a></li>
<li>🛠 <a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-local-development">Local development</a>
<ol>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-import-sample-data">Import sample data</a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-run-pio">Run <code>pio</code></a></li>
<li><a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-query-the-local-engine">Query the local engine</a></li>
</ol> </li>
<li>🎛 <a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/#user-content-configuration">Configuration options</a></li>
</ol>
<h2>Requirements</h2>
<ul>
<li><a href="https://signup.heroku.com">Heroku account</a></li>
<li><a href="https://toolbelt.heroku.com">Heroku CLI</a>, command-line tools</li>
<li><a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git">git</a></li>
</ul>
<h2>Demo Deployment</h2>
<p>Adaptation of the normal <a href="https://github.com/heroku/predictionio-buildpack/raw/master/CUSTOM.md#user-content-engine">PIO engine deployment</a>.</p>
<h3>Create the app</h3>
<pre><code class="language-bash">git clone \
https://github.com/heroku/predictionio-engine-ur.git \
pio-engine-ur
cd pio-engine-ur
heroku create $ENGINE_NAME
heroku buildpacks:add https://github.com/heroku/predictionio-buildpack.git
</code></pre>
<h3>Configure the app</h3>
<pre><code class="language-bash">heroku config:set \
PIO_EVENTSERVER_APP_NAME=ur \
PIO_EVENTSERVER_ACCESS_KEY=$RANDOM-$RANDOM-$RANDOM-$RANDOM-$RANDOM-$RANDOM \
PIO_UR_ELASTICSEARCH_CONCURRENCY=1
</code></pre>
<h3>Provision Elasticsearch</h3>
<pre><code class="language-bash">heroku addons:create bonsai --as PIO_ELASTICSEARCH --version 5.4
</code></pre>
<p>Ensure the <code>--version</code> you specify is a <a href="https://docs.bonsai.io/v1.0/docs/supported-elasticsearch-versions">currently supported version</a>.</p>
<p>In the Bonsai add-on's dashboard, verify that Elasticsearch is really the requested version. Only versions greater than 5.1 will work with this Heroku app. <em>Caution: it's easy to accidentally provision the wrong version.</em></p>
<h3>Provision Postgres</h3>
<pre><code class="language-bash">heroku addons:create heroku-postgresql:hobby-dev
</code></pre>
<ul>
<li>Use a higher-level, paid plan for anything but a small demo.</li>
<li><code>hobby-basic</code> is the smallest paid <a href="https://elements.heroku.com/addons/heroku-postgresql#pricing">heroku-postgresql plan</a></li>
</ul>
<h3>Import data</h3>
<p>Initial training data is automatically imported from <a href="https://raw.githubusercontent.com/heroku/predictionio-engine-ur/master/data/initial-events.json"><code>data/initial-events.json</code></a>.</p>
<p>👓 When you're ready to begin working with your own data, read about strategies for <a href="https://github.com/heroku/predictionio-buildpack/raw/master/CUSTOM.md#user-content-import-data">importing data</a>.</p>
<h3>Deploy the app</h3>
<pre><code class="language-bash">git push heroku master
# Follow the logs to see training & web start-up
#
heroku logs -t
</code></pre>
<p>⚠️ <strong>Initial deploy will probably fail due to memory constraints.</strong> Proceed to scale up.</p>
<h3>Scale up</h3>
<p>Once deployed, scale up the processes to avoid memory issues:</p>
<pre><code class="language-bash">heroku ps:scale \
web=1:Standard-2X \
release=0:Performance-L \
train=0:Performance-L
</code></pre>
<p>💵 <em>These are paid, <a href="https://devcenter.heroku.com/articles/dyno-types#available-dyno-types">professional dyno types</a></em></p>
<h3>Retry release</h3>
<p>When the release (<code>pio train</code>) fails due to memory constraints or other transient error, you may use the Heroku CLI <a href="https://github.com/heroku/heroku-releases-retry">releases:retry plugin</a> to rerun the release without pushing a new deployment:</p>
<pre><code class="language-bash"># First time, install it.
heroku plugins:install heroku-releases-retry
# Re-run the release & watch the logs
heroku releases:retry
heroku logs -t
</code></pre>
<h2>Query for predictions</h2>
<p>Once deployment completes, the engine is ready to recommend of <strong>items</strong> for a <strong>mobile phone user</strong> based on their <strong>purchase history</strong>.</p>
<p>Get all recommendations for a user:</p>
<pre><code class="language-bash"># an Android user
curl -X "POST" "http://$ENGINE_NAME.herokuapp.com/queries.json" \
-H "Content-Type: application/json" \
-d $'{"user": "100"}'
</code></pre>
<pre><code class="language-bash"># an iPhone user
curl -X "POST" "http://$ENGINE_NAME.herokuapp.com/queries.json" \
-H "Content-Type: application/json" \
-d $'{"user": "200"}'
</code></pre>
<p>Get recommendations for a user, excluding <em>phones</em>:</p>
<pre><code class="language-bash">curl -X "POST" "http://$ENGINE_NAME.herokuapp.com/queries.json" \
-H "Content-Type: application/json" \
-d $'{
"user": "100",
"fields": [{
"name": "category",
"values": ["phone"],
"bias": 0
}]
}'
</code></pre>
<p>Get accessory recommendations for a user excluding <em>phones</em> & boosting <em>power-related items</em>:</p>
<pre><code class="language-bash">curl -X "POST" "http://$ENGINE_NAME.herokuapp.com/queries.json" \
-H "Content-Type: application/json" \
-d $'{
"user": "100",
"fields": [{
"name": "category",
"values": ["phone"],
"bias": 0
},{
"name": "category",
"values": ["power"],
"bias": 1.5
}
}'
</code></pre>
<p>For a user with no purchase history, the recommendations will be based on popularity:</p>
<pre><code class="language-bash">curl -X "POST" "http://$ENGINE_NAME.herokuapp.com/queries.json" \
-H "Content-Type: application/json" \
-d $'{"user": "000"}'
</code></pre>
<p>Get recommendations based on similarity with an <em>item</em>:</p>
<pre><code class="language-bash">curl -X "POST" "http://$ENGINE_NAME.herokuapp.com/queries.json" \
-H "Content-Type: application/json" \
-d $'{"item": "101"}'
</code></pre>
<p>Get recommendations for a <em>user</em> boosting on similarity with an <em>item</em>:</p>
<pre><code class="language-bash">curl -X "POST" "http://$ENGINE_NAME.herokuapp.com/queries.json" \
-H "Content-Type: application/json" \
-d $'{
"user": "100",
"item": "101"
}'
</code></pre>
<p>👓 See the main <a href="http://actionml.com/docs/ur_queries">Universal Recommender query docs</a> for more parameters. <em>Please note those docs have been updated for the newest version 0.6.0, but this repo provides version 0.5.0. Differences are listed in the <a href="http://actionml.com/docs/ur_version_log">UR release log</a>.</em></p>
<h2>Local Development</h2>
<h3>Clone Engine Template</h3>
<p>Start in this repo's working directory. If you don't already have it cloned, then do it now:</p>
<pre><code class="language-bash">git clone \
https://github.com/heroku/predictionio-engine-ur.git \
pio-engine-ur
cd pio-engine-ur
</code></pre>
<h3>Set-up PredictionIO</h3>
<p>➡️ <strong><a href="https://github.com/heroku/predictionio-buildpack/raw/master/DEV.md">Setup local development</a> including Elasticsearch.</strong></p>
<p><code>bin/pio status</code> should succeed when this setup is complete.</p>
<h3>Import sample data</h3>
<pre><code class="language-bash">bin/pio app new ur
PIO_EVENTSERVER_APP_NAME=ur data/import-events -f data/initial-events.json
</code></pre>
<h3>Run <code>pio</code></h3>
<pre><code class="language-bash">bin/pio build
bin/pio train -- --driver-memory 2500m
bin/pio deploy
</code></pre>
<h3>Query the local engine</h3>
<pre><code class="language-bash">curl -X "POST" "http://127.0.0.1:8000/queries.json" \
-H "Content-Type: application/json" \
-d $'{
"user": "100",
"fields": [{
"name": "category",
"values": ["phone"],
"bias": 0
}]
}'
</code></pre>
<h2>Configuration</h2>
<ul>
<li><code>PIO_UR_ELASTICSEARCH_CONCURRENCY</code>
<ul>
<li>may increase in-line with the <a href="https://elements.heroku.com/addons/bonsai">Bonsai Add-on plan's</a> value for <strong>Concurrent Indexing</strong></li>
<li>the max for a dedicated Elasticsearch cluster is "unlimited", but in reality set it to match the number of Spark executor cores</li>
</ul> </li>
<li><code>PIO_UR_ELASTICSEARCH_INDEX_REPLICAS</code>
<ul>
<li>more replicas may improve concurrent search performance</li>
<li>should increase in-line with the number of Elasticsearch nodes (n-1) in the cluster</li>
<li>takes effect after the next training, when a new index is inserted</li>
</ul> </li>
</ul>
\ No newline at end of file
diff --git a/scala/weekly/index.xml b/scala/weekly/index.xml
new file mode 100644
index 00000000000..554179005b3
--- /dev/null
+++ b/scala/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Scala Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:08Z
+ Weekly Trending of Scala in GitHub
+
+
+ jeff-m-t-wt/lib2
+ 2023-12-24T01:59:08Z
+ tag:github.com,2023-12-24:/jeff-m-t-wt/lib2
+
+ <p>Another fake library</p><hr><h1>lib2</h1>
<p>Another fake library</p>
+
+
+ numa08/numa08
+ 2023-12-24T01:59:08Z
+ tag:github.com,2023-12-24:/numa08/numa08
+
+ <p>i'm numa08</p><hr><h1>This is your new Play application</h1>
<p>This file will be packaged with your application, when using <code>play dist</code>.</p>
+
+
+ geminicaprograms/fp_learning
+ 2023-12-24T01:59:08Z
+ tag:github.com,2023-12-24:/geminicaprograms/fp_learning
+
+ <p>Functional Programming learning repo</p><hr><p>Functional Programming assignments implementation so that it is not dropped branch version plus hotfix ;) In the mean time new changes were placed into repo + additional branch fixes. Master work was done as well RB1.1.1 plus some fixes</p>
+
+
\ No newline at end of file
diff --git a/scaml/daily/index.xml b/scaml/daily/index.xml
index da74c488acb..65f9f44cceb 100644
--- a/scaml/daily/index.xml
+++ b/scaml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Scaml Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:29Z
+ 2023-12-24T01:41:49Z
Daily Trending of Scaml in GitHub
\ No newline at end of file
diff --git a/scaml/weekly/index.xml b/scaml/weekly/index.xml
new file mode 100644
index 00000000000..3617db47d8d
--- /dev/null
+++ b/scaml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Scaml Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:04Z
+ Weekly Trending of Scaml in GitHub
+
+
\ No newline at end of file
diff --git a/scheme/daily/index.xml b/scheme/daily/index.xml
index e42e5bb4d94..f9ba4a3f11e 100644
--- a/scheme/daily/index.xml
+++ b/scheme/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Scheme Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:28Z
+ 2023-12-24T01:41:50Z
Daily Trending of Scheme in GitHub
\ No newline at end of file
diff --git a/scheme/weekly/index.xml b/scheme/weekly/index.xml
new file mode 100644
index 00000000000..8dafac0a9b4
--- /dev/null
+++ b/scheme/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Scheme Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:05Z
+ Weekly Trending of Scheme in GitHub
+
+
\ No newline at end of file
diff --git a/scilab/daily/index.xml b/scilab/daily/index.xml
index 8427aa8e188..75139c0cfd5 100644
--- a/scilab/daily/index.xml
+++ b/scilab/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Scilab Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:41Z
+ 2023-12-24T01:41:59Z
Daily Trending of Scilab in GitHub
\ No newline at end of file
diff --git a/scilab/weekly/index.xml b/scilab/weekly/index.xml
new file mode 100644
index 00000000000..c30489c98e9
--- /dev/null
+++ b/scilab/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Scilab Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:13Z
+ Weekly Trending of Scilab in GitHub
+
+
\ No newline at end of file
diff --git a/scss/daily/index.xml b/scss/daily/index.xml
index 4a2067b486b..0e0ce55fb8e 100644
--- a/scss/daily/index.xml
+++ b/scss/daily/index.xml
@@ -1,14 +1,14 @@
GitHub SCSS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:45Z
+ 2023-12-24T01:42:03Z
Daily Trending of SCSS in GitHub
- apache/incubator-seata-website
- 2023-12-23T01:38:45Z
- tag:github.com,2023-12-23:/apache/incubator-seata-website
-
- <p>Apache Seata(incubating) Website</p><hr>
+ unso99/aconr_kiosk
+ 2023-12-24T01:42:03Z
+ tag:github.com,2023-12-24:/unso99/aconr_kiosk
+
+ <p></p><hr>
\ No newline at end of file
diff --git a/scss/weekly/index.xml b/scss/weekly/index.xml
new file mode 100644
index 00000000000..85735d616a8
--- /dev/null
+++ b/scss/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub SCSS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:17Z
+ Weekly Trending of SCSS in GitHub
+
+
+ kodekloudhub/learning-app-ecommerce
+ 2023-12-24T01:59:17Z
+ tag:github.com,2023-12-24:/kodekloudhub/learning-app-ecommerce
+
+ <p>A sample e-commerce learning app</p><hr>
+
+
+ RayeRen/rayeren.github.io
+ 2023-12-24T01:59:17Z
+ tag:github.com,2023-12-24:/RayeRen/rayeren.github.io
+
+ <p>My personal homepage</p><hr>
+
+
\ No newline at end of file
diff --git a/sed/daily/index.xml b/sed/daily/index.xml
index 8c7f4f94c11..3b0cd011c15 100644
--- a/sed/daily/index.xml
+++ b/sed/daily/index.xml
@@ -1,7 +1,7 @@
GitHub sed Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:42Z
+ 2023-12-24T01:42:00Z
Daily Trending of sed in GitHub
\ No newline at end of file
diff --git a/sed/weekly/index.xml b/sed/weekly/index.xml
new file mode 100644
index 00000000000..5e8c35f99a6
--- /dev/null
+++ b/sed/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub sed Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:14Z
+ Weekly Trending of sed in GitHub
+
+
\ No newline at end of file
diff --git a/self/daily/index.xml b/self/daily/index.xml
index 328d48dc230..778e3cce445 100644
--- a/self/daily/index.xml
+++ b/self/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Self Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:40Z
+ 2023-12-24T01:42:00Z
Daily Trending of Self in GitHub
\ No newline at end of file
diff --git a/self/weekly/index.xml b/self/weekly/index.xml
new file mode 100644
index 00000000000..1746a8add92
--- /dev/null
+++ b/self/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Self Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:15Z
+ Weekly Trending of Self in GitHub
+
+
\ No newline at end of file
diff --git a/selinux-policy/daily/index.xml b/selinux-policy/daily/index.xml
index 017ca9f2287..dacd8356e30 100644
--- a/selinux-policy/daily/index.xml
+++ b/selinux-policy/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SELinux Policy Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:47Z
+ 2023-12-24T01:42:04Z
Daily Trending of SELinux Policy in GitHub
\ No newline at end of file
diff --git a/selinux-policy/weekly/index.xml b/selinux-policy/weekly/index.xml
new file mode 100644
index 00000000000..5405f3fc376
--- /dev/null
+++ b/selinux-policy/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SELinux Policy Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:18Z
+ Weekly Trending of SELinux Policy in GitHub
+
+
\ No newline at end of file
diff --git a/shaderlab/daily/index.xml b/shaderlab/daily/index.xml
index 7ee3381548c..98e22aa0dbf 100644
--- a/shaderlab/daily/index.xml
+++ b/shaderlab/daily/index.xml
@@ -1,14 +1,7 @@
GitHub ShaderLab Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:48Z
+ 2023-12-24T01:42:05Z
Daily Trending of ShaderLab in GitHub
-
- aniketrajnish/SpiderVersePostProcess-Unreal-Unity
- 2023-12-23T01:38:48Z
- tag:github.com,2023-12-23:/aniketrajnish/SpiderVersePostProcess-Unreal-Unity
-
- <p>Spiderverse-insprired stylized post processing-effect for Unreal Engine and Unity</p><hr>
-
\ No newline at end of file
diff --git a/shaderlab/weekly/index.xml b/shaderlab/weekly/index.xml
new file mode 100644
index 00000000000..2c27cb03a2c
--- /dev/null
+++ b/shaderlab/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub ShaderLab Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:20Z
+ Weekly Trending of ShaderLab in GitHub
+
+
+ kaze-mio/NahidaRenderProject
+ 2023-12-24T01:59:20Z
+ tag:github.com,2023-12-24:/kaze-mio/NahidaRenderProject
+
+ <p>A Unity sample project, for rendering Genshin characters like Nahida.</p><hr>
+
+
\ No newline at end of file
diff --git a/shell/daily/index.xml b/shell/daily/index.xml
index ad09d5e04c6..b4fa9b963f6 100644
--- a/shell/daily/index.xml
+++ b/shell/daily/index.xml
@@ -1,21 +1,28 @@
GitHub Shell Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:51Z
+ 2023-12-24T01:42:08Z
Daily Trending of Shell in GitHub
- wukongdaily/diy-nas-onescript
- 2023-12-23T01:38:51Z
- tag:github.com,2023-12-23:/wukongdaily/diy-nas-onescript
-
- <p>这是一个适用于在debian系统上部署nas常用软件的脚本。它可以帮助用户快速安装想要的软件环境和docker应用。</p><hr><h1>diy-nas-onescript</h1>
<p><img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/wukongdaily/diy-nas-onescript?labelColor=%23FF8C00&color=black"> <img alt="GitHub License" src="https://img.shields.io/github/license/wukongdaily/diy-nas-onescript?labelColor=%23FF4500&color=black"> <img alt="GitHub forks" src="https://img.shields.io/github/forks/wukongdaily/diy-nas-onescript?labelColor=%238A2BE2&color=black"> <img alt="GitHub release (by tag)" src="https://img.shields.io/github/downloads/wukongdaily/diy-nas-onescript/20231204/total?label=%E4%B8%8B%E8%BD%BD%E6%AC%A1%E6%95%B0&labelColor=%2332CD32&color=black"></p>
<p>这是一个适用于在deepin v23beta2 系统上部署nas常用软件的脚本。它可以帮助用户快速安装想要的软件环境和docker应用。</p>
<h2>❤<a href="https://github.com/wukongdaily/diy-nas-onescript/wiki">使用方法 Wiki</a></h2>
<h2>‼️<a href="https://github.com/wukongdaily/diy-nas-onescript/issues">提BUG</a></h2>
<h2>适配系统</h2>
<p>✅ Deepin v23beta2<br> ✅ Deepin v20.9</p>
<h2>相关项目</h2>
<p><a href="https://bbs.deepin.org/post/209756">https://bbs.deepin.org/post/209756</a><br> <a href="https://github.com/IceWhaleTech/CasaOS">https://github.com/IceWhaleTech/CasaOS</a><br> <a href="https://github.com/orgs/linuxdeepin/projects/29/views/2">https://github.com/orgs/linuxdeepin/projects/29/views/2</a><br> <a href="https://www.deepin.org/zh/deepin-v23-beta2-released/">https://www.deepin.org/zh/deepin-v23-beta2-released/</a></p>
<h2>截图</h2>
<p><img src="https://github.com/wukongdaily/diy-nas-onescript/assets/143675923/3e132260-ff1a-4bc7-9b53-16cf7c466fae" alt="image"></p>
+ WesleyHsieh0806/TAO-Amodal
+ 2023-12-24T01:42:08Z
+ tag:github.com,2023-12-24:/WesleyHsieh0806/TAO-Amodal
+
+ <p>Official Code for Tracking Any Object Amodally</p><hr><h1>TAO-Amodal</h1>
<p>Official Repository of Tracking Any Object Amodally.</p>
<!-- [**<span>📎</span> Paper Link**]() -->
<p><a href="https://tao-amodal.github.io/"><strong><span>📙</span> Project Page</strong></a> | <a href="https://arxiv.org/abs/2312.12433"><strong><span>📎</span> Paper Link</strong></a> | <a href="https://raw.githubusercontent.com/WesleyHsieh0806/TAO-Amodal/main/#citations"><strong><span>✏</span> Citations</strong></a></p>
<div align="center">
<a href="https://tao-amodal.github.io/"><img width="95%" alt="TAO-Amodal" src="https://tao-amodal.github.io/static/images/webpage_preview.png"></a>
</div>
<br>
<p><span>📌</span> Leave a <span>⭐</span> to keep track of our updates.</p>
<hr>
<h2> Table of Contents</h2>
<ul>
<li> <a href="https://raw.githubusercontent.com/WesleyHsieh0806/TAO-Amodal/main/#school_satchel-get-started">Get Started</a> </li>
<li> <a href="https://raw.githubusercontent.com/WesleyHsieh0806/TAO-Amodal/main/#books-prepare-dataset">Download Dataset</a>
<ul>
<!-- <li><a href="#built-with">Built With</a></li> -->
</ul> </li>
<li> <a href="https://raw.githubusercontent.com/WesleyHsieh0806/TAO-Amodal/main/#artist-visualization">Visualization </a> </li>
<li> <a href="https://raw.githubusercontent.com/WesleyHsieh0806/TAO-Amodal/main/#running-training">Training</a> </li>
<li> <a href="https://raw.githubusercontent.com/WesleyHsieh0806/TAO-Amodal/main/#bar_chart-evaluation">Evaluation</a> </li>
<li> <a href="https://raw.githubusercontent.com/WesleyHsieh0806/TAO-Amodal/main/#citations">Citations</a> </li>
</ul>
<hr>
<h2><span>🎒</span> Get Started</h2>
<p>Clone the repository</p>
<pre><code class="language-bash">git clone https://github.com/WesleyHsieh0806/TAO-Amodal.git
</code></pre>
<p>Setup environment</p>
<pre><code class="language-bash">conda create --name TAO-Amodal python=3.9 -y
conda activate TAO-Amodal
bash environment_setup.sh
</code></pre>
<h2><span>📚</span> Prepare Dataset</h2>
<p>Incoming...</p>
<h2><span>🧑🎨</span> Visualization</h2>
<h2><span>🏃</span> Training</h2>
<h2><span>📊</span> Evaluation</h2>
<h2>Citations</h2>
<pre><code class="language-bash">@misc{hsieh2023tracking,
title={Tracking Any Object Amodally},
author={Cheng-Yen Hsieh and Tarasha Khurana and Achal Dave and Deva Ramanan},
year={2023},
eprint={2312.12433},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
</code></pre>
- king-hacking/King-Hacking
- 2023-12-23T01:38:51Z
- tag:github.com,2023-12-23:/king-hacking/King-Hacking
-
- <p>Now you can download the most powerful tools using this simple script</p><hr><h2>Now you can download the most powerful tools using this simple script</h2>
<h3>Screenshot</h3>
<p><img src="http://www.m9c.net/uploads/15563553591.jpg" alt="Screen"></p>
<h3>Installations</h3>
<pre><code>git clone https://github.com/king-hacking/King-Hacking.git
cd King-Hacking
bash King-Tools.sh
</code></pre>
<h3>My Accounts</h3>
<ul>
<li><a href="https://t.me/w_e_a">TELEGRAM</a></li>
<li><a href="https://www.facebook.com/king.hacking.sy">FACEBOOK</a></li>
<li><a href="https://instagram.com/king1hacking">INSTAGRAM</a></li>
</ul>
+ P3t3rp4rk3r/OSCP-cheat-sheet-1
+ 2023-12-24T01:42:08Z
+ tag:github.com,2023-12-24:/P3t3rp4rk3r/OSCP-cheat-sheet-1
+
+ <p>list of useful commands, shells and notes related to OSCP</p><hr><p>Hello,</p>
<p>If you are here, you are probably studying for OSCP, so I whish you good luck.</p>
+
+
+ TheFreeman193/PIFS
+ 2023-12-24T01:42:08Z
+ tag:github.com,2023-12-24:/TheFreeman193/PIFS
+
+ <p>A collection of build properties for the PIF module</p><hr><h1>Play Integrity Fix Props Collection</h1>
<h2>What is this?</h2>
<p>This repository contains JSON files compatible with the <a href="https://github.com/chiteroman/PlayIntegrityFix">Play Integrity Fix</a> module by <a href="https://github.com/chiteroman/">chiteroman</a> or <a href="https://github.com/osm0sis/PlayIntegrityFork">PlayIntegrityFork</a> made by <a href="https://github.com/osm0sis">osm0sis</a>.</p>
<p>If you don't use a custom ROM and haven't rooted your Android device, you're in the wrong place!</p>
<h2>Why is this needed?</h2>
<p>By default, the PIF module and some of its forks use a default set of build properties (hereafter called a <em>profile</em>) including a build fingerprint for Play Integrity attestation. With tens of thousands of users using the same profile, the Play Integrity servers inevitably block the associated fingerprint for software attestation.</p>
<p>The best solution in the meantime is for every user to choose a working profile (<code>pif.json</code> file) of their own. Both the original PIF module and its major fork support this using a JSON file containing real properties from a working device.</p>
<h2>How do I choose a JSON file?</h2>
<h3>Option 1: Using <code>pickaprint.sh</code></h3>
<p>This repository includes <code>pickaprint.sh</code> which automates the random selection of a profile with the same ABI compatibility as your device. If piped directly from <code>curl</code>, it will download the PIFS repository, extract the JSON files, and pick one from the relevant folder at random.</p>
<p>In your favourite terminal emulator:</p>
<pre><code class="language-sh">su # The script needs to be run as root in order to copy a profile to /data/adb
cd /storage/emulated/0 # Choose a place to download the collection
curl "https://raw.githubusercontent.com/TheFreeman193/PIFS/main/pickaprint.sh" | sh
</code></pre>
<p>Or in Termux:</p>
<pre><code class="language-sh">/data/data/com.termux/files/usr/bin/curl "https://raw.githubusercontent.com/TheFreeman193/PIFS/main/pickaprint.sh" | sh
</code></pre>
<p>Or using Magisk's busybox:</p>
<pre><code class="language-sh">/data/adb/magisk/busybox wget -O - "https://raw.githubusercontent.com/TheFreeman193/PIFS/main/pickaprint.sh" | sh
</code></pre>
<blockquote>
<p><strong>NOTE</strong>: Please don't just run random scripts from the internet, especially as root. I strongly urge you to look at the script first and get a basic idea of what it does.</p>
</blockquote>
<p>Once a subdirectory called <code>JSON</code> exists, the script will search for JSON profiles there instead of downloading the repository all over again. This means you can either run the <code>curl</code> command above again, or run the script directly and the collection won't be re-downloaded.</p>
<p>To update the collection, delete the <code>JSON</code> directory that the script created and run the script again.</p>
<p>Alternatively, you could download/clone the repository and run the <code>pickaprint.sh</code> script directly from the download location.</p>
<h3>Option 2: Manually Selecting a File</h3>
<blockquote>
<p><strong>Please choose a random file from the relevant directory.</strong> Everyone picking the first or last file will inevitably result in that profile being blocked for software attestation.</p>
</blockquote>
<p>The complete compatibility matrix for profiles and Android device isn't yet known - the Android ecosystem is huge and diverse, so this is to be expected. It appears the list of ABIs your device supports needs to match the device the profile is from.</p>
<p>To test for this, enter the following in your favourite terminal emulator:</p>
<pre><code class="language-sh">getprop | grep 'cpu\.abilist'
</code></pre>
<p>Or with ADB:</p>
<pre><code class="language-sh">adb shell "getprop | grep 'cpu\.abilist'"
</code></pre>
<p>You should get a result that looks something like this:</p>
<pre><code class="language-text">[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
[ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist64]: [arm64-v8a]
[ro.system.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
[ro.system.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.system.product.cpu.abilist64]: [arm64-v8a]
[ro.vendor.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
[ro.vendor.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.vendor.product.cpu.abilist64]: [arm64-v8a]
</code></pre>
<p>In this instance, the value to note is <code>arm64-v8a,armeabi-v7a,armeabi</code>.</p>
<p>The repository is divided by common ABI list values, so please pick a random JSON file from the relevant folder.</p>
<h2>Where do I put the JSON file?</h2>
<p>If copying a file manually (Option 2) there are a couple of places the JSON might need to go.</p>
<p>For the Play Integrity Fix module by <a href="https://github.com/chiteroman/">chiteroman</a> you should copy the JSON file to:</p>
<pre><code class="language-text">/data/adb/pif.json
</code></pre>
<p>And for the <a href="https://github.com/osm0sis">osm0sis</a> fork (PlayIntegrityFork):</p>
<pre><code class="language-text">/data/adb/modules/playintegrityfix/custom.pif.json
</code></pre>
<p>An example command in your terminal emulator might be:</p>
<pre><code class="language-sh">su -c cp /storage/emulated/0/Download/JSON/arm64-v8a/release-keys/user/Sony_qssi_qssi_13_TKQ1.220807.001_1_user_release-keys.json /data/adb/pif.json
</code></pre>
<p>Or with ADB in root mode:</p>
<pre><code class="language-batch">adb push "C:\Users\<User>\Downloads\PIFS\JSON\arm64-v8a\release-keys\user\Sony_qssi_qssi_13_TKQ1.220807.001_1_user_release-keys.json" /data/adb/pif.json
</code></pre>
<h2>The JSON file I tried doesn't work</h2>
<p>This is expected. The profiles in this repository haven't been tested and, even if they had, it's possible each will only work for a subset of devices. Keep trying <strong>random</strong> profiles from the relevant folder until one passes the integrity level you want.</p>
<p>Ideally, you'll be able to use your tested profile going forward. If too many people choose the same one (we're talking thousands, which is less likely if everyone picks at random) it may get blocked for software attestations. In this case, choose another! There are plenty to go around.</p>
<h2><code>curl</code> not found or inaccessible</h2>
<p>Some users have reported <code>curl</code> not working in the root shell.</p>
<p>If you're using Termux as your terminal emulator, you can run the following command (as root):</p>
<pre><code class="language-sh">/data/data/com.termux/files/usr/bin/curl "https://raw.githubusercontent.com/TheFreeman193/PIFS/main/pickaprint.sh" | sh
</code></pre>
<p>If your build has <code>wget</code>, you can use this command instead (as root):</p>
<pre><code class="language-sh">wget -O - "https://raw.githubusercontent.com/TheFreeman193/PIFS/main/pickaprint.sh" | sh
</code></pre>
<p>If you're using Magisk for root, you can try using the included busybox <code>wget</code>:</p>
<pre><code class="language-sh">/data/adb/magisk/busybox wget -O - "https://raw.githubusercontent.com/TheFreeman193/PIFS/main/pickaprint.sh" | sh
</code></pre>
<p>Or call it directly - it's usually found in one of:</p>
<ul>
<li><code>/debug_ramdisk/.magisk/busybox/wget</code></li>
<li><code>/sbin/.magisk/busybox/wget</code></li>
</ul>
<h2>The script detects the wrong ABI list on my device</h2>
<p>If this occurs, you can override the directory the script chooses for fingerprints by setting <code>$FORCEABI</code> in the environment. In your favourite terminal emulator:</p>
<pre><code class="language-sh">su # Run as root
cd /storage/emulated/0 # Choose the download location where you ran curl
export FORCEABI="armeabi-v7a,armeabi" # Force a different ABI list
cat ./pickaprint.sh | sh # Run the script again
</code></pre>
<p>If you find fingerprints from another directory work, you can make the <code>$FORCEABI</code> variable persistent in Termux. For example:</p>
<pre><code class="language-sh">echo 'export FORCEABI="armeabi-v7a,armeabi"' > /data/data/com.termux/files/home/.bashrc
</code></pre>
<h2>What is the ABI list?</h2>
<blockquote>
<p>You can skip the first paragraph if you aren't interested in the technical explanation.</p>
</blockquote>
<p>ABIs (application binary interfaces) are low-level interfaces that allow binary processes to interact independent of hardware architecture. You can think of ABIs as the machine-code counterpart to APIs (application programming interfaces). ABIs allow Android components and applications to run on a variety of architectures and instruction sets, like x86 and ARM. List of ABIs supported are stored in a build properties such as <code>ro.product.cpu.abilist</code>.</p>
<p>The ABI list is a device property, like the <em>model</em> or <em>fingerpint</em>, and appears to affect Play Integrity verdicts. Using a fingerprint/profile from a device with a different ABI list fails more often that it works in my testing. This is why the profiles in the repository are divided by supported ABIs - you're much more like to find a profile that works by using a fingerprint from right directory for your device.</p>
<h2>How was this created?</h2>
<p>The internet is awash with Android builds and every ROM, whether complete or in source code, contains build properties. My specialty is in automation (please see the <a href="https://leanpub.com/u/devopscollective">textbooks</a> I've helped to write - 100% of profits go into scholarships). My tools, with the aid of the web crawlers from major search engines, have collected a large number of build profiles and extracted the necessary properties to generate compatible JSON files.</p>
<p>I don't intend to release the source code for the collection tools at the moment - many users hammering repository service APIs and individual websites for the same information isn't fair. I may publish raw build property files at a later date for sources from which I can obtain relevant permissions.</p>
<h2>Further advice</h2>
<ul>
<li>Build profiles of the <code>user</code> type with <code>release-keys</code> tags are more likely to work than <code>userdebug</code> and <code>test-keys</code> or <code>dev-keys</code> builds.</li>
<li>If you lost the <code>MEETS_BASIC_INTEGRITY</code> verdict with all the profiles you try, you might be using profiles with the wrong ABI compatibility. Check your device's ABI list again or try profiles from another folder.</li>
<li>Fingerprints/properties with generic values such <code>generic</code>, <code>mainline</code>, and <code>Android</code> are likely to fail and you should use the equivalent <em>product</em> or <em>vendor</em> values instead.</li>
<li>If you're intermittently passing and failing verdicts with the same profile, it may be that the Play Integrity system is detecting your rooted environment. Try using root detectors such as <a href="https://github.com/KimChangYoun/rootbeerFresh/">RootBeerFresh</a> to check your environment and look at the logs for any Magisk/KernelSU modules you have installed.</li>
<li>If you're getting timeouts or <em>too many requests</em> errors, the app you're using to check Play Integrity verdicts has hit its API limit. Use the checker within Google Play Store instead.</li>
</ul>
<h2>Play Store Integrity Check</h2>
<p>To check Play Integrity verdicts without a third party app, open Play Store and go to settings (click profile icon in top right -> <em>Settings</em>). In the <em>About</em> menu, tap <em>Play Store version</em> repeatedly until you get a notification toast saying "You are now a developer". Scroll up to the <em>General</em> menu, open it and click <em>Developer options</em>. In this submenu you can click <em>Check integrity</em> to run a Play Integrity check.</p>
<p>The verdicts you need for most apps are <code>MEETS_BASIC_INTEGRITY</code> and <code>MEETS_DEVICE_INTEGRITY</code>.</p>
\ No newline at end of file
diff --git a/shell/weekly/index.xml b/shell/weekly/index.xml
new file mode 100644
index 00000000000..90b49dd3883
--- /dev/null
+++ b/shell/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Shell Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:22Z
+ Weekly Trending of Shell in GitHub
+
+
+ Elegycloud/clash-for-linux-backup
+ 2023-12-24T01:59:22Z
+ tag:github.com,2023-12-24:/Elegycloud/clash-for-linux-backup
+
+ <p>Linux最完整的Clash for Linux的备份仓库,完全可以使用!由Yizuko进行修复及维护</p><hr><p>[TOC]</p>
<h1>项目介绍</h1>
<p>此项目是通过使用开源项目<a href="https://github.com/Dreamacro/clash">clash(已跑路)</a>作为核心程序,再结合脚本实现简单的代理功能。<br> clash核心备份仓库<a href="https://github.com/Elegycloud/clash-for-linux-backup">Clash-backup</a></p>
<p>主要是为了解决我们在服务器上下载GitHub等一些国外资源速度慢的问题。</p>
<p>由于作者已经跑路,当前为Elegycloud进行备份,若有侵犯您的权利,请提交issues我会看到并删除仓库<br> clash for linux 备份(备份号:202311091510)。 若喜欢本项目,请点个小星星! <br></p>
<h1>使用须知</h1>
<ul>
<li>运行本项目建议使用root用户,或者使用 sudo 提权。</li>
<li>使用过程中如遇到问题,请优先查已有的 <a href="https://github.com/Elegycloud/clash-for-linux-backup/issues">issues</a>。</li>
<li>在进行issues提交前,请替换提交内容中是敏感信息(例如:订阅地址)。</li>
<li>本项目是基于 <a href="https://github.com/Dreamacro/clash">clash(已跑路)</a> 、<a href="https://github.com/haishanh/yacd">yacd</a> 进行的配置整合,关于clash、yacd的详细配置请去原项目查看。</li>
<li>此项目不提供任何订阅信息,请自行准备Clash订阅地址。</li>
<li>运行前请手动更改<code>.env</code>文件中的<code>CLASH_URL</code>变量值,否则无法正常运行。</li>
<li>当前在RHEL系列和Debian,Kali Linux,ubuntu以及Linux系统中测试过,其他系列可能需要适当修改脚本。</li>
<li>支持 x86_64/aarch64 平台</li>
<li>【注意:部分带有桌面端Linux系统的需要在浏览器设置代理!否则有可能无法使用!】</li>
<li>【若系统代理无法使用,但是想要系统代理,请修改尝试修改start.sh中的端口改成7891!】</li>
<li>【还是无法使用请更换当前网络环境(也是其中一个因素!)】</li>
<li>谷歌,twitter,youtube等可能无法ping通,正常现象!</li>
</ul>
<pre><code class="language-bash"># 开启系统代理
function proxy_on() {
export http_proxy=http://127.0.0.1:修改这里
export https_proxy=http://127.0.0.1:修改这里
export no_proxy=127.0.0.1,localhost
export HTTP_PROXY=http://127.0.0.1:修改这里
export HTTPS_PROXY=http://127.0.0.1:修改这里
export NO_PROXY=127.0.0.1,localhost
echo -e "\033[32m[√] 已开启代理\033[0m"
}
</code></pre>
<blockquote>
<p><strong>注意</strong>:当你在使用此项目时,遇到任何无法独自解决的问题请优先前往 <a href="https://github.com/Elegycloud/clash-for-linux-backup/issue">Issues</a> 寻找解决方法。由于空闲时间有限,后续将不再对Issues中 “已经解答”、“已有解决方案” 的问题进行重复性的回答。</p>
</blockquote>
<br>
<h1>使用教程</h1>
<h2>下载项目</h2>
<p>下载项目</p>
<pre><code class="language-bash">$ git clone https://github.com/Elegycloud/clash-for-linux-backup.git
</code></pre>
<p>进入到项目目录,编辑<code>.env</code>文件,修改变量<code>CLASH_URL</code>的值。</p>
<pre><code class="language-bash">$ cd clash-for-linux
$ vim .env
</code></pre>
<blockquote>
<p><strong>注意:</strong> <code>.env</code> 文件中的变量 <code>CLASH_SECRET</code> 为自定义 Clash Secret,值为空时,脚本将自动生成随机字符串。</p>
</blockquote>
<br>
<h2>启动程序</h2>
<p>直接运行脚本文件<code>start.sh</code></p>
<ul>
<li>进入项目目录</li>
</ul>
<pre><code class="language-bash">$ cd clash-for-linux
</code></pre>
<ul>
<li>运行启动脚本</li>
</ul>
<pre><code class="language-bash">$ sudo bash start.sh
正在检测订阅地址...
Clash订阅地址可访问! [ OK ]
正在下载Clash配置文件...
配置文件config.yaml下载成功! [ OK ]
正在启动Clash服务...
服务启动成功! [ OK ]
Clash Dashboard 访问地址:http://<ip>:9090/ui
Secret:xxxxxxxxxxxxx
请执行以下命令加载环境变量: source /etc/profile.d/clash.sh
请执行以下命令开启系统代理: proxy_on
若要临时关闭系统代理,请执行: proxy_off
</code></pre>
<pre><code class="language-bash">$ source /etc/profile.d/clash.sh
$ proxy_on
</code></pre>
<ul>
<li>检查服务端口</li>
</ul>
<pre><code class="language-bash">$ netstat -tln | grep -E '9090|789.'
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN
tcp6 0 0 :::7890 :::* LISTEN
tcp6 0 0 :::7891 :::* LISTEN
tcp6 0 0 :::7892 :::* LISTEN
</code></pre>
<ul>
<li>检查环境变量</li>
</ul>
<pre><code class="language-bash">$ env | grep -E 'http_proxy|https_proxy'
http_proxy=http://127.0.0.1:7890
https_proxy=http://127.0.0.1:7890
</code></pre>
<p>以上步鄹如果正常,说明服务clash程序启动成功,现在就可以体验高速下载github资源了。</p>
<br>
<h2>重启程序</h2>
<p>如果需要对Clash配置进行修改,请修改 <code>conf/config.yaml</code> 文件。然后运行 <code>restart.sh</code> 脚本进行重启。</p>
<blockquote>
<p><strong>注意:</strong> 重启脚本 <code>restart.sh</code> 不会更新订阅信息。</p>
</blockquote>
<br>
<h2>停止程序</h2>
<ul>
<li>进入项目目录</li>
</ul>
<pre><code class="language-bash">$ cd clash-for-linux
</code></pre>
<ul>
<li>关闭服务</li>
</ul>
<pre><code class="language-bash">$ sudo bash shutdown.sh
服务关闭成功,请执行以下命令关闭系统代理:proxy_off
</code></pre>
<pre><code class="language-bash">$ proxy_off
</code></pre>
<p>然后检查程序端口、进程以及环境变量<code>http_proxy|https_proxy</code>,若都没则说明服务正常关闭。</p>
<br>
<h2>Clash Dashboard</h2>
<ul>
<li>访问 Clash Dashboard</li>
</ul>
<p>通过浏览器访问 <code>start.sh</code> 执行成功后输出的地址,例如:<a href="http://192.168.0.1:9090/ui">http://192.168.0.1:9090/ui</a></p>
<ul>
<li>登录管理界面</li>
</ul>
<p>在<code>API Base URL</code>一栏中输入:http://<ip>:9090 ,在<code>Secret(optional)</code>一栏中输入启动成功后输出的Secret。</p>
<p>点击Add并选择刚刚输入的管理界面地址,之后便可在浏览器上进行一些配置。</p>
<ul>
<li>更多教程</li>
</ul>
<p>此 Clash Dashboard 使用的是<a href="https://github.com/haishanh/yacd">yacd</a>项目,详细使用方法请移步到yacd上查询。</p>
<br>
<h2>终端界面选择代理节点</h2>
<p>部分用户无法通过浏览器使用 Clash Dashboard 进行节点选择、代理模式修改等操作,为了方便用户可以在Linux终端进行操作,下面提供了一个功能简单的脚本以便用户可以临时通过终端界面进行配置。</p>
<p>脚本存放位置:<code>scripts/clash_proxy-selector.sh</code></p>
<blockquote>
<p><strong>注意:</strong></p>
<p>使用脚本前,需要修改脚本中的 <strong>Secret</strong> 变量值为上述启动脚本输出的值,或者与 <code>.env</code> 文件中定义的 <strong>CLASH_SECRET</strong> 变量值保持一致。</p>
</blockquote>
<br>
<h1>常见问题</h1>
<ol>
<li> <p>部分Linux系统默认的 shell <code>/bin/sh</code> 被更改为 <code>dash</code>,运行脚本会出现报错(报错内容一般会有 <code>-en [ OK ]</code>)。建议使用 <code>bash xxx.sh</code> 运行脚本。</p> </li>
<li> <p>部分用户在UI界面找不到代理节点,基本上是因为厂商提供的clash配置文件是经过base64编码的,且配置文件格式不符合clash配置标准。</p> <p>目前此项目已集成自动识别和转换clash配置文件的功能。如果依然无法使用,则需要通过自建或者第三方平台(不推荐,有泄露风险)对订阅地址转换。</p> </li>
<li> <p>程序日志中出现<code>error: unsupported rule type RULE-SET</code>报错,解决方法查看官方<a href="https://github.com/Dreamacro/clash/wiki/FAQ#error-unsupported-rule-type-rule-set">WIKI</a></p> </li>
</ol>
+
+
+ KasRoudra/CamHacker
+ 2023-12-24T01:59:22Z
+ tag:github.com,2023-12-24:/KasRoudra/CamHacker
+
+ <p>Camera phishing tool. If anyone opens link generated by CamHacker and permits camera access his/her photo will be captured!</p><hr><h2 align="center"><u>CamHacker</u></h2>
<p><img src="https://github.com/KasRoudra/CamHacker/raw/main/files/banner.png" alt="Hack anyone's camera and get images"></p>
<h4 align="center"> Hack anyone's camera and get images!</h4>
<p align="center"> <img src="https://img.shields.io/badge/Version-1.5-blue?style=for-the-badge&color=blue"> <img src="https://img.shields.io/github/stars/KasRoudra/CamHacker?style=for-the-badge&color=magenta"> <img src="https://img.shields.io/github/forks/KasRoudra/CamHacker?color=cyan&style=for-the-badge&color=purple"> <img src="https://img.shields.io/github/issues/KasRoudra/CamHacker?color=red&style=for-the-badge"> <img src="https://img.shields.io/github/license/KasRoudra/CamHacker?style=for-the-badge&color=blue"> <br> <img src="https://img.shields.io/badge/Author-KasRoudra-green?style=flat-square"> <img src="https://img.shields.io/badge/Open%20Source-Yes-orange?style=flat-square"> <img src="https://img.shields.io/badge/Maintained-Yes-cyan?style=flat-square"> <img src="https://img.shields.io/badge/Written%20In-Shell-blue?style=flat-square"> </p>
<h3>[+] Description</h3>
<p>CamHacker is a phishing tool. It will generate a link. If anyone opens the link and permits camera access, his/her photo will be captured and sent to you!</p>
<h3>[*]Announcement</h3>
<p>This project is now a part of <a href="https://github.com/KasRoudra/MaxPhisher">MaxPhisher</a>. Further bug fixes and feature addition will be available in that</p>
<h3>[+] Installation</h3>
<ul>
<li><code>git clone https://github.com/KasRoudra/CamHacker</code></li>
<li><code>cd CamHacker</code></li>
</ul>
<p>For termux, use additional command <code>termux-setup-storage</code></p>
<ul>
<li><code>bash ch.sh</code></li>
</ul>
<h5>Or Run Directly</h5>
<pre><code>wget https://raw.githubusercontent.com/KasRoudra/CamHacker/main/ch.sh && bash ch.sh
</code></pre>
<h3>Docker</h3>
<ul>
<li><code>sudo docker pull kasroudra/camhacker</code></li>
<li><code>sudo docker run --rm -it --name camhacker kasroudra/camhacker</code></li>
<li><code>sudo docker cp camhacker:/CamHacker imgfiles</code> [Run this on another terminal to copy received image from docker to imgfiles folder keeping container open]</li>
</ul>
<h5>Usage</h5>
<pre><code>Usage: bash ch.sh [-h] [-o OPTION] [-p PORT] [-t TUNNELER] [-u] [-nu]
Options:
-h, --help Show this help message and exit
-o OPTION, --option OPTION Index of the template
-p PORT, --port PORT Port of CamHacker's Server (Default: 8080)
-t TUNNELER, --tunneler TUNNELER Name of the tunneler for url shortening (Default: cloudflared)
-d DIRECTORY, --directory DIRECTORY Directory where images will be saved
--update(-u), --no-update (-nu) Check for update (Default: true)
</code></pre>
<h3>[+] Features</h3>
<ul>
<li>Three Templates</li>
<li>Get IP, Location, Device type and Browser</li>
<li>Concurrent double tunneling (Cloudflared and Loclx)</li>
<li>Choose where to save images(custom directory)</li>
<li>Error Diagnoser</li>
<li>Argument support for templates, tunnelers and directory</li>
</ul>
<h4>Relevant Tools by Me</h4>
<ul>
<li><a href="https://github.com/KasRoudra/PyPhisher">PyPhisher</a> for login phishing</li>
<li><a href="https://github.com/KasRoudra/VidPhisher">VidPhisher</a> for video phishing</li>
</ul>
<h3>[+] Preview</h3>
<p><img src="https://github.com/KasRoudra/CamHacker/raw/main/files/ch.gif" alt="Hack anyone's camera and get images"></p>
<h3>[+] Dependencies</h3>
<ul>
<li><code>php</code></li>
<li><code>curl</code></li>
<li><code>wget</code></li>
<li><code>unzip</code></li>
</ul>
<p>All of the necessary dependencies will be installed automatically in first run!</p>
<h3>[+] Note</h3>
<p>You need to use good (not mini version like opera mini) browsers as chrome/brave/mozilla to get image captured. Although some browsers can block this CamHacker, however it works in most devices.</p>
<h3>[+] Credits</h3>
<p>Thanks to <a href="https://github.com/noob-hackers/grabcam">Noob-Hackers</a>, <a href="https://github.com/Techchipnet/camphish">Technochip</a> and <a href="https://github.com/TheLinuxChoice">Linux Choice</a> for their open source codes!</p>
<h3>[+] Disclaimer</h3>
<p><em><strong>This tool is developed for educational purposes. Here it demonstrates how camera phishing works. If anybody wants to gain unauthorized access to someones camera, he/she may try out this at his/her own risk. You have your own responsibilities and you are liable to any damage or violation of laws by this tool. The author is not responsible for any misuse of CamHacker!</strong></em></p>
<h2>[~] Find Me on :</h2>
<ul>
<li> <p><a href="https://github.com/KasRoudra"><img src="https://img.shields.io/badge/Github-KasRoudra-green?style=for-the-badge&logo=github" alt="Github"></a></p> </li>
<li> <p><a href="mailto:kasroudrakrd@gmail.com"><img src="https://img.shields.io/badge/Gmail-KasRoudra-green?style=for-the-badge&logo=gmail" alt="Gmail"></a></p> </li>
<li> <p><a href="https://facebook.com/KasRoudra"><img src="https://img.shields.io/badge/Facebook-KasRoudra-green?style=for-the-badge&logo=facebook" alt="Facebook"></a></p> </li>
<li> <p><a href="https://m.me/KasRoudra"><img src="https://img.shields.io/badge/Messenger-KasRoudra-green?style=for-the-badge&logo=messenger" alt="Messenger"></a></p> </li>
</ul>
+
+
+ AuxXxilium/arc
+ 2023-12-24T01:59:22Z
+ tag:github.com,2023-12-24:/AuxXxilium/arc
+
+ <p>Arc is a customized Redpill Loader for DSM 7.x (Xpenology) with enhanced Hardwaresupport, Addons, guided (semi-automated) Installation and more. Multiple customization options are built-in. It is modified to run on different Hardware (see Wiki for more Informations). Commercial use is not permitted and strictly forbidden!</p><hr><h1>Arc Loader for DSM 7.x</h1>
<p>Arc is a customized Redpill Loader for DSM 7.x (Xpenology) with enhanced Hardwaresupport, Addons, Extensions, guided(semi-automated) Installation and more. Multiple customization options are built-in. It is modified to run on different Hardware (see Wiki for more Informations).</p>
<ul>
<li>Commercial use is not permitted and strictly forbidden!!!</li>
<li>DSM and all Parts are under Copyright / Ownership or Registered Trademark by Synology Inc.</li>
</ul>
<h3>Bugreport</h3>
<ul>
<li>Before you report an issue or bug please read the <a href="https://github.com/AuxXxilium/AuxXxilium/wiki">Wiki</a> and make sure your setting are correct.</li>
<li>If you have to report an issue or bug:
<ul>
<li>Hardware you use (Networkchip, Sata/HBA/Raid Controller)</li>
<li>Screenshot the Systeminfo (Arc - Sysinfo) !!! <- IMPORTANT</li>
</ul> </li>
</ul>
<h3>Links</h3>
<ul>
<li><a href="https://github.com/AuxXxilium">Overview</a></li>
<li><a href="https://github.com/AuxXxilium/AuxXxilium/wiki">Wiki and Informations</a></li>
<li><a href="https://github.com/AuxXxilium/arc/releases?q=prerelease%3Afalse&expanded=true">Download latest Build</a></li>
</ul>
<h3>Thanks</h3>
<p>All code was based on the work of TTG, pocopico, jumkey, fbelavenuto, wjz304 and others involved in continuing TTG's original redpill-load project.</p>
+
+
\ No newline at end of file
diff --git a/shellcheck-config/daily/index.xml b/shellcheck-config/daily/index.xml
index ed0426bd563..e9facb2f949 100644
--- a/shellcheck-config/daily/index.xml
+++ b/shellcheck-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ShellCheck Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:38:46Z
+ 2023-12-24T01:42:04Z
Daily Trending of ShellCheck Config in GitHub
\ No newline at end of file
diff --git a/shellcheck-config/weekly/index.xml b/shellcheck-config/weekly/index.xml
new file mode 100644
index 00000000000..1eb928c45a2
--- /dev/null
+++ b/shellcheck-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ShellCheck Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:19Z
+ Weekly Trending of ShellCheck Config in GitHub
+
+
\ No newline at end of file
diff --git a/shellsession/daily/index.xml b/shellsession/daily/index.xml
index b0115694788..8baf0224e77 100644
--- a/shellsession/daily/index.xml
+++ b/shellsession/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ShellSession Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:06Z
+ 2023-12-24T01:42:18Z
Daily Trending of ShellSession in GitHub
\ No newline at end of file
diff --git a/shellsession/weekly/index.xml b/shellsession/weekly/index.xml
new file mode 100644
index 00000000000..0fa93301c98
--- /dev/null
+++ b/shellsession/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ShellSession Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:34Z
+ Weekly Trending of ShellSession in GitHub
+
+
\ No newline at end of file
diff --git a/shen/daily/index.xml b/shen/daily/index.xml
index fb9ac0f5726..55c61d41c34 100644
--- a/shen/daily/index.xml
+++ b/shen/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Shen Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:06Z
+ 2023-12-24T01:42:20Z
Daily Trending of Shen in GitHub
\ No newline at end of file
diff --git a/shen/weekly/index.xml b/shen/weekly/index.xml
new file mode 100644
index 00000000000..b0ee9b52746
--- /dev/null
+++ b/shen/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Shen Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:37Z
+ Weekly Trending of Shen in GitHub
+
+
\ No newline at end of file
diff --git a/sieve/daily/index.xml b/sieve/daily/index.xml
index fd5a6771a94..216a5f3b55e 100644
--- a/sieve/daily/index.xml
+++ b/sieve/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Sieve Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:05Z
+ 2023-12-24T01:42:19Z
Daily Trending of Sieve in GitHub
\ No newline at end of file
diff --git a/sieve/weekly/index.xml b/sieve/weekly/index.xml
new file mode 100644
index 00000000000..a98e0d03c55
--- /dev/null
+++ b/sieve/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Sieve Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:35Z
+ Weekly Trending of Sieve in GitHub
+
+
\ No newline at end of file
diff --git a/singularity/daily/index.xml b/singularity/daily/index.xml
index 3223e41ce90..867cb3fb81b 100644
--- a/singularity/daily/index.xml
+++ b/singularity/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Singularity Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:09Z
+ 2023-12-24T01:42:22Z
Daily Trending of Singularity in GitHub
\ No newline at end of file
diff --git a/singularity/weekly/index.xml b/singularity/weekly/index.xml
new file mode 100644
index 00000000000..57c6780d245
--- /dev/null
+++ b/singularity/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Singularity Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:38Z
+ Weekly Trending of Singularity in GitHub
+
+
\ No newline at end of file
diff --git a/slash/daily/index.xml b/slash/daily/index.xml
index 5c5623becd8..6dffcb16c95 100644
--- a/slash/daily/index.xml
+++ b/slash/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Slash Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:10Z
+ 2023-12-24T01:42:24Z
Daily Trending of Slash in GitHub
\ No newline at end of file
diff --git a/slash/weekly/index.xml b/slash/weekly/index.xml
new file mode 100644
index 00000000000..17e91b9406e
--- /dev/null
+++ b/slash/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Slash Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:38Z
+ Weekly Trending of Slash in GitHub
+
+
\ No newline at end of file
diff --git a/slice/daily/index.xml b/slice/daily/index.xml
index daff8187f9a..ac9e615c7a6 100644
--- a/slice/daily/index.xml
+++ b/slice/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Slice Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:08Z
+ 2023-12-24T01:42:22Z
Daily Trending of Slice in GitHub
\ No newline at end of file
diff --git a/slice/weekly/index.xml b/slice/weekly/index.xml
new file mode 100644
index 00000000000..c25633c247c
--- /dev/null
+++ b/slice/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Slice Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:40Z
+ Weekly Trending of Slice in GitHub
+
+
\ No newline at end of file
diff --git a/slim/daily/index.xml b/slim/daily/index.xml
index 15335434649..3e8571b6ce7 100644
--- a/slim/daily/index.xml
+++ b/slim/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Slim Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:11Z
+ 2023-12-24T01:42:23Z
Daily Trending of Slim in GitHub
\ No newline at end of file
diff --git a/slim/weekly/index.xml b/slim/weekly/index.xml
new file mode 100644
index 00000000000..616474ac9e6
--- /dev/null
+++ b/slim/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Slim Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:39Z
+ Weekly Trending of Slim in GitHub
+
+
\ No newline at end of file
diff --git a/smali/daily/index.xml b/smali/daily/index.xml
index 241b853638f..5d69903ba27 100644
--- a/smali/daily/index.xml
+++ b/smali/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Smali Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:13Z
+ 2023-12-24T01:42:25Z
Daily Trending of Smali in GitHub
\ No newline at end of file
diff --git a/smali/weekly/index.xml b/smali/weekly/index.xml
new file mode 100644
index 00000000000..ba34d907c72
--- /dev/null
+++ b/smali/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Smali Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:42Z
+ Weekly Trending of Smali in GitHub
+
+
\ No newline at end of file
diff --git a/smalltalk/daily/index.xml b/smalltalk/daily/index.xml
index 74698b5c3d2..9cddc56418e 100644
--- a/smalltalk/daily/index.xml
+++ b/smalltalk/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Smalltalk Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:16Z
+ 2023-12-24T01:42:28Z
Daily Trending of Smalltalk in GitHub
\ No newline at end of file
diff --git a/smalltalk/weekly/index.xml b/smalltalk/weekly/index.xml
new file mode 100644
index 00000000000..9537378873b
--- /dev/null
+++ b/smalltalk/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Smalltalk Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:44Z
+ Weekly Trending of Smalltalk in GitHub
+
+
\ No newline at end of file
diff --git a/smarty/daily/index.xml b/smarty/daily/index.xml
index 174e2ec8ffc..a7f223b54cc 100644
--- a/smarty/daily/index.xml
+++ b/smarty/daily/index.xml
@@ -1,7 +1,21 @@
GitHub Smarty Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:18Z
+ 2023-12-24T01:42:30Z
Daily Trending of Smarty in GitHub
+
+ alanvito1/Binary-Robots
+ 2023-12-24T01:42:30Z
+ tag:github.com,2023-12-24:/alanvito1/Binary-Robots
+
+ <p>This repository is the largest collection of scripts for use on Binary or Deriv bots. It is powered by Deriv and contains a wide variety of scripts that can be used to enhance and automate trading strategies on these platforms.</p><hr>
+
+
+ Unleash/helm-charts
+ 2023-12-24T01:42:30Z
+ tag:github.com,2023-12-24:/Unleash/helm-charts
+
+ <p>Contains helm-charts for Unleash</p><hr>
+
\ No newline at end of file
diff --git a/smarty/weekly/index.xml b/smarty/weekly/index.xml
new file mode 100644
index 00000000000..4027b48b978
--- /dev/null
+++ b/smarty/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Smarty Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:46Z
+ Weekly Trending of Smarty in GitHub
+
+
\ No newline at end of file
diff --git a/smpl/daily/index.xml b/smpl/daily/index.xml
index 8d450662925..a02cd6c70b9 100644
--- a/smpl/daily/index.xml
+++ b/smpl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SmPL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:19Z
+ 2023-12-24T01:42:31Z
Daily Trending of SmPL in GitHub
\ No newline at end of file
diff --git a/smpl/weekly/index.xml b/smpl/weekly/index.xml
new file mode 100644
index 00000000000..427a2073572
--- /dev/null
+++ b/smpl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SmPL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:47Z
+ Weekly Trending of SmPL in GitHub
+
+
\ No newline at end of file
diff --git a/smt/daily/index.xml b/smt/daily/index.xml
index d977e079d51..9fcdd78d46f 100644
--- a/smt/daily/index.xml
+++ b/smt/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SMT Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:21Z
+ 2023-12-24T01:42:32Z
Daily Trending of SMT in GitHub
\ No newline at end of file
diff --git a/smt/weekly/index.xml b/smt/weekly/index.xml
new file mode 100644
index 00000000000..21855912e15
--- /dev/null
+++ b/smt/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SMT Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:49Z
+ Weekly Trending of SMT in GitHub
+
+
\ No newline at end of file
diff --git a/solidity/daily/index.xml b/solidity/daily/index.xml
index 8e962beb6cc..7413d40ab20 100644
--- a/solidity/daily/index.xml
+++ b/solidity/daily/index.xml
@@ -1,14 +1,28 @@
GitHub Solidity Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:24Z
+ 2023-12-24T01:42:34Z
Daily Trending of Solidity in GitHub
- bgd-labs/aave-helpers
- 2023-12-23T01:39:24Z
- tag:github.com,2023-12-23:/bgd-labs/aave-helpers
-
+ code-423n4/2023-12-autonolas
+ 2023-12-24T01:42:34Z
+ tag:github.com,2023-12-24:/code-423n4/2023-12-autonolas
+
+ <p></p><hr>
+
+
+ aave/gho-core
+ 2023-12-24T01:42:34Z
+ tag:github.com,2023-12-24:/aave/gho-core
+
+ <p></p><hr>
+
+
+ zerodevapp/aa-benchmark
+ 2023-12-24T01:42:34Z
+ tag:github.com,2023-12-24:/zerodevapp/aa-benchmark
+
<p></p><hr>
\ No newline at end of file
diff --git a/solidity/weekly/index.xml b/solidity/weekly/index.xml
new file mode 100644
index 00000000000..11b7ba93ae5
--- /dev/null
+++ b/solidity/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Solidity Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:51Z
+ Weekly Trending of Solidity in GitHub
+
+
+ Cyfrin/sc-exploits-minimized
+ 2023-12-24T01:59:51Z
+ tag:github.com,2023-12-24:/Cyfrin/sc-exploits-minimized
+
+ <p>A repo to showcase web3 hacks</p><hr>
+
+
+ pcaversaccio/createx
+ 2023-12-24T01:59:51Z
+ tag:github.com,2023-12-24:/pcaversaccio/createx
+
+ <p>Factory smart contract to make easier and safer usage of the `CREATE` and `CREATE2` EVM opcodes as well as of `CREATE3`-based (i.e. without an initcode factor) contract creations.</p><hr>
+
+
+ 0x01010110/corecfxs
+ 2023-12-24T01:59:51Z
+ tag:github.com,2023-12-24:/0x01010110/corecfxs
+
+ <p></p><hr>
+
+
\ No newline at end of file
diff --git a/soong/daily/index.xml b/soong/daily/index.xml
index 107e9df9c50..60b85b41cd4 100644
--- a/soong/daily/index.xml
+++ b/soong/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Soong Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:27Z
+ 2023-12-24T01:42:35Z
Daily Trending of Soong in GitHub
\ No newline at end of file
diff --git a/soong/weekly/index.xml b/soong/weekly/index.xml
new file mode 100644
index 00000000000..407c07faaa5
--- /dev/null
+++ b/soong/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Soong Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:52Z
+ Weekly Trending of Soong in GitHub
+
+
\ No newline at end of file
diff --git a/sourcepawn/daily/index.xml b/sourcepawn/daily/index.xml
index 351e0306577..f66b4f52ee1 100644
--- a/sourcepawn/daily/index.xml
+++ b/sourcepawn/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SourcePawn Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:26Z
+ 2023-12-24T01:42:36Z
Daily Trending of SourcePawn in GitHub
\ No newline at end of file
diff --git a/sourcepawn/weekly/index.xml b/sourcepawn/weekly/index.xml
new file mode 100644
index 00000000000..6696e953da6
--- /dev/null
+++ b/sourcepawn/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SourcePawn Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:53Z
+ Weekly Trending of SourcePawn in GitHub
+
+
\ No newline at end of file
diff --git a/sparql/daily/index.xml b/sparql/daily/index.xml
index 1d52de21e96..00f48eff47a 100644
--- a/sparql/daily/index.xml
+++ b/sparql/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SPARQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:26Z
+ 2023-12-24T01:42:38Z
Daily Trending of SPARQL in GitHub
\ No newline at end of file
diff --git a/sparql/weekly/index.xml b/sparql/weekly/index.xml
new file mode 100644
index 00000000000..8216def3ce1
--- /dev/null
+++ b/sparql/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SPARQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:54Z
+ Weekly Trending of SPARQL in GitHub
+
+
\ No newline at end of file
diff --git a/spline-font-database/daily/index.xml b/spline-font-database/daily/index.xml
index d44c7b47cda..6a0913d38e8 100644
--- a/spline-font-database/daily/index.xml
+++ b/spline-font-database/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Spline Font Database Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:25Z
+ 2023-12-24T01:42:37Z
Daily Trending of Spline Font Database in GitHub
\ No newline at end of file
diff --git a/spline-font-database/weekly/index.xml b/spline-font-database/weekly/index.xml
new file mode 100644
index 00000000000..a5ed2ff1ebd
--- /dev/null
+++ b/spline-font-database/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Spline Font Database Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:53Z
+ Weekly Trending of Spline Font Database in GitHub
+
+
\ No newline at end of file
diff --git a/sqf/daily/index.xml b/sqf/daily/index.xml
index ade0de8e9dc..3cd5b251ed3 100644
--- a/sqf/daily/index.xml
+++ b/sqf/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SQF Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:28Z
+ 2023-12-24T01:42:41Z
Daily Trending of SQF in GitHub
\ No newline at end of file
diff --git a/sqf/weekly/index.xml b/sqf/weekly/index.xml
new file mode 100644
index 00000000000..45c391f8da8
--- /dev/null
+++ b/sqf/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SQF Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:55Z
+ Weekly Trending of SQF in GitHub
+
+
\ No newline at end of file
diff --git a/sql/daily/index.xml b/sql/daily/index.xml
index 2913e1bf370..47af1bd9702 100644
--- a/sql/daily/index.xml
+++ b/sql/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:31Z
+ 2023-12-24T01:42:39Z
Daily Trending of SQL in GitHub
\ No newline at end of file
diff --git a/sql/weekly/index.xml b/sql/weekly/index.xml
new file mode 100644
index 00000000000..27a6803bc19
--- /dev/null
+++ b/sql/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:56Z
+ Weekly Trending of SQL in GitHub
+
+
\ No newline at end of file
diff --git a/sqlpl/daily/index.xml b/sqlpl/daily/index.xml
index b173ffffc0d..2ab551bf743 100644
--- a/sqlpl/daily/index.xml
+++ b/sqlpl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SQLPL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:29Z
+ 2023-12-24T01:42:40Z
Daily Trending of SQLPL in GitHub
\ No newline at end of file
diff --git a/sqlpl/weekly/index.xml b/sqlpl/weekly/index.xml
new file mode 100644
index 00000000000..e13cbeb28c3
--- /dev/null
+++ b/sqlpl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SQLPL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:57Z
+ Weekly Trending of SQLPL in GitHub
+
+
\ No newline at end of file
diff --git a/squirrel/daily/index.xml b/squirrel/daily/index.xml
index 3a3e06b61e7..90ef06daa38 100644
--- a/squirrel/daily/index.xml
+++ b/squirrel/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Squirrel Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:30Z
+ 2023-12-24T01:42:40Z
Daily Trending of Squirrel in GitHub
\ No newline at end of file
diff --git a/squirrel/weekly/index.xml b/squirrel/weekly/index.xml
new file mode 100644
index 00000000000..57441ee366c
--- /dev/null
+++ b/squirrel/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Squirrel Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:56Z
+ Weekly Trending of Squirrel in GitHub
+
+
\ No newline at end of file
diff --git a/srecode-template/daily/index.xml b/srecode-template/daily/index.xml
index 6ecf3681db6..6def418cc4a 100644
--- a/srecode-template/daily/index.xml
+++ b/srecode-template/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SRecode Template Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:35Z
+ 2023-12-24T01:42:42Z
Daily Trending of SRecode Template in GitHub
\ No newline at end of file
diff --git a/srecode-template/weekly/index.xml b/srecode-template/weekly/index.xml
new file mode 100644
index 00000000000..ed57161c709
--- /dev/null
+++ b/srecode-template/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SRecode Template Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:58Z
+ Weekly Trending of SRecode Template in GitHub
+
+
\ No newline at end of file
diff --git a/ssh-config/daily/index.xml b/ssh-config/daily/index.xml
index bae1a494ff4..14576e86903 100644
--- a/ssh-config/daily/index.xml
+++ b/ssh-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SSH Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:32Z
+ 2023-12-24T01:42:44Z
Daily Trending of SSH Config in GitHub
\ No newline at end of file
diff --git a/ssh-config/weekly/index.xml b/ssh-config/weekly/index.xml
new file mode 100644
index 00000000000..6113e7adb01
--- /dev/null
+++ b/ssh-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SSH Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:59:59Z
+ Weekly Trending of SSH Config in GitHub
+
+
\ No newline at end of file
diff --git a/stan/daily/index.xml b/stan/daily/index.xml
index dfe6061973a..821558d8041 100644
--- a/stan/daily/index.xml
+++ b/stan/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Stan Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:34Z
+ 2023-12-24T01:42:43Z
Daily Trending of Stan in GitHub
\ No newline at end of file
diff --git a/stan/weekly/index.xml b/stan/weekly/index.xml
new file mode 100644
index 00000000000..27e0cd15d51
--- /dev/null
+++ b/stan/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Stan Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:00Z
+ Weekly Trending of Stan in GitHub
+
+
\ No newline at end of file
diff --git a/standard-ml/daily/index.xml b/standard-ml/daily/index.xml
index 46e7cc350e8..71f52ca0d4f 100644
--- a/standard-ml/daily/index.xml
+++ b/standard-ml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Standard ML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:33Z
+ 2023-12-24T01:42:44Z
Daily Trending of Standard ML in GitHub
\ No newline at end of file
diff --git a/standard-ml/weekly/index.xml b/standard-ml/weekly/index.xml
new file mode 100644
index 00000000000..a6352a6de3f
--- /dev/null
+++ b/standard-ml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Standard ML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:00Z
+ Weekly Trending of Standard ML in GitHub
+
+
\ No newline at end of file
diff --git a/starlark/daily/index.xml b/starlark/daily/index.xml
index 3a5c2f8af10..59db5f7e0f6 100644
--- a/starlark/daily/index.xml
+++ b/starlark/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Starlark Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:40Z
+ 2023-12-24T01:42:49Z
Daily Trending of Starlark in GitHub
\ No newline at end of file
diff --git a/starlark/weekly/index.xml b/starlark/weekly/index.xml
new file mode 100644
index 00000000000..a2a30e7d66f
--- /dev/null
+++ b/starlark/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Starlark Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:05Z
+ Weekly Trending of Starlark in GitHub
+
+
\ No newline at end of file
diff --git a/stata/daily/index.xml b/stata/daily/index.xml
index 0c926a86fd9..dd3c5411417 100644
--- a/stata/daily/index.xml
+++ b/stata/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Stata Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:36Z
+ 2023-12-24T01:42:47Z
Daily Trending of Stata in GitHub
\ No newline at end of file
diff --git a/stata/weekly/index.xml b/stata/weekly/index.xml
new file mode 100644
index 00000000000..39767e1eef4
--- /dev/null
+++ b/stata/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Stata Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:02Z
+ Weekly Trending of Stata in GitHub
+
+
\ No newline at end of file
diff --git a/ston/daily/index.xml b/ston/daily/index.xml
index 340f7d68f84..0376329347b 100644
--- a/ston/daily/index.xml
+++ b/ston/daily/index.xml
@@ -1,7 +1,7 @@
GitHub STON Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:43Z
+ 2023-12-24T01:42:50Z
Daily Trending of STON in GitHub
\ No newline at end of file
diff --git a/ston/weekly/index.xml b/ston/weekly/index.xml
new file mode 100644
index 00000000000..f9945d0375e
--- /dev/null
+++ b/ston/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub STON Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:07Z
+ Weekly Trending of STON in GitHub
+
+
\ No newline at end of file
diff --git a/stringtemplate/daily/index.xml b/stringtemplate/daily/index.xml
index 90020668c7a..a040736a6ed 100644
--- a/stringtemplate/daily/index.xml
+++ b/stringtemplate/daily/index.xml
@@ -1,7 +1,7 @@
GitHub StringTemplate Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:42Z
+ 2023-12-24T01:42:52Z
Daily Trending of StringTemplate in GitHub
\ No newline at end of file
diff --git a/stringtemplate/weekly/index.xml b/stringtemplate/weekly/index.xml
new file mode 100644
index 00000000000..57461133800
--- /dev/null
+++ b/stringtemplate/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub StringTemplate Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:06Z
+ Weekly Trending of StringTemplate in GitHub
+
+
\ No newline at end of file
diff --git a/stylus/daily/index.xml b/stylus/daily/index.xml
index 65ccfe36406..0d9daf4afdf 100644
--- a/stylus/daily/index.xml
+++ b/stylus/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Stylus Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:44Z
+ 2023-12-24T01:42:52Z
Daily Trending of Stylus in GitHub
-
- D-Sketon/hexo-theme-reimu
- 2023-12-23T01:39:44Z
- tag:github.com,2023-12-23:/D-Sketon/hexo-theme-reimu
-
- <p>一款博丽灵梦风格的Hexo主题 | A Hakurei Reimu style Hexo theme.</p><hr>
-
\ No newline at end of file
diff --git a/stylus/weekly/index.xml b/stylus/weekly/index.xml
new file mode 100644
index 00000000000..eee2ff35316
--- /dev/null
+++ b/stylus/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Stylus Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:08Z
+ Weekly Trending of Stylus in GitHub
+
+
\ No newline at end of file
diff --git a/subrip-text/daily/index.xml b/subrip-text/daily/index.xml
index f0faf513479..978479692a8 100644
--- a/subrip-text/daily/index.xml
+++ b/subrip-text/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SubRip Text Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:42Z
+ 2023-12-24T01:42:51Z
Daily Trending of SubRip Text in GitHub
\ No newline at end of file
diff --git a/subrip-text/weekly/index.xml b/subrip-text/weekly/index.xml
new file mode 100644
index 00000000000..a0d0bcf48b1
--- /dev/null
+++ b/subrip-text/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SubRip Text Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:09Z
+ Weekly Trending of SubRip Text in GitHub
+
+
\ No newline at end of file
diff --git a/sugarss/daily/index.xml b/sugarss/daily/index.xml
index 03e99a50839..3cfe10ea24f 100644
--- a/sugarss/daily/index.xml
+++ b/sugarss/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SugarSS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:46Z
+ 2023-12-24T01:42:53Z
Daily Trending of SugarSS in GitHub
\ No newline at end of file
diff --git a/sugarss/weekly/index.xml b/sugarss/weekly/index.xml
new file mode 100644
index 00000000000..8b0dadadca2
--- /dev/null
+++ b/sugarss/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SugarSS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:10Z
+ Weekly Trending of SugarSS in GitHub
+
+
\ No newline at end of file
diff --git a/supercollider/daily/index.xml b/supercollider/daily/index.xml
index c1c489f68d9..6ac23efd3fa 100644
--- a/supercollider/daily/index.xml
+++ b/supercollider/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SuperCollider Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:46Z
+ 2023-12-24T01:42:54Z
Daily Trending of SuperCollider in GitHub
\ No newline at end of file
diff --git a/supercollider/weekly/index.xml b/supercollider/weekly/index.xml
new file mode 100644
index 00000000000..9f43f4dcd09
--- /dev/null
+++ b/supercollider/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SuperCollider Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:11Z
+ Weekly Trending of SuperCollider in GitHub
+
+
\ No newline at end of file
diff --git a/svelte/daily/index.xml b/svelte/daily/index.xml
index 5423a051855..60f896b57b7 100644
--- a/svelte/daily/index.xml
+++ b/svelte/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Svelte Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:50Z
+ 2023-12-24T01:42:57Z
Daily Trending of Svelte in GitHub
-
- timmo001/home-assistant-assist-desktop
- 2023-12-23T01:39:50Z
- tag:github.com,2023-12-23:/timmo001/home-assistant-assist-desktop
-
- <p>Use Home Assistant Assist on the desktop. Compatible with Windows, MacOS, and Linux</p><hr>
-
\ No newline at end of file
diff --git a/svelte/weekly/index.xml b/svelte/weekly/index.xml
new file mode 100644
index 00000000000..dbb2d94ffa9
--- /dev/null
+++ b/svelte/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Svelte Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:13Z
+ Weekly Trending of Svelte in GitHub
+
+
+ talesofai/comfyui-browser
+ 2023-12-24T02:00:13Z
+ tag:github.com,2023-12-24:/talesofai/comfyui-browser
+
+ <p>An image/video/workflow browser and manager for ComfyUI.</p><hr>
+
+
+ Alia5/lovelace-expander-card
+ 2023-12-24T02:00:13Z
+ tag:github.com,2023-12-24:/Alia5/lovelace-expander-card
+
+ <p>Expander card for HomeAssistant</p><hr>
+
+
+ JacobLinCool/d1-manager
+ 2023-12-24T02:00:13Z
+ tag:github.com,2023-12-24:/JacobLinCool/d1-manager
+
+ <p>D1 Manager is a web UI and API for Cloudflare D1, a serverless SQL database. It provides a user-friendly interface for managing databases, tables, and records, as well as an API for performing operations programmatically.</p><hr>
+
+
\ No newline at end of file
diff --git a/svg/daily/index.xml b/svg/daily/index.xml
index 9b89e2a91a5..d3ce1d026c1 100644
--- a/svg/daily/index.xml
+++ b/svg/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SVG Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:50Z
+ 2023-12-24T01:42:57Z
Daily Trending of SVG in GitHub
\ No newline at end of file
diff --git a/svg/weekly/index.xml b/svg/weekly/index.xml
new file mode 100644
index 00000000000..a905191af1b
--- /dev/null
+++ b/svg/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SVG Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:10Z
+ Weekly Trending of SVG in GitHub
+
+
\ No newline at end of file
diff --git a/swift/daily/index.xml b/swift/daily/index.xml
index ca28a89575a..72bcf574edb 100644
--- a/swift/daily/index.xml
+++ b/swift/daily/index.xml
@@ -1,14 +1,14 @@
GitHub Swift Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:58Z
+ 2023-12-24T01:43:03Z
Daily Trending of Swift in GitHub
- leminlimez/Helium
- 2023-12-23T01:39:58Z
- tag:github.com,2023-12-23:/leminlimez/Helium
-
- <p></p><hr><h1>Helium</h1>
<p>Status Bar Widgets for TrollStore iPhones on iOS 14+. Works on Jailbroken devices as well.</p>
<p>More widgets to come in future updates!</p>
<p><strong>Note:</strong> on iOS 16+, you must enable developer mode for this to work properly.</p>
<h2>Building</h2>
<p><a href="https://theos.dev">Theos</a> is required to compile the app. The SDK used is iOS 15.0, but you can use any SDK you want. To change the SDK, go to the <code>Makefile</code> and modify the <code>TARGET</code> to your SDK version:</p>
<pre><code>TARGET := iphone:clang:[SDK Version]:[Minimum Version]
</code></pre>
<p>Run <code>./ipabuild.sh</code> to build the ipa. The resulting tipa should be in a folder called 'build'.</p>
<h2>Tested Devices</h2>
<ul>
<li>iPhone 13 Pro (iOS 15.3.1, Jailed & Jailbroken)</li>
<li>iPhone X (iOS 16.1.1, Jailbroken)</li>
</ul>
<h2>Known Issues</h2>
<ul>
<li>It currently does not adapt to the color of the status bar (it will always be white).</li>
</ul>
<h2>Credits</h2>
<ul>
<li><a href="https://github.com/Lessica/TrollSpeed">TrollSpeed</a> for the AssistiveTouch logic allowing this to work.</li>
<li><a href="https://github.com/leminlimez/Cowabunga">Cowabunga</a> for part of the code.</li>
</ul>
+ AugustDev/enchanted
+ 2023-12-24T01:43:03Z
+ tag:github.com,2023-12-24:/AugustDev/enchanted
+
+ <p>Enchanted is iOS app for chatting with private self hosted language models such as Llama2, Mistral or Vicuna using Ollama.</p><hr><p><img src="https://raw.githubusercontent.com/AugustDev/enchanted/main/assets/banner.png" alt="Enchanted banner"></p>
<h1>Enchanted</h1>
<p>Enchanted is open source, <a href="https://github.com/jmorganca/ollama">Ollama</a> compatible, elegant iOS/iPad mobile app for chatting with privately hosted models such as Llama 2, Mistral, Vicuna, Starling and more. It's essentially ChatGPT app UI that connects to your private Ollama models. You can download Enchanted from the App Store or build yourself from scratch.</p>
<h2>App Store</h2>
<p><a href="https://apps.apple.com/gb/app/enchanted-llm/id6474268307"><img src="https://i.ibb.co/7WXt3qZ/download.png"></a></p>
<p>Note: You will need to run your own Ollama server to use the app. Read instructions below.</p>
<h2>Demo</h2>
<p><a href="https://www.youtube.com/watch?v=_0L9Qz1Gn2Y"><img src="https://raw.githubusercontent.com/AugustDev/enchanted/main/assets/promo.png"></a></p>
<h2>Features</h2>
<ul>
<li>Supports latest Ollama Chat API</li>
<li>Conversation history included in the API calls</li>
<li>Dark/Light mode</li>
<li>Conversation history is stored on your device</li>
<li>Markdown support (nicely displays tables/lists/code blocks)</li>
<li>Voice prompts</li>
<li>Image attachments for prompts</li>
</ul>
<h3>Comming soon</h3>
<ul>
<li>Download new models from mobile</li>
<li>Manage your conversations (delete/rename)</li>
</ul>
<h2>Usage instructions</h2>
<p>Enchanted requires Ollama v0.1.14 or later.</p>
<h3>Case 1. You run Ollama server with public access</h3>
<ol>
<li>Download Enchanted app from the App Store.</li>
<li>In App Setings specify your server endpoint.</li>
</ol>
<p>You're done! Make a prompt.</p>
<h3>Case 2. You run Ollama on your computer</h3>
<p><a href="https://www.youtube.com/watch?v=SFeVCiLOABM">Video instructions here</a></p>
<ol>
<li> <p>Start Ollama server and download models for usage.</p> </li>
<li> <p>Install ngrok forward your Ollama server to make it accessible publicly</p> <pre><code class="language-shell">ngrok http 11434
</code></pre> </li>
<li> <p>Copy "Forwarding" URL that will look something like <code>https://b377-82-132-216-51.ngrok-free.app</code>. Your Ollama server API is now accessible through this temporary URL.</p> </li>
<li> <p>Download Enchanted app from the App Store.</p> </li>
<li> <p>In App Setings specify your server endpoint.</p> <p>You're done! Make a prompt.</p> </li>
</ol>
<h1>Contact</h1>
<p>For any questions please do not hesitate to contact me at <a href="mailto:augustinas@subj.org">augustinas@subj.org</a></p>
\ No newline at end of file
diff --git a/swift/weekly/index.xml b/swift/weekly/index.xml
new file mode 100644
index 00000000000..1b4ddf45173
--- /dev/null
+++ b/swift/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Swift Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:19Z
+ Weekly Trending of Swift in GitHub
+
+
+ kevinhermawan/Ollamac
+ 2023-12-24T02:00:19Z
+ tag:github.com,2023-12-24:/kevinhermawan/Ollamac
+
+ <p>A macOS app for interacting with the Ollama models</p><hr><div align="center">
<img alt="app icon" height="256px" src="https://raw.githubusercontent.com/kevinhermawan/Ollamac/main/assets/app-icon.png">
</div>
<h1>Ollamac</h1>
<p>A macOS app for interacting with the <a href="https://github.com/jmorganca/ollama">Ollama</a> models.</p>
<h2>Prerequisites</h2>
<p>Before using Ollamac, ensure the following requirements are met:</p>
<ul>
<li><strong>Operating System</strong>: macOS 14 or later.</li>
<li><strong>Ollama Setup</strong>: The Ollama system should be installed on your Mac. Ensure you have at least one Ollama model downloaded for interaction.</li>
</ul>
<h2>Download</h2>
<p>You can download the latest version of Ollamac from the <a href="https://github.com/kevinhermawan/Ollamac/releases">releases page</a>.</p>
<h2>Features</h2>
<ul>
<li><strong>Open-Source Nature</strong>: Dive into the code, contribute, and enhance Ollamac’s capabilities.</li>
<li><strong>Optimized for macOS</strong>: Experience smooth and efficient performance on macOS.</li>
<li><strong>Universal Model Compatibility</strong>: Use Ollamac with any model from the <a href="https://ollama.ai/library">Ollama library</a>.</li>
<li><strong>User-Friendly Interface</strong>: Navigate easily through a straightforward design.</li>
<li><strong>Chat Archive</strong>: Automatically save your interactions for future reference.</li>
<li><strong>Real-Time Communication</strong>: Enjoy immediate responses with HTTP streaming technology.</li>
</ul>
<p>And more...</p>
<h2>Screenshot</h2>
<div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./assets/screenshot-dark.png">
<img alt="screenshot" src="https://raw.githubusercontent.com/kevinhermawan/Ollamac/main/assets/screenshot.png">
</picture>
</div>
<h2>Acknowledgements</h2>
<ul>
<li><a href="https://github.com/jmorganca/ollama">Ollama</a></li>
<li><a href="https://github.com/kevinhermawan/OllamaKit">OllamaKit</a></li>
<li><a href="https://github.com/sparkle-project/Sparkle">Sparkle</a></li>
<li><a href="https://github.com/gonzalezreal/swift-markdown-ui">swift-markdown-ui</a></li>
<li><a href="https://github.com/siteline/swiftui-introspect">swiftui-introspect</a></li>
</ul>
+
+
+ vtourraine/AcknowList
+ 2023-12-24T02:00:19Z
+ tag:github.com,2023-12-24:/vtourraine/AcknowList
+
+ <p>Acknowledgements screen displaying a list of licenses, for example from CocoaPods and Swift Package Manager dependencies.</p><hr><h1>AcknowList</h1>
<p>Acknowledgements screen displaying a list of licenses, for example from <a href="https://cocoapods.org">CocoaPods</a> and <a href="https://swift.org/package-manager/">Swift Package Manager</a> dependencies.</p>
<p><img src="https://img.shields.io/cocoapods/p/AcknowList.svg?sanitize=true" alt="Platform iOS tvOS watchOS macOS"> <a href="https://github.com/vtourraine/AcknowList/actions/workflows/ios.yml"><img src="https://github.com/vtourraine/AcknowList/actions/workflows/ios.yml/badge.svg?sanitize=true" alt="Build & Test"></a> <img src="https://img.shields.io/badge/Swift-5-blue.svg?sanitize=true" alt="Swift 5"> <img src="https://img.shields.io/badge/support-Swift_Package_Manager-orange.svg?sanitize=true" alt="Swift Package Manager"> <a href="https://cocoapods.org/pods/AcknowList"><img src="https://img.shields.io/cocoapods/v/AcknowList.svg?sanitize=true" alt="CocoaPods compatible"></a> <a href="https://github.com/vtourraine/AcknowList/raw/master/LICENSE"><img src="http://img.shields.io/badge/license-MIT-blue.svg?sanitize=true" alt="MIT license"></a></p>
<p><em>Also available in Objective-C with <a href="https://github.com/vtourraine/VTAcknowledgementsViewController">VTAcknowledgementsViewController</a>.</em></p>
<p><img src="https://raw.githubusercontent.com/vtourraine/AcknowList/main/Sources/AcknowList/AcknowList.docc/Resources/acknowlist@2x.png" alt="AcknowList screenshots"></p>
<h2>Features</h2>
<ul>
<li>Load acknowledgments from CocoaPods-generated files (<code>Pods-###-acknowledgements.plist</code>)</li>
<li>Load acknowledgments from Swift Package Manager files (<code>Package.resolved</code>)</li>
<li>Remove unnecessary line breaks from licenses for better text wrapping</li>
<li>Optional list header and footer</li>
<li>Tappable links in header, footer, and acknowledgment text</li>
<li>Storyboard support</li>
<li>Dark Mode support</li>
<li>Dynamic Type support</li>
<li>Localized in 13 languages</li>
<li>UIKit and SwiftUI interfaces</li>
</ul>
<h2>Installation</h2>
<h3>CocoaPods</h3>
<ol>
<li>Add <code>pod 'AcknowList'</code> to your <code>Podfile</code>.</li>
<li>Run <code>pod install</code>.</li>
<li>Add the <code>Pods-#target#-acknowledgements.plist</code> file generated by CocoaPods to your main target: drag and drop the file from the <code>Pods/Target Support Files/Pods-#target#/</code> folder to your Xcode project (don’t copy the file, leave <code>Copy items if needed</code> unchecked).</li>
</ol>
<h3>Swift Package Manager</h3>
<p>AcknowList can be installed with the <a href="https://swift.org/package-manager/">Swift Package Manager</a> (requires Xcode 12 for localized resources).</p>
<ol>
<li>Click on <code>File</code> → <code>Add Packages…</code>.</li>
<li>Enter <code>https://github.com/vtourraine/AcknowList</code>.</li>
<li>Select the version you’d like to use.</li>
<li>Add the <code>Package.resolved</code> file generated by Xcode to your main target. Drag and drop the file from the folder to your Xcode project (don’t copy the file, leave <code>Copy items if needed</code> unchecked).
<ul>
<li>For single Xcode projects, the file is in <code>[appName].xcodeproj/project.xcworkspace/xcshareddata/swiftpm/</code></li>
<li>For Xcode workspaces (for instance with CocoaPods), the file is in <code>[appName].xcworkspace/xcshareddata/swiftpm/</code></li>
</ul> </li>
</ol>
<h2>Initialization</h2>
<p>The <code>AcknowListViewController</code> instance is usually pushed to an existing <code>UINavigationController</code>.</p>
<pre><code class="language-swift">let viewController = AcknowListViewController()
navigationController.pushViewController(viewController, animated: true)
</code></pre>
<p>By default, the controller will try to load acknowledgements from a CocoaPods plist file (by guessing its location based on the bundle name), as well as from a <code>Package.resolved</code> file.</p>
<p>You can also initialize the view controller with a custom file name or URL.</p>
<pre><code class="language-swift">let viewController = AcknowListViewController(fileNamed: "Pods-AcknowExample-acknowledgements")
</code></pre>
<pre><code class="language-swift">let url = Bundle.main.url(forResource: "Pods-AcknowExample-acknowledgements", withExtension: "plist")
let viewController = AcknowListViewController(plistFileURL: url)
</code></pre>
<p>If you want to include licenses that are not part of a <code>.plist</code> or <code>.resolved</code> file, you can create new <code>Acknow</code> instances, and use them for the acknowledgements array of the controller.</p>
<pre><code class="language-swift">let acknow = Acknow(title: "...", text: "...")
let viewController = AcknowListViewController(acknowledgements: [acknow])
</code></pre>
<h2>Customization</h2>
<p>The controller can also display a header and a footer. By default, they are loaded from the generated <code>plist</code> file, but you can also directly change the properties values.</p>
<pre><code class="language-swift">viewController.headerText = "We love open source software."
viewController.footerText = "Powered by CocoaPods and SPM"
</code></pre>
<p>The controller title is a localized value for “acknowledgements”. You might want to use this localized value for the button presenting the controller.</p>
<pre><code class="language-swift">button.setTitle(AcknowLocalization.localizedTitle(), for: .normal)
</code></pre>
<p>By default, <code>AcknowListViewController</code> uses the “grouped” table view style. You can choose a different style:</p>
<pre><code class="language-swift">let viewController = AcknowListViewController(plistFileURL: url, style: .plain)
</code></pre>
<p>If you need to further customize the appearance or behavior of this library, feel free to subclass its classes.</p>
<h2>SwiftUI</h2>
<p>AcknowList now offers a SwiftUI interface, which supports all the major platforms.</p>
<p>Instantiate a <code>AcknowListSwiftUIView</code> with a path to the <code>plist</code> file, or with an array of <code>Acknow</code> instances, and present this view from a <code>NavigationView</code>.</p>
<h2>Platforms</h2>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">UIKit</th>
<th align="left">SwiftUI</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">📱</td>
<td align="left">iOS 9.0+</td>
<td align="left">iOS 13.0+</td>
</tr>
<tr>
<td align="left">📺</td>
<td align="left">tvOS 9.0+</td>
<td align="left">tvOS 13.0+</td>
</tr>
<tr>
<td align="left">⌚️</td>
<td align="left"><em>not supported</em></td>
<td align="left">watchOS 7.0+</td>
</tr>
<tr>
<td align="left">💻</td>
<td align="left"><em>not supported</em></td>
<td align="left">macOS 10.15+</td>
</tr>
</tbody>
</table>
<p>⚠️ If you install AcknowList with CocoaPods or Swift Package Manager, it will require iOS 13 and tvOS 13. To support earlier versions, please import this library manually, and ignore the SwiftUI classes. Alternatively, use <a href="https://github.com/vtourraine/VTAcknowledgementsViewController">VTAcknowledgementsViewController</a> instead.</p>
<h2>Requirements</h2>
<p>AcknowList is written in Swift 5, and requires Xcode 12 and above.</p>
<h2>Credits</h2>
<p>AcknowList was created by <a href="https://www.vtourraine.net">Vincent Tourraine</a>, and improved by a growing <a href="https://github.com/vtourraine/AcknowList/contributors">list of contributors</a>.</p>
<h2>License</h2>
<p>AcknowList is available under the MIT license. See the <code>LICENSE.txt</code> file for more info.</p>
+
+
+ mangerlahn/Latest
+ 2023-12-24T02:00:19Z
+ tag:github.com,2023-12-24:/mangerlahn/Latest
+
+ <p>A small utility app for macOS that makes sure you know about all the latest updates to the apps you use.</p><hr><h1>Latest</h1>
<p><a href="https://hosted.weblate.org/engage/latest/"><img src="https://hosted.weblate.org/widgets/latest/-/svg-badge.svg?sanitize=true" alt="Translation status"></a></p>
<p>This is Latest, a small utility app for the Mac. Latest is a free and open-source app for macOS that checks if all your apps are up to date. Get a quick overview of which apps changed and what changed and update them right away. Latest currently supports apps downloaded from the Mac App Store and apps that use Sparkle for updates, which covers most of the apps on the market.</p>
<p>Latest is developed in my free time, so occasional updates may happen. Take a look at the <a href="https://github.com/mangerlahn/latest/issues">Issues</a> section to see what's coming. If you have an idea for a new feature, or encounter any bugs, feel free to open a new issue. I am thankful for contributions. Check out the section below for more information.</p>
<p><img src="https://raw.githubusercontent.com/mangerlahn/Latest/main/latest.png" alt="Latest"></p>
<h2>Installation</h2>
<p>There are multiple ways to install the app.</p>
<h3>Download the App</h3>
<p>The easiest way to install Latest is to <a href="https://max.codes/latest/Latest.zip">download</a> the latest release as an app. You unzip the download by double-clicking on it (if that does not happen automatically) and then move the <code>Latest.app</code> into the <code>Applications</code> folder.</p>
<p>If you would like to check out earlier versions, head over to the <a href="https://github.com/mangerlahn/Latest/releases">Releases</a> page to browse the history of Latest.</p>
<h3>Homebrew Cask</h3>
<p>Latest can also be installed via <a href="https://github.com/Homebrew/homebrew-cask">Homebrew Cask</a>. If you have not installed Homebrew, follow the simple instructions <a href="https://brew.sh">here</a>. After that, run <code>brew install --cask latest</code> to install the current version of Latest.</p>
<h3>Build from Source</h3>
<p><strong>To build Latest, Xcode 11 and Swift 5 is required.</strong></p>
<p>You can build Latest directly on your machine. To do that, you have to download the source code by cloning the repository: <code>git clone --recurse-submodules git@github.com:mangerlahn/Latest.git</code>.</p>
<p>Then you can open the <code>Latest.xcodeproj</code> and hit <em>Build and Run</em>. Make sure that the <code>Latest</code> scheme is selected.</p>
<h2>Contribution</h2>
<p>I am thankful for all contributions to the project. You can contribute typo-fixes, translations, code and of course suggestions, wishes, and bug reports.</p>
<h3>Translations</h3>
<p>The text used in Latest is hosted by the kind people over at <a href="https://weblate.org/">Weblate</a>. If you would like to add a new language, or improve an existing one, <a href="https://hosted.weblate.org/engage/latest/">here</a> is your starting point.</p>
<p><a href="https://hosted.weblate.org/engage/latest/"><img src="https://hosted.weblate.org/widgets/latest/-/multi-auto.svg?sanitize=true" alt="Translation status"></a></p>
<h3>Code</h3>
<p>Take a look at the <a href="https://github.com/mangerlahn/latest/issues">Issues</a> section to see what you can do. If you have your own idea, and it does not appear in the issues list, please add it first. I don't think that I would reject any pull request, but it is useful to know about your idea earlier. Imagine two people have the same idea at the same time and both put a lot of work into that just to find out that someone else has made the same when it's too late.</p>
<p>I would like to assign every issue to the person working on that particular thing, so if you would like to implement something, leave a small note in the issue. I will assign the issue to you and it's yours.</p>
<h2>Donation</h2>
<p>As mentioned above, Latest is free for you to use. I work on the app in my spare time. If you would like to support the development by donating, you can do so <a href="https://max.codes/latest/donate">here</a>.</p>
+
+
\ No newline at end of file
diff --git a/swig/daily/index.xml b/swig/daily/index.xml
index 9a3b1176f60..f37a5ef6433 100644
--- a/swig/daily/index.xml
+++ b/swig/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SWIG Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:39:53Z
+ 2023-12-24T01:43:00Z
Daily Trending of SWIG in GitHub
\ No newline at end of file
diff --git a/swig/weekly/index.xml b/swig/weekly/index.xml
new file mode 100644
index 00000000000..7fbbc1438f9
--- /dev/null
+++ b/swig/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SWIG Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:16Z
+ Weekly Trending of SWIG in GitHub
+
+
\ No newline at end of file
diff --git a/systemverilog/daily/index.xml b/systemverilog/daily/index.xml
index a141103659a..5ec1db43400 100644
--- a/systemverilog/daily/index.xml
+++ b/systemverilog/daily/index.xml
@@ -1,7 +1,7 @@
GitHub SystemVerilog Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:19Z
+ 2023-12-24T01:43:14Z
Daily Trending of SystemVerilog in GitHub
\ No newline at end of file
diff --git a/systemverilog/weekly/index.xml b/systemverilog/weekly/index.xml
new file mode 100644
index 00000000000..cb10a19e962
--- /dev/null
+++ b/systemverilog/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub SystemVerilog Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:37Z
+ Weekly Trending of SystemVerilog in GitHub
+
+
\ No newline at end of file
diff --git a/talon/daily/index.xml b/talon/daily/index.xml
index 0994c165e5c..8bda01a781e 100644
--- a/talon/daily/index.xml
+++ b/talon/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Talon Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:18Z
+ 2023-12-24T01:43:13Z
Daily Trending of Talon in GitHub
\ No newline at end of file
diff --git a/talon/weekly/index.xml b/talon/weekly/index.xml
new file mode 100644
index 00000000000..70d07652080
--- /dev/null
+++ b/talon/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Talon Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:36Z
+ Weekly Trending of Talon in GitHub
+
+
\ No newline at end of file
diff --git a/tcl/daily/index.xml b/tcl/daily/index.xml
index 4ae651084ad..c8ad3c2b857 100644
--- a/tcl/daily/index.xml
+++ b/tcl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Tcl Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:17Z
+ 2023-12-24T01:43:15Z
Daily Trending of Tcl in GitHub
\ No newline at end of file
diff --git a/tcl/weekly/index.xml b/tcl/weekly/index.xml
new file mode 100644
index 00000000000..a07e6ccc984
--- /dev/null
+++ b/tcl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Tcl Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:35Z
+ Weekly Trending of Tcl in GitHub
+
+
\ No newline at end of file
diff --git a/tcsh/daily/index.xml b/tcsh/daily/index.xml
index 97ec9abc971..77609b16a70 100644
--- a/tcsh/daily/index.xml
+++ b/tcsh/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Tcsh Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:16Z
+ 2023-12-24T01:43:12Z
Daily Trending of Tcsh in GitHub
\ No newline at end of file
diff --git a/tcsh/weekly/index.xml b/tcsh/weekly/index.xml
new file mode 100644
index 00000000000..53e691b96d9
--- /dev/null
+++ b/tcsh/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Tcsh Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:34Z
+ Weekly Trending of Tcsh in GitHub
+
+
\ No newline at end of file
diff --git a/tea/daily/index.xml b/tea/daily/index.xml
index ad497e4399c..a986e37485f 100644
--- a/tea/daily/index.xml
+++ b/tea/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Tea Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:20Z
+ 2023-12-24T01:43:17Z
Daily Trending of Tea in GitHub
\ No newline at end of file
diff --git a/tea/weekly/index.xml b/tea/weekly/index.xml
new file mode 100644
index 00000000000..a2d16f97bc7
--- /dev/null
+++ b/tea/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Tea Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:38Z
+ Weekly Trending of Tea in GitHub
+
+
\ No newline at end of file
diff --git a/terra/daily/index.xml b/terra/daily/index.xml
index 330e3566f27..2237b34fe00 100644
--- a/terra/daily/index.xml
+++ b/terra/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Terra Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:22Z
+ 2023-12-24T01:43:16Z
Daily Trending of Terra in GitHub
\ No newline at end of file
diff --git a/terra/weekly/index.xml b/terra/weekly/index.xml
new file mode 100644
index 00000000000..b23deb2f831
--- /dev/null
+++ b/terra/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Terra Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:39Z
+ Weekly Trending of Terra in GitHub
+
+
\ No newline at end of file
diff --git a/tex/daily/index.xml b/tex/daily/index.xml
index 222b1aaef13..0c31aefc07c 100644
--- a/tex/daily/index.xml
+++ b/tex/daily/index.xml
@@ -1,21 +1,14 @@
GitHub TeX Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:25Z
+ 2023-12-24T01:43:20Z
Daily Trending of TeX in GitHub
- unaguil/metodos_numericos
- 2023-12-23T01:40:25Z
- tag:github.com,2023-12-23:/unaguil/metodos_numericos
-
- <p>Ejercicios de la asignatura de métodos numéricos I de la UNED</p><hr>
-
-
- subhylahiri/MikTeX-local
- 2023-12-23T01:40:25Z
- tag:github.com,2023-12-23:/subhylahiri/MikTeX-local
-
- <p>Bib files, macro lists etc. for including in all other LaTeX projects</p><hr><h1>MikTeX-local</h1>
<p>Bib files, macro lists etc. for including in all other LaTeX projects</p>
<h2>CTAN packages</h2>
<p>You'll need</p>
<ul>
<li>a4wide</li>
<li>ntgclass</li>
<li>natbib</li>
<li>url</li>
<li>xcolor</li>
<li>mptopdf</li>
<li>beamer</li>
<li>pgf</li>
<li>ms</li>
<li>sansmathaccent</li>
<li>filehook</li>
<li>appendixnumberbeamer</li>
<li>etoolbox</li>
<li>adjustbox</li>
<li>collectbox</li>
<li>tcolorbox</li>
<li>environ</li>
<li>trimspaces</li>
<li>type1cm</li>
<li>fp</li>
<li>caption</li>
<li>paralist</li>
<li>cancel</li>
<li>appendix</li>
</ul>
+ ilario/Cards-Against-Humanity-ITA
+ 2023-12-24T01:43:20Z
+ tag:github.com,2023-12-24:/ilario/Cards-Against-Humanity-ITA
+
+ <p>Miglioramenti alla **vecchia** traduzione ufficiale in italiano del gioco di carte Cards Against Humanity</p><hr><p>Il file cah-ita-originale-federico.tex contiene la versione di Cards Against Humanity tradotta da Federico e corretta e impaginata da Ilario. Per ricavare il testo dal pdf presente sul sito ufficiale sono stati utilizzati i seguenti comandi per Linux.</p>
<p>for i in <code>seq 1 31</code>; do echo processing page $i; convert -density 300 CAH_ItalianByFederico.pdf[$(($i - 1 ))] -background white -flatten +matte -colors 7 page$i.tif; done</p>
<p>for i in <code>seq 3 30</code>; do for l in <code>seq 0 4</code>; do for j in <code>seq 0 3</code>; do echo processing page $i vert $l oriz $j ; convert -crop 550x480+$(($j<em>600+95))+$(($l</em>600+170)) page$i.tif crop/page$i-$l-$j.tif; done; done; done</p>
<p>for i in <code>seq 3 30</code>; do for l in <code>seq 0 4</code>; do for j in <code>seq 0 3</code>; do echo processing page $i vert $l oriz $j; tesseract -l eng+ita page$i-$l-$j.tif page$i-$l-$j; cat page$i-$l-$j.txt >> cah-ita.txt; echo "&" >> cah-ita.txt; done; echo "\\" >> cah-ita.txt; done; done</p>
<p>Il file cah-ita-originale-federico-sfoltita.tex si basa sulla versione tradotta da Federico e ne differisce solo per la rimozione di alcune carte che sono peggiori della media.</p>
<p>Il file cah-ita-espansione.tex è una espansione, non basata sulle espansioni ufficiali a pagamento.</p>
<p>Il file cah-ita-espansione-cah42proj.tex è una espansione, basata sull'espansione di CaH42project.it.</p>
<p>Il file cah-ita-espansione-cah42proj-sfoltita.tex è una espansione, basata sull'espansione di CaH42project.it ma modificata e in cui sono state tolte alcune carte.</p>
<p>=== UPDATE 2022</p>
<p>I just realized there's a much more elegant LaTeX implementation by Roberto Amabile (ramabile, <a href="https://github.com/ramabile">https://github.com/ramabile</a>) here: <a href="https://github.com/ramabile/latex-against-humanity">https://github.com/ramabile/latex-against-humanity</a> Check it out! Hopefully at some point in the future I'll take his implementation for using it also here.</p>
<p>Another thing I just noticed is that the Italian PDF on the official website changed and thus I should add the new cards here! (TO DO)</p>
\ No newline at end of file
diff --git a/tex/weekly/index.xml b/tex/weekly/index.xml
new file mode 100644
index 00000000000..a1fb63af276
--- /dev/null
+++ b/tex/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub TeX Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:42Z
+ Weekly Trending of TeX in GitHub
+
+
+ unaguil/metodos_numericos
+ 2023-12-24T02:00:42Z
+ tag:github.com,2023-12-24:/unaguil/metodos_numericos
+
+ <p>Ejercicios de la asignatura de métodos numéricos I de la UNED</p><hr>
+
+
+ jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction
+ 2023-12-24T02:00:42Z
+ tag:github.com,2023-12-24:/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction
+
+ <p>A selection of state-of-the-art research materials on trajectory prediction</p><hr><h1>Awesome Interaction-Aware Behavior and Trajectory Prediction</h1>
<p><img src="https://awesome.re/badge.svg?sanitize=true" alt="Awesome"> <img src="https://img.shields.io/badge/Version-2.0-ff69b4.svg?sanitize=true" alt="Version"> <img src="https://img.shields.io/badge/LastUpdated-2023.09-lightgrey.svg?sanitize=true" alt="LastUpdated"> <img src="https://img.shields.io/badge/Topic-trajectory--prediction-yellow.svg?logo=github" alt="Topic"></p>
<p>This is a checklist of state-of-the-art research materials (datasets, blogs, papers and public codes) related to trajectory prediction. Wish it could be helpful for both academia and industry. (Still updating)</p>
<p><strong>Maintainers</strong>: <a href="https://jiachenli94.github.io"><strong>Jiachen Li</strong></a> (Stanford University); <a href="https://www.linkedin.com/in/hengboma/"><strong>Hengbo Ma</strong></a>, <a href="https://www.linkedin.com/in/jinningli/"><strong>Jinning Li</strong></a> (University of California, Berkeley)</p>
<p><strong>Emails</strong>: <a href="mailto:jiachen_li@stanford.edu">jiachen_li@stanford.edu</a>; {hengbo_ma, jinning_li}@berkeley.edu</p>
<p>Please feel free to pull request to add new resources or send emails to us for questions, discussion and collaborations.</p>
<p><strong>Note</strong>: <a href="https://github.com/jiachenli94/Awesome-Decision-Making-Reinforcement-Learning"><strong>Here</strong></a> is also a collection of materials for reinforcement learning, decision making and motion planning.</p>
<p>Please consider citing our work if you found this repo useful:</p>
<pre><code>@inproceedings{li2020evolvegraph,
title={EvolveGraph: Multi-Agent Trajectory Prediction with Dynamic Relational Reasoning},
author={Li, Jiachen and Yang, Fan and Tomizuka, Masayoshi and Choi, Chiho},
booktitle={2020 Advances in Neural Information Processing Systems (NeurIPS)},
year={2020}
}
@inproceedings{li2019conditional,
title={Conditional Generative Neural System for Probabilistic Trajectory Prediction},
author={Li, Jiachen and Ma, Hengbo and Tomizuka, Masayoshi},
booktitle={2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
pages={6150--6156},
year={2019},
organization={IEEE}
}
</code></pre>
<h3>Table of Contents</h3>
<!-- TOC depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->
<ul>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#datasets"><strong>Datasets</strong></a>
<ul>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#vehicles-and-traffic">Vehicles and Traffic</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#pedestrians">Pedestrians</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#sport-players">Sport Players</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#literature-and-codes"><strong>Literature and Codes</strong></a>
<ul>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#survey-papers">Survey Papers</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#physics-systems-with-interaction">Physics Systems with Interaction</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#intelligent-vehicles-and-pedestrians">Intelligent Vehicles and Pedestrians</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#mobile-robots">Mobile Robots</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#sport-players">Sport Players</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#benchmark-and-evaluation-metrics">Benchmark and Evaluation Metrics</a></li>
<li><a href="https://raw.githubusercontent.com/jiachenli94/Awesome-Interaction-Aware-Trajectory-Prediction/master/#others">Others</a></li>
</ul>
<!-- /TOC --> </li>
</ul>
<h2><strong>Datasets</strong></h2>
<h3>Vehicles and Traffic</h3>
<table>
<thead>
<tr>
<th align="center">Dataset</th>
<th align="center">Agents</th>
<th align="center">Scenarios</th>
<th align="center">Sensors</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><a href="https://waymo.com/open/">Waymo Open Dataset</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">urban / highway</td>
<td align="center">LiDAR / camera / Radar</td>
</tr>
<tr>
<td align="center"><a href="https://www.argoverse.org/">Argoverse</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">urban / highway</td>
<td align="center">LiDAR / camera / Radar</td>
</tr>
<tr>
<td align="center"><a href="https://www.nuscenes.org/">nuScenes</a></td>
<td align="center">vehicles</td>
<td align="center">urban</td>
<td align="center">camera / LiDAR / Radar</td>
</tr>
<tr>
<td align="center"><a href="https://www.highd-dataset.com/">highD</a></td>
<td align="center">vehicles</td>
<td align="center">highway</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://www.ind-dataset.com/">inD</a></td>
<td align="center">vehicles</td>
<td align="center">highway</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://www.round-dataset.com/">roundD</a></td>
<td align="center">vehicles</td>
<td align="center">highway</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://bdd-data.berkeley.edu/">BDD100k</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">highway / urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://www.cvlibs.net/datasets/kitti/">KITTI</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">highway / rural areas</td>
<td align="center">camera / LiDAR</td>
</tr>
<tr>
<td align="center"><a href="https://ops.fhwa.dot.gov/trafficanalysistools/ngsim.htm">NGSIM</a></td>
<td align="center">vehicles</td>
<td align="center">highway</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://www.interaction-dataset.com/">INTERACTION</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">roundabout / intersection</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://www.gavrila.net/Datasets/Daimler_Pedestrian_Benchmark_D/Tsinghua-Daimler_Cyclist_Detec/tsinghua-daimler_cyclist_detec.html">Cyclists</a></td>
<td align="center">cyclists</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://apolloscape.auto/?source=post_page---------------------------">Apolloscapes</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://github.com/udacity/self-driving-car/tree/master/datasets">Udacity</a></td>
<td align="center">vehicles</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://www.cityscapes-dataset.com/">Cityscapes</a></td>
<td align="center">vehicles / people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://cvgl.stanford.edu/projects/uav_data/">Stanford Drone</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://www.argoverse.org/">Argoverse</a></td>
<td align="center">vehicles / people</td>
<td align="center">urban</td>
<td align="center">camera / LiDAR</td>
</tr>
<tr>
<td align="center"><a href="https://gamma.umd.edu/researchdirections/autonomousdriving/trafdataset">TRAF</a></td>
<td align="center">vehicles / buses / cyclists / bikes / people / animals</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://doi.org/10.5281/zenodo.5724486">Aschaffenburg Pose Dataset</a></td>
<td align="center">cyclists / people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
</tbody>
</table>
<h3>Pedestrians</h3>
<table>
<thead>
<tr>
<th align="center">Dataset</th>
<th align="center">Agents</th>
<th align="center">Scenarios</th>
<th align="center">Sensors</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><a href="https://graphics.cs.ucy.ac.cy/research/downloads/crowd-data">UCY</a></td>
<td align="center">people</td>
<td align="center">zara / students</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://icu.ee.ethz.ch/research/datsets.html">ETH (ICCV09)</a></td>
<td align="center">people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://www.viratdata.org/">VIRAT</a></td>
<td align="center">people / vehicles</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://www.cvlibs.net/datasets/kitti/">KITTI</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">highway / rural areas</td>
<td align="center">camera / LiDAR</td>
</tr>
<tr>
<td align="center"><a href="https://irc.atr.jp/crest2010_HRI/ATC_dataset/">ATC</a></td>
<td align="center">people</td>
<td align="center">shopping center</td>
<td align="center">Range sensor</td>
</tr>
<tr>
<td align="center"><a href="http://www.gavrila.net/Datasets/Daimler_Pedestrian_Benchmark_D/daimler_pedestrian_benchmark_d.html">Daimler</a></td>
<td align="center">people</td>
<td align="center">from moving vehicle</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://www.ee.cuhk.edu.hk/~xgwang/grandcentral.html">Central Station</a></td>
<td align="center">people</td>
<td align="center">inside station</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://www.robots.ox.ac.uk/ActiveVision/Research/Projects/2009bbenfold_headpose/project.html#datasets">Town Center</a></td>
<td align="center">people</td>
<td align="center">urban street</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://homepages.inf.ed.ac.uk/rbf/FORUMTRACKING/">Edinburgh</a></td>
<td align="center">people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://www.cityscapes-dataset.com/login/">Cityscapes</a></td>
<td align="center">vehicles / people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://www.argoverse.org/">Argoverse</a></td>
<td align="center">vehicles / people</td>
<td align="center">urban</td>
<td align="center">camera / LiDAR</td>
</tr>
<tr>
<td align="center"><a href="http://cvgl.stanford.edu/projects/uav_data/">Stanford Drone</a></td>
<td align="center">vehicles / cyclists / people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://trajnet.stanford.edu/">TrajNet</a></td>
<td align="center">people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="http://data.nvision2.eecs.yorku.ca/PIE_dataset/">PIE</a></td>
<td align="center">people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://next.cs.cmu.edu/multiverse/index.html">ForkingPaths</a></td>
<td align="center">people</td>
<td align="center">urban / simulation</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://www.aicrowd.com/challenges/trajnet-a-trajectory-forecasting-challenge">TrajNet++</a></td>
<td align="center">people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://doi.org/10.5281/zenodo.5724486">Aschaffenburg Pose Dataset</a></td>
<td align="center">cyclists / people</td>
<td align="center">urban</td>
<td align="center">camera</td>
</tr>
</tbody>
</table>
<h3>Sport Players</h3>
<table>
<thead>
<tr>
<th align="center">Dataset</th>
<th align="center">Agents</th>
<th align="center">Scenarios</th>
<th align="center">Sensors</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><a href="https://datahub.io/collections/football">Football</a></td>
<td align="center">people</td>
<td align="center">football field</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://github.com/linouk23/NBA-Player-Movements">NBA SportVU</a></td>
<td align="center">people</td>
<td align="center">basketball Hall</td>
<td align="center">camera</td>
</tr>
<tr>
<td align="center"><a href="https://github.com/a-vhadgar/Big-Data-Bowl">NFL</a></td>
<td align="center">people</td>
<td align="center">American football</td>
<td align="center">camera</td>
</tr>
</tbody>
</table>
<h2><strong>Literature and Codes</strong></h2>
<h3>Survey Papers</h3>
<ul>
<li>Machine Learning for Autonomous Vehicle’s Trajectory Prediction: A comprehensive survey, Challenges, and Future Research Directions, arXiv preprint arXiv:2307.07527, 2023. [<a href="https://arxiv.org/pdf/2307.07527.pdf">paper</a>]</li>
<li>Incorporating Driving Knowledge in Deep Learning Based Vehicle Trajectory Prediction: A Survey, IEEE T-IV, 2023. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10100881">paper</a>]</li>
<li>Pedestrian Trajectory Prediction in Pedestrian-Vehicle Mixed Environments: A Systematic Review, IEEE T-ITS, 2023. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10181234">paper</a>]</li>
<li>A Survey on Trajectory-Prediction Methods for Autonomous Driving, IEEE T-IV 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9756903">paper</a>]</li>
<li>A Survey of Vehicle Trajectory Prediction Based on Deep Learning Models, International Conference on Sustainable Expert Systems, ICSES 2022. [<a href="https://link.springer.com/chapter/10.1007/978-981-19-7874-6_48">paper</a>]</li>
<li>Scenario Understanding and Motion Prediction for Autonomous Vehicles – Review and Comparison, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9733973">paper</a>]</li>
<li>Multi-modal Fusion Technology based on Vehicle Information: A Survey, arXiv preprint arXiv:2211.06080, 2022. [<a href="https://arxiv.org/pdf/2211.06080.pdf">paper</a>]</li>
<li>Deep Reinforcement Learning for Autonomous Driving: A Survey, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9351818">paper</a>]</li>
<li>Social Interactions for Autonomous Driving: A Review and Perspective, arXiv preprint arXiv:2208.07541, 2022. [<a href="https://arxiv.org/pdf/2208.07541.pdf">paper</a>]</li>
<li>Generative Adversarial Networks for Spatio-temporal Data: A Survey, ACM T-IST, 2022. [<a href="https://dl.acm.org/doi/pdf/10.1145/3474838">paper</a>]</li>
<li>Behavioral Intention Prediction in Driving Scenes: A Survey, arXiv preprint arXiv:2211.00385, 2022. [<a href="https://arxiv.org/pdf/2211.00385.pdf">paper</a>]</li>
<li>A Survey on Motion Prediction of Pedestrians and Vehicles for Autonomous Driving, IEEE Access, 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9559998">paper</a>]</li>
<li>Review of Pedestrian Trajectory Prediction Methods: Comparing Deep Learning and Knowledge-based Approaches, arXiv preprint arXiv:2111.06740, 2021. [<a href="https://arxiv.org/pdf/2111.06740.pdf">paper</a>]</li>
<li>A Survey on Trajectory Data Management, Analytics, and Learning, CSUR 2021. [<a href="https://dl.acm.org/doi/pdf/10.1145/3440207">paper</a>]</li>
<li>Pedestrian Behavior Prediction for Automated Driving: Requirements, Metrics, and Relevant Features, IEEE T-ITS, 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9660784">paper</a>]</li>
<li>A Review of Deep Learning-Based Methods for Pedestrian Trajectory Prediction, Sensors, 2021. [<a href="https://www.mdpi.com/1424-8220/21/22/7543/pdf">paper</a>]</li>
<li>A Survey on Deep-Learning Approaches for Vehicle Trajectory Prediction in Autonomous Driving, ROBIO 2021. [<a href="https://arxiv.org/pdf/2110.10436.pdf">paper</a>] [<a href="https://github.com/Henry1iu/TNT-Trajectory-Predition">code</a>]</li>
<li>A Survey of Deep Learning Techniques for Autonomous Driving, Journal of Field Robotics, 2020. [<a href="https://onlinelibrary.wiley.com/doi/epdf/10.1002/rob.21918?saml_referrer">paper</a>]</li>
<li>Human Motion Trajectory Prediction: A Survey, International Journal of Robotics Research, 2020. [<a href="http://sage.cnpereading.com/paragraph/download/?doi=10.1177/0278364920917446">paper</a>]</li>
<li>Autonomous Driving with Deep Learning: A Survey of State-of-Art Technologies, arXiv preprint arXiv:2006.06091, 2020. [<a href="https://arxiv.org/ftp/arxiv/papers/2006/2006.06091.pdf">paper</a>]</li>
<li>A Survey on Visual Traffic Simulation: Models, Evaluations, and Applications in Autonomous Driving, Computer Graphics Forum 2020. [<a href="https://onlinelibrary.wiley.com/doi/epdf/10.1111/cgf.13803?saml_referrer">paper</a>]</li>
<li>Deep Learning-Based Vehicle Behavior Prediction for Autonomous Driving Applications: A Review, IEEE T-ITS 2020. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9158529">paper</a>]</li>
<li>Survey of Deep Reinforcement Learning for Motion Planning of Autonomous Vehicles, IEEE T-ITS 2020. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9210154">paper</a>]</li>
<li>Vehicle Trajectory Similarity: Models, Methods, and Applications, ACM Computing Surveys (CSUR 2020). [<a href="https://dl.acm.org/doi/pdf/10.1145/3406096">paper</a>]</li>
<li>Modeling and Prediction of Human Driver Behavior: A Survey, 2020. [<a href="https://arxiv.org/abs/2006.08832">paper</a>]</li>
<li>A literature review on the prediction of pedestrian behavior in urban scenarios, ITSC 2018. [<a href="https://ieeexplore.ieee.org/document/8569415">paper</a>]</li>
<li>Survey on Vision-Based Path Prediction. [<a href="https://link.springer.com/chapter/10.1007/978-3-319-91131-1_4">paper</a>]</li>
<li>Autonomous vehicles that interact with pedestrians: A survey of theory and practice. [<a href="https://arxiv.org/abs/1805.11773">paper</a>]</li>
<li>Trajectory data mining: an overview. [<a href="https://dl.acm.org/citation.cfm?id=2743025">paper</a>]</li>
<li>A survey on motion prediction and risk assessment for intelligent vehicles. [<a href="https://robomechjournal.springeropen.com/articles/10.1186/s40648-014-0001-z">paper</a>]</li>
</ul>
<h3>Physics Systems with Interaction</h3>
<ul>
<li>Learning Physical Dynamics with Subequivariant Graph Neural Networks, NeurIPS 2022. [<a href="https://arxiv.org/abs/2210.06876">paper</a>] [<a href="https://github.com/hanjq17/SGNN">code</a>]</li>
<li>EvolveGraph: Multi-Agent Trajectory Prediction with Dynamic Relational Reasoning, NeurIPS 2020. [<a href="https://arxiv.org/abs/2003.13924">paper</a>]</li>
<li>Interaction Templates for Multi-Robot Systems, IROS 2019. [<a href="https://ieeexplore.ieee.org/abstract/document/8737744/">paper</a>]</li>
<li>Factorised Neural Relational Inference for Multi-Interaction Systems, ICML workshop 2019. [<a href="https://arxiv.org/abs/1905.08721v1">paper</a>] [<a href="https://github.com/ekwebb/fNRI">code</a>]</li>
<li>Physics-as-Inverse-Graphics: Joint Unsupervised Learning of Objects and Physics from Video, 2019. [<a href="https://arxiv.org/pdf/1905.11169v1.pdf">paper</a>]</li>
<li>Neural Relational Inference for Interacting Systems, ICML 2018. [<a href="https://arxiv.org/abs/1802.04687v2">paper</a>] [<a href="https://github.com/ethanfetaya/NRI">code</a>]</li>
<li>Unsupervised Learning of Latent Physical Properties Using Perception-Prediction Networks, UAI 2018. [<a href="http://arxiv.org/abs/1807.09244v2">paper</a>]</li>
<li>Relational inductive biases, deep learning, and graph networks, 2018. [<a href="https://arxiv.org/abs/1806.01261v3">paper</a>]</li>
<li>Relational Neural Expectation Maximization: Unsupervised Discovery of Objects and their Interactions, ICLR 2018. [<a href="http://arxiv.org/abs/1802.10353v1">paper</a>]</li>
<li>Graph networks as learnable physics engines for inference and control, ICML 2018. [<a href="http://arxiv.org/abs/1806.01242v1">paper</a>]</li>
<li>Flexible Neural Representation for Physics Prediction, 2018. [<a href="http://arxiv.org/abs/1806.08047v2">paper</a>]</li>
<li>A simple neural network module for relational reasoning, 2017. [<a href="http://arxiv.org/abs/1706.01427v1">paper</a>]</li>
<li>VAIN: Attentional Multi-agent Predictive Modeling, NeurIPS 2017. [<a href="https://arxiv.org/pdf/1706.06122.pdf">paper</a>]</li>
<li>Visual Interaction Networks, 2017. [<a href="http://arxiv.org/abs/1706.01433v1">paper</a>]</li>
<li>A Compositional Object-Based Approach to Learning Physical Dynamics, ICLR 2017. [<a href="http://arxiv.org/abs/1612.00341v2">paper</a>]</li>
<li>Interaction Networks for Learning about Objects, Relations and Physics, 2016. [<a href="https://arxiv.org/abs/1612.00222">paper</a>][<a href="https://github.com/higgsfield/interaction_network_pytorch">code</a>]</li>
</ul>
<h3>Intelligent Vehicles & Traffic & Pedestrians</h3>
<ul>
<li>MotionDiffuser: Controllable Multi-Agent Motion Prediction using Diffusion, CVPR 2023. [<a href="https://openaccess.thecvf.com/content/CVPR2023/papers/Jiang_MotionDiffuser_Controllable_Multi-Agent_Motion_Prediction_Using_Diffusion_CVPR_2023_paper.pdf">paper</a>]</li>
<li>Uncovering the Missing Pattern: Unified Framework Towards Trajectory Imputation and Prediction, CVPR 2023. [<a href="http://xxx.itp.ac.cn/pdf/2303.16005.pdf">paper</a>]</li>
<li>Unsupervised Sampling Promoting for Stochastic Human Trajectory Prediction, CVPR 2023. [<a href="https://chengy12.github.io/files/Bosampler.pdf">paper</a>] [<a href="https://github.com/viewsetting/Unsupervised_sampling_promoting">code</a>]</li>
<li>Planning-oriented Autonomous Driving, CVPR 2023. [<a href="https://openaccess.thecvf.com/content/CVPR2023/papers/Hu_Planning-Oriented_Autonomous_Driving_CVPR_2023_paper.pdf">paper</a>] [<a href="https://github.com/OpenDriveLab/UniAD">code</a>]</li>
<li>IPCC-TP: Utilizing Incremental Pearson Correlation Coefficient for Joint Multi-Agent Trajectory Prediction, CVPR 2023. [<a href="https://arxiv.org/pdf/2303.00575.pdf">paper</a>]</li>
<li>Stimulus Verification is a Universal and Effective Sampler in Multi-modal Human Trajectory Prediction, CVPR 2023. [<a href="https://openaccess.thecvf.com/content/CVPR2023/papers/Sun_Stimulus_Verification_Is_a_Universal_and_Effective_Sampler_in_Multi-Modal_CVPR_2023_paper.pdf">paper</a>]</li>
<li>Query-Centric Trajectory Prediction, CVPR 2023. [<a href="https://openaccess.thecvf.com/content/CVPR2023/papers/Zhou_Query-Centric_Trajectory_Prediction_CVPR_2023_paper.pdf">paper</a>] [<a href="https://github.com/ZikangZhou/QCNet">code</a>] [<a href="https://arxiv.org/pdf/2306.10508.pdf">QCNeXt</a>]</li>
<li>FEND: A Future Enhanced Distribution-Aware Contrastive Learning Framework for Long-tail Trajectory Prediction, CVPR 2023. [<a href="https://arxiv.org/pdf/2303.16574.pdf">paper</a>]</li>
<li>Trace and Pace: Controllable Pedestrian Animation via Guided Trajectory Diffusion, CVPR 2023. [<a href="https://nv-tlabs.github.io/trace-pace/docs/trace_and_pace.pdf">paper</a>] [<a href="https://nv-tlabs.github.io/trace-pace/">website</a>]</li>
<li>FJMP: Factorized Joint Multi-Agent Motion Prediction over Learned Directed Acyclic Interaction Graphs, CVPR 2023. [<a href="https://arxiv.org/pdf/2211.16197.pdf">paper</a>] [<a href="https://rluke22.github.io/FJMP/">website</a>]</li>
<li>Leapfrog Diffusion Model for Stochastic Trajectory Prediction, CVPR 2023. [<a href="https://arxiv.org/pdf/2303.10895.pdf">paper</a>] [<a href="https://github.com/MediaBrain-SJTU/LED">code</a>]</li>
<li>ViP3D: End-to-end Visual Trajectory Prediction via 3D Agent Queries, CVPR 2023. [<a href="http://xxx.itp.ac.cn/pdf/2208.01582.pdf">paper</a>] [<a href="https://tsinghua-mars-lab.github.io/ViP3D/">website</a>]</li>
<li>EqMotion: Equivariant Multi-Agent Motion Prediction with Invariant Interaction Reasoning, CVPR 2023. [<a href="https://arxiv.org/pdf/2303.10876.pdf">paper</a>] [<a href="https://github.com/MediaBrain-SJTU/EqMotion">code</a>]</li>
<li>V2X-Seq: A Large-Scale Sequential Dataset for Vehicle-Infrastructure Cooperative Perception and Forecasting, CVPR 2023. [<a href="https://openaccess.thecvf.com/content/CVPR2023/papers/Yu_V2X-Seq_A_Large-Scale_Sequential_Dataset_for_Vehicle-Infrastructure_Cooperative_Perception_and_CVPR_2023_paper.pdf">paper</a>] [<a href="https://github.com/AIR-THU/DAIR-V2X-Seq">code</a>]</li>
<li>Weakly Supervised Class-agnostic Motion Prediction for Autonomous Driving, CVPR 2023. [<a href="https://openaccess.thecvf.com/content/CVPR2023/papers/Li_Weakly_Supervised_Class-Agnostic_Motion_Prediction_for_Autonomous_Driving_CVPR_2023_paper.pdf">paper</a>]</li>
<li>Decompose More and Aggregate Better: Two Closer Looks at Frequency Representation Learning for Human Motion Prediction, CVPR 2023. [<a href="https://openaccess.thecvf.com/content/CVPR2023/papers/Gao_Decompose_More_and_Aggregate_Better_Two_Closer_Looks_at_Frequency_CVPR_2023_paper.pdf">paper</a>]</li>
<li>HumanMAC: Masked Motion Completion for Human Motion Prediction, ICCV 2023. [<a href="https://arxiv.org/abs/2302.03665">paper</a>] [<a href="https://github.com/LinghaoChan/HumanMAC">code</a>]</li>
<li>BeLFusion: Latent Diffusion for Behavior-Driven Human Motion Prediction, ICCV 2023. [<a href="https://arxiv.org/abs/2211.14304">paper</a>] [<a href="https://github.com/BarqueroGerman/BeLFusion">code</a>]</li>
<li>EigenTrajectory: Low-Rank Descriptors for Multi-Modal Trajectory Forecasting, ICCV 2023. [<a href="https://arxiv.org/abs/2307.09306">paper</a>] [<a href="https://github.com/InhwanBae/EigenTrajectory">code</a>]</li>
<li>ADAPT: Efficient Multi-Agent Trajectory Prediction with Adaptation, ICCV 2023. [<a href="https://arxiv.org/pdf/2307.14187.pdf">paper</a>] [<a href="https://kuis-ai.github.io/adapt/">code</a>]</li>
<li>PowerBEV: A Powerful Yet Lightweight Framework for Instance Prediction in Bird’s-Eye View, IJCAI 2023. [<a href="https://arxiv.org/pdf/2306.10761.pdf">paper</a>] [<a href="https://github.com/EdwardLeeLPZ/PowerBEV">code</a>]</li>
<li>Human Joint Kinematics Diffusion-Refinement for Stochastic Motion Prediction, AAAI 2023. [<a href="https://arxiv.org/pdf/2210.05976.pdf">paper</a>]</li>
<li>Multi-stream Representation Learning for Pedestrian Trajectory Prediction, AAAI 2023. [<a href="https://ojs.aaai.org/index.php/AAAI/article/view/25389">paper</a>]</li>
<li>Continuous Trajectory Generation Based on Two-Stage GAN, AAAI 2023. [<a href="https://arxiv.org/pdf/2301.07103.pdf">paper</a>] [<a href="https://github.com/WenMellors/TS-TrajGen">code</a>]</li>
<li>A Set of Control Points Conditioned Pedestrian Trajectory Prediction, AAAI 2023. [<a href="https://assets.underline.io/lecture/67747/paper/82988b653861eb7a0d5cdc91c4b26f8c.pdf">paper</a>] [<a href="https://github.com/InhwanBae/GraphTERN">code</a>]</li>
<li>Leveraging Future Relationship Reasoning for Vehicle Trajectory Prediction, ICLR 2023. [<a href="https://openreview.net/forum?id=CGBCTp2M6lA">paper</a>]</li>
<li>TrafficGen: Learning to Generate Diverse and Realistic Traffic Scenarios, ICRA 2023. [<a href="https://arxiv.org/pdf/2210.06609.pdf">paper</a>] [<a href="https://github.com/metadriverse/trafficgen">code</a>]</li>
<li>GANet: Goal Area Network for Motion Forecasting, ICRA 2023. [<a href="https://arxiv.org/pdf/2209.09723.pdf">paper</a>] [<a href="https://github.com/kingwmk/GANet">code</a>]</li>
<li>TOFG: A Unified and Fine-Grained Environment Representation in Autonomous Driving, ICRA 2023. [<a href="https://arxiv.org/pdf/2305.20068.pdf">paper</a>]</li>
<li>SSL-Lanes: Self-Supervised Learning for Motion Forecasting in Autonomous Driving, CoRL 2023. [<a href="https://arxiv.org/pdf/2206.14116.pdf">paper</a>] [<a href="https://github.com/AutoVision-cloud/SSL-Lanes">code</a>]</li>
<li>LimSim: A Long-term Interactive Multi-scenario Traffic Simulator, ITSC 2023. [<a href="https://arxiv.org/pdf/2307.06648.pdf">paper</a>] [<a href="https://github.com/PJLab-ADG/LimSim">code</a>]</li>
<li>MVHGN: Multi-View Adaptive Hierarchical Spatial Graph Convolution Network Based Trajectory Prediction for Heterogeneous Traffic-Agents, TITS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10056303">paper</a>]</li>
<li>Adaptive and Simultaneous Trajectory Prediction for Heterogeneous Agents via Transferable Hierarchical Transformer Network, TITS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10149109">paper</a>]</li>
<li>SSAGCN: Social Soft Attention Graph Convolution Network for Pedestrian Trajectory Prediction, TNNLS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10063206">paper</a>] [<a href="https://github.com/WW-Tong/ssagcn_for_path_prediction">code</a>]</li>
<li>Disentangling Crowd Interactions for Pedestrians Trajectory Prediction, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10083225">paper</a>]</li>
<li>VNAGT: Variational Non-Autoregressive Graph Transformer Network for Multi-Agent Trajectory Prediction, IEEE Transactions on Vehicular Technology. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10121688">paper</a>]</li>
<li>Spatial-Temporal-Spectral LSTM: A Transferable Model for Pedestrian Trajectory Prediction, TIV. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10149368">paper</a>]</li>
<li>Holistic Transformer: A Joint Neural Network for Trajectory Prediction and Decision-Making of Autonomous Vehicles, PR. [<a href="https://www.sciencedirect.com/science/article/pii/S0031320323002935">paper</a>]</li>
<li>Tri-HGNN: Learning triple policies fused hierarchical graph neural networks for pedestrian trajectory prediction, PR. [<a href="https://www.sciencedirect.com/science/article/pii/S0031320323004703">paper</a>]</li>
<li>Multimodal Vehicular Trajectory Prediction With Inverse Reinforcement Learning and Risk Aversion at Urban Unsignalized Intersections, TITS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10164651">paper</a>]</li>
<li>Trajectory prediction for autonomous driving based on multiscale spatial‐temporal graph, IET Intelligent Transport Systems. [<a href="https://ietresearch.onlinelibrary.wiley.com/doi/pdfdirect/10.1049/itr2.12265">paper</a>]</li>
<li>Social Self-Attention Generative Adversarial Networks for Human Trajectory Prediction, IEEE Transactions on Artificial Intelligence. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10197467">paper</a>]</li>
<li>CSIR: Cascaded Sliding CVAEs With Iterative Socially-Aware Rethinking for Trajectory Prediction, TITS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10215313">paper</a>]</li>
<li>Multimodal Manoeuvre and Trajectory Prediction for Automated Driving on Highways Using Transformer Networks, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10207845">paper</a>]</li>
<li>A physics-informed Transformer model for vehicle trajectory prediction on highways, Transportation Research Part C: Emerging Technologies. [<a href="https://www.sciencedirect.com/science/article/pii/S0968090X23002619">paper</a>] [<a href="https://github.com/Gengmaosi/PIT-IDM">code</a>]</li>
<li>MacFormer: Map-Agent Coupled Transformer for Real-time and Robust Trajectory Prediction, RAL. [<a href="https://arxiv.org/pdf/2308.10280.pdf">paper</a>]</li>
<li>MRGTraj: A Novel Non-Autoregressive Approach for Human Trajectory Prediction, TCSVT. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10226250">paper</a>] [<a href="https://github.com/wisionpeng/MRGTraj">code</a>]</li>
<li>Planning-inspired Hierarchical Trajectory Prediction via Lateral-Longitudinal Decomposition for Autonomous Driving, TIV. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10226224">paper</a>]</li>
<li>Traj-MAE: Masked Autoencoders for Trajectory Prediction, arXiv preprint arXiv:2303.06697, 2023. [<a href="https://arxiv.org/pdf/2303.06697.pdf">paper</a>]</li>
<li>Uncertainty-Aware Pedestrian Trajectory Prediction via Distributional Diffusion, arXiv preprint arXiv:2303.08367, 2023. [<a href="https://arxiv.org/pdf/2303.08367.pdf">paper</a>]</li>
<li>Diffusion Model for GPS Trajectory Generation, arXiv preprint arXiv:2304.11582, 2023. [<a href="https://arxiv.org/pdf/2304.11582.pdf">paper</a>]</li>
<li>Multiverse Transformer: 1st Place Solution for Waymo Open Sim Agents Challenge 2023, CVPR 2023 Workshop on Autonomous Driving. [<a href="https://arxiv.org/pdf/2306.11868.pdf">paper</a>] [<a href="https://multiverse-transformer.github.io/sim-agents/">website</a>]</li>
<li>Joint-Multipath++ for Simulation Agents: 2nd Place Solution for Waymo Open Sim Agents Challenge 2023, CVPR 2023 Workshop on Autonomous Driving. [<a href="https://storage.googleapis.com/waymo-uploads/files/research/2023%20Technical%20Reports/SA_hm_jointMP.pdf">paper</a>] [<a href="https://github.com/wangwenxi-handsome/Joint-Multipathpp">code</a>]</li>
<li>MTR++: Multi-Agent Motion Prediction with Symmetric Scene Modeling and Guided Intention Querying, 1st Place Solution for Waymo Open Motion Prediction Challenge 2023, CVPR 2023 Workshop on Autonomous Driving. [<a href="https://arxiv.org/pdf/2306.17770.pdf">paper</a>] [<a href="https://github.com/sshaoshuai/MTR">code</a>]</li>
<li>GameFormer: Game-theoretic Modeling and Learning of Transformer-based Interactive Prediction and Planning for Autonomous Driving, arXiv preprint arXiv:2303.05760, 2023. [<a href="https://arxiv.org/pdf/2303.05760.pdf">paper</a>] [<a href="https://github.com/MCZhi/GameFormer">code</a>] [<a href="https://mczhi.github.io/GameFormer/">website</a>]</li>
<li>GameFormer Planner: A Learning-enabled Interactive Prediction and Planning Framework for Autonomous Vehicles, the nuPlan Planning Challenge at the CVPR 2023 End-to-End Autonomous Driving Workshop. [<a href="https://opendrivelab.com/e2ead/AD23Challenge/Track_4_AID.pdf">paper</a>] [<a href="https://github.com/MCZhi/GameFormer-Planner/">code</a>]</li>
<li>trajdata: A Unified Interface to Multiple Human Trajectory Datasets, arXiv preprint arXiv:2307.13924, 2023. [<a href="https://arxiv.org/pdf/2307.13924.pdf">paper</a>] [<a href="https://github.com/NVlabs/trajdata">code</a>]</li>
<li>Remember Intentions: Retrospective-Memory-based Trajectory Prediction, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.11474.pdf">paper</a>] [<a href="https://github.com/MediaBrain-SJTU/MemoNet">code</a>]</li>
<li>STCrowd: A Multimodal Dataset for Pedestrian Perception in Crowded Scenes, CVPR 2022. [<a href="https://arxiv.org/pdf/2204.01026.pdf">paper</a>] [<a href="https://github.com/4DVLab/STCrowd.git">code</a>]</li>
<li>Vehicle trajectory prediction works, but not everywhere, CVPR 2022. [<a href="https://arxiv.org/pdf/2112.03909.pdf">paper</a>] [<a href="https://s-attack.github.io/">code</a>]</li>
<li>Stochastic Trajectory Prediction via Motion Indeterminacy Diffusion, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.13777.pdf">paper</a>] [<a href="https://github.com/gutianpei/MID">code</a>]</li>
<li>Non-Probability Sampling Network for Stochastic Human Trajectory Prediction, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.13471.pdf">paper</a>] [<a href="https://github.com/inhwanbae/NPSN">code</a>]</li>
<li>On Adversarial Robustness of Trajectory Prediction for Autonomous Vehicles, CVPR 2022. [<a href="https://arxiv.org/pdf/2201.05057.pdf">paper</a>] [<a href="https://github.com/zqzqz/AdvTrajectoryPrediction">code</a>]</li>
<li>Adaptive Trajectory Prediction via Transferable GNN, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.05046.pdf">paper</a>]</li>
<li>Towards Robust and Adaptive Motion Forecasting: A Causal Representation Perspective, CVPR 2022. [<a href="https://arxiv.org/pdf/2111.14820.pdf">paper</a>] [<a href="https://github.com/vita-epfl/causalmotion">code</a>, <a href="https://github.com/sherwinbahmani/ynet_adaptive">code</a>]</li>
<li>How many Observations are Enough? Knowledge Distillation for Trajectory Forecasting, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.04781.pdf">paper</a>]</li>
<li>Learning from All Vehicles, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.11934.pdf">paper</a>] [<a href="https://github.com/dotchen/LAV">code</a>]</li>
<li>Forecasting from LiDAR via Future Object Detection, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.16297.pdf">paper</a>] [<a href="https://github.com/neeharperi/FutureDet">code</a>]</li>
<li>End-to-End Trajectory Distribution Prediction Based on Occupancy Grid Maps, CVPR 2022. [<a href="https://arxiv.org/pdf/2203.16910.pdf">paper</a>] [<a href="https://github.com/Kguo-cs/TDOR">code</a>]</li>
<li>M2I: From Factored Marginal Trajectory Prediction to Interactive Prediction, CVPR 2022. [<a href="https://arxiv.org/pdf/2202.11884.pdf">paper</a>] [<a href="https://tsinghua-mars-lab.github.io/M2I/">code</a>]</li>
<li>GroupNet: Multiscale Hypergraph Neural Networks for Trajectory Prediction with Relational Reasoning, CVPR 2022. [<a href="https://arxiv.org/pdf/2204.08770.pdf">paper</a>] [<a href="https://github.com/MediaBrain-SJTU/GroupNet">code</a>]</li>
<li>Whose Track Is It Anyway? Improving Robustness to Tracking Errors with Affinity-Based Prediction, CVPR 2022. [<a href="https://xinshuoweng.com/papers/Affinipred/camera_ready.pdf">paper</a>]</li>
<li>ScePT: Scene-consistent, Policy-based Trajectory Predictions for Planning, CVPR 2022. [<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Chen_ScePT_Scene-Consistent_Policy-Based_Trajectory_Predictions_for_Planning_CVPR_2022_paper.pdf">paper</a>] [<a href="https://github.com/NVlabs/ScePT">code</a>]</li>
<li>Graph-based Spatial Transformer with Memory Replay for Multi-future Pedestrian Trajectory Prediction, CVPR 2022. [<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Li_Graph-Based_Spatial_Transformer_With_Memory_Replay_for_Multi-Future_Pedestrian_Trajectory_CVPR_2022_paper.pdf">paper</a>] [<a href="https://github.com/Jacobieee/ST-MR">code</a>]</li>
<li>MUSE-VAE: Multi-Scale VAE for Environment-Aware Long Term Trajectory Prediction, CVPR 2022. [<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Lee_MUSE-VAE_Multi-Scale_VAE_for_Environment-Aware_Long_Term_Trajectory_Prediction_CVPR_2022_paper.pdf">paper</a>]</li>
<li>LTP: Lane-based Trajectory Prediction for Autonomous Driving, CVPR 2022. [<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Wang_LTP_Lane-Based_Trajectory_Prediction_for_Autonomous_Driving_CVPR_2022_paper.pdf">paper</a>]</li>
<li>ATPFL: Automatic Trajectory Prediction Model Design under Federated Learning Framework, CVPR 2022. [<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Wang_ATPFL_Automatic_Trajectory_Prediction_Model_Design_Under_Federated_Learning_Framework_CVPR_2022_paper.pdf">paper</a>]</li>
<li>Human Trajectory Prediction with Momentary Observation, CVPR 2022. [<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Sun_Human_Trajectory_Prediction_With_Momentary_Observation_CVPR_2022_paper.pdf">paper</a>]</li>
<li>HiVT: Hierarchical Vector Transformer for Multi-Agent Motion Prediction, CVPR 2022. [<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Zhou_HiVT_Hierarchical_Vector_Transformer_for_Multi-Agent_Motion_Prediction_CVPR_2022_paper.pdf">paper</a>] [<a href="https://github.com/ZikangZhou/HiVT">code</a>]</li>
<li>Learning Pedestrian Group Representations for Multi-modal Trajectory Prediction, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.09953.pdf">paper</a>] [<a href="https://github.com/InhwanBae/GPGraph">code</a>]</li>
<li>Social-Implicit: Rethinking Trajectory Prediction Evaluation and The Effectiveness of Implicit Maximum Likelihood Estimation, ECCV 2022. [<a href="https://arxiv.org/pdf/2203.03057.pdf">paper</a>] [<a href="https://github.com/abduallahmohamed/Social-Implicit">code</a>] [<a href="https://www.abduallahmohamed.com/social-implicit-amdamv-adefde-demo">website</a>]</li>
<li>Hierarchical Latent Structure for Multi-Modal Vehicle Trajectory Forecasting, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.04624.pdf">paper</a>] [<a href="https://github.com/d1024choi/HLSTrajForecast">code</a>]</li>
<li>SocialVAE: Human Trajectory Prediction using Timewise Latents, ECCV 2022. [<a href="https://arxiv.org/pdf/2203.08207.pdf">paper</a>] [<a href="https://github.com/xupei0610/SocialVAE">code</a>]</li>
<li>View Vertically: A Hierarchical Network for Trajectory Prediction via Fourier Spectrums, ECCV 2022. [<a href="https://arxiv.org/pdf/2110.07288.pdf">paper</a>] [<a href="https://github.com/cocoon2wong/Vertical">code</a>]</li>
<li>Entry-Flipped Transformer for Inference and Prediction of Participant Behavior, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.06235.pdf">paper</a>]</li>
<li>D2-TPred: Discontinuous Dependency for Trajectory Prediction under Traffic Lights, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.10398.pdf">paper</a>] [<a href="https://github.com/VTP-TL/D2-TPred">code</a>]</li>
<li>Human Trajectory Prediction via Neural Social Physics, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.10435.pdf">paper</a>] [<a href="https://github.com/realcrane/Human-Trajectory-Prediction-via-Neural-Social-Physics">code</a>]</li>
<li>Social-SSL: Self-Supervised Cross-Sequence Representation Learning Based on Transformers for Multi-Agent Trajectory Prediction, ECCV 2022. [<a href="https://basiclab.lab.nycu.edu.tw/assets/Social-SSL.pdf">paper</a>] [<a href="https://github.com/Sigta678/Social-SSL">code</a>]</li>
<li>Aware of the History: Trajectory Forecasting with the Local Behavior Data, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.09646.pdf">paper</a>] [<a href="https://github.com/Kay1794/Aware-of-the-history">code</a>]</li>
<li>Action-based Contrastive Learning for Trajectory Prediction, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.08664.pdf">paper</a>]</li>
<li>AdvDO: Realistic Adversarial Attacks for Trajectory Prediction, ECCV 2022. [<a href="https://arxiv.org/pdf/2209.08744.pdf">paper</a>]</li>
<li>ST-P3: End-to-end Vision-based Autonomous Driving via Spatial-Temporal Feature Learning, ECCV 2022. [<a href="https://arxiv.org/pdf/2207.07601.pdf">paper</a>] [<a href="https://github.com/OpenPerceptionX/ST-P3">code</a>]</li>
<li>Social ODE: Multi-Agent Trajectory Forecasting with Neural Ordinary Differential Equations, ECCV 2022. [<a href="https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136820211.pdf">paper</a>]</li>
<li>Forecasting Human Trajectory from Scene History, NeurIPS 2022. [<a href="https://arxiv.org/pdf/2210.08732.pdf">paper</a>] [<a href="https://github.com/MaKaRuiNah/SHENet">code</a>]</li>
<li>Trajectory-guided Control Prediction for End-to-end Autonomous Driving: A Simple yet Strong Baseline, NeurIPS 2022. [<a href="https://arxiv.org/pdf/2206.08129">paper</a>] [<a href="https://github.com/OpenPerceptionX/TCP">code</a>]</li>
<li>Motion Transformer with Global Intention Localization and Local Movement Refinement, NeurIPS 2022. [<a href="https://arxiv.org/pdf/2209.13508.pdf">paper</a>] [<a href="https://vas.mpi-inf.mpg.de/motion-transformer-with-global-intention-localization-and-local-movement-refinement/">website</a>]</li>
<li>Interaction Modeling with Multiplex Attention, NeurIPS 2022. [<a href="https://arxiv.org/pdf/2208.10660.pdf">paper</a>] [<a href="https://github.com/fanyun-sun/IMMA">code</a>]</li>
<li>Deep Interactive Motion Prediction and Planning: Playing Games with Motion Prediction Models, Conference on Learning for Dynamics and Control (L4DC). [<a href="https://arxiv.org/pdf/2204.02392.pdf">paper</a>] [<a href="https://sites.google.com/view/deep-interactive-predict-plan">website</a>]</li>
<li>Social Interpretable Tree for Pedestrian Trajectory Prediction, AAAI 2022. [<a href="https://arxiv.org/pdf/2205.13296.pdf">paper</a>] [<a href="https://github.com/lssiair/SIT">code</a>]</li>
<li>Complementary Attention Gated Network for Pedestrian Trajectory Prediction, AAAI 2022. [<a href="https://www.aaai.org/AAAI22Papers/AAAI-1963.DuanJ.pdf">paper</a>] [<a href="https://github.com/jinghaiD/CAGN">code</a>]</li>
<li>Scene Transformer: A unified architecture for predicting future trajectories of multiple agents, ICLR 2022. [<a href="https://openreview.net/pdf?id=Wm3EA5OlHsG">paper</a>]</li>
<li>You Mostly Walk Alone: Analyzing Feature Attribution in Trajectory Prediction, ICLR 2022. [<a href="https://arxiv.org/pdf/2110.05304.pdf">paper</a>]</li>
<li>Latent Variable Sequential Set Transformers For Joint Multi-Agent Motion Prediction, ICLR 2022. [<a href="https://openreview.net/pdf?id=Dup_dDqkZC5">paper</a>] [<a href="https://fgolemo.github.io/autobots/">code</a>]</li>
<li>THOMAS: Trajectory Heatmap Output with learned Multi-Agent Sampling, ICLR 2022. [<a href="https://arxiv.org/pdf/2110.06607">paper</a>]</li>
<li>Path-Aware Graph Attention for HD Maps in Motion Prediction, ICRA 2022. [<a href="https://arxiv.org/pdf/2202.13772.pdf">paper</a>]</li>
<li>Trajectory Prediction with Linguistic Representations, ICRA 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9811928">paper</a>]</li>
<li>Leveraging Smooth Attention Prior for Multi-Agent Trajectory Prediction, ICRA 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9811718">paper</a>] [<a href="https://sites.google.com/view/smoothness-attention">website</a>]</li>
<li>KEMP: Keyframe-Based Hierarchical End-to-End Deep Model for Long-Term Trajectory Prediction, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9812337">paper</a>]</li>
<li>Domain Generalization for Vision-based Driving Trajectory Generation, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9812070">paper</a>] [<a href="https://sites.google.com/view/dg-traj-gen">website</a>]</li>
<li>A Deep Concept Graph Network for Interaction-Aware Trajectory Prediction, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9811567">paper</a>]</li>
<li>Conditioned Human Trajectory Prediction using Iterative Attention Blocks, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9812404">paper</a>]</li>
<li>StopNet: Scalable Trajectory and Occupancy Prediction for Urban Autonomous Driving, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9811830">paper</a>]</li>
<li>Meta-path Analysis on Spatio-Temporal Graphs for Pedestrian Trajectory Prediction, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9811632">paper</a>] [<a href="https://sites.google.com/illinois.edu/mesrnn/home">website</a>]</li>
<li>Propagating State Uncertainty Through Trajectory Forecasting, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9811776">paper</a>] [<a href="https://github.com/StanfordASL/PSU-TF">code</a>]</li>
<li>HYPER: Learned Hybrid Trajectory Prediction via Factored Inference and Adaptive Sampling, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9812254">paper</a>]</li>
<li>Grouptron: Dynamic Multi-Scale Graph Convolutional Networks for Group-Aware Dense Crowd Trajectory Forecasting, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9811585">paper</a>]</li>
<li>Crossmodal Transformer Based Generative Framework for Pedestrian Trajectory Prediction, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9812226">paper</a>]</li>
<li>Trajectory Prediction for Autonomous Driving with Topometric Map, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9811712">paper</a>] [<a href="https://github.com/Jiaolong/trajectory-prediction">code</a>]</li>
<li>CRAT-Pred: Vehicle Trajectory Prediction with Crystal Graph Convolutional Neural Networks and Multi-Head Self-Attention, ICRA 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9811637">paper</a>] [<a href="https://github.com/schmidt-ju/crat-pred">code</a>]</li>
<li>MultiPath++: Efficient Information Fusion and Trajectory Aggregation for Behavior Prediction, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9812107">paper</a>]</li>
<li>Multi-modal Motion Prediction with Transformer-based Neural Network for Autonomous Driving, ICRA 2022. [<a href="https://ieeexplore.ieee.org/document/9812060/">paper</a>]</li>
<li>GOHOME: Graph-Oriented Heatmap Output for future Motion Estimation, ICRA 2022. [<a href="https://arxiv.org/pdf/2109.01827.pdf">paper</a>]</li>
<li>TridentNetV2: Lightweight Graphical Global Plan Representations for Dynamic Trajectory Generation, ICRA 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9811591">paper</a>]</li>
<li>Heterogeneous-Agent Trajectory Forecasting Incorporating Class Uncertainty, IROS 2022. [<a href="https://arxiv.org/pdf/2104.12446.pdf">paper</a>] [<a href="https://github.com/TRI-ML/HAICU">code</a>] [<a href="https://github.com/nvr-avg/trajdata">trajdata</a>]</li>
<li>Trajectory Prediction with Graph-based Dual-scale Context Fusion, IROS 2022. [<a href="https://arxiv.org/pdf/2111.01592.pdf">paper</a>] [<a href="https://github.com/HKUST-Aerial-Robotics/DSP">code</a>]</li>
<li>Robust Trajectory Prediction against Adversarial Attacks, CoRL 2022. [<a href="https://arxiv.org/pdf/2208.00094.pdf">paper</a>] [<a href="https://robustav.github.io/RobustTraj/">code</a>]</li>
<li>Planning with Diffusion for Flexible Behavior Synthesis, ICML 2022. [<a href="https://arxiv.org/abs/2205.09991">paper</a>] [<a href="https://diffusion-planning.github.io/">website</a>]</li>
<li>Synchronous Bi-Directional Pedestrian Trajectory Prediction with Error Compensation, ACCV 2022. [<a href="https://openaccess.thecvf.com/content/ACCV2022/papers/Xie_Synchronous_Bi-Directional_Pedestrian_Trajectory_Prediction_with_Error_Compensation_ACCV_2022_paper.pdf">paper</a>]</li>
<li>AI-TP: Attention-based Interaction-aware Trajectory Prediction for Autonomous Driving, IEEE T-IV, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9723649">paper</a>] [<a href="https://github.com/KP-Zhang/AI-TP">code</a>]</li>
<li>MDST-DGCN: A Multilevel Dynamic Spatiotemporal Directed Graph Convolutional Network for Pedestrian Trajectory Prediction, Computational Intelligence and Neuroscience. [<a href="https://downloads.hindawi.com/journals/cin/2022/4192367.pdf">paper</a>]</li>
<li>Graph-Based Spatial-Temporal Convolutional Network for Vehicle Trajectory Prediction in Autonomous Driving, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9737058">paper</a>]</li>
<li>Multi-Agent Trajectory Prediction with Heterogeneous Edge-Enhanced Graph Attention Network, IEEE T-ITS, 2022. [<a href="https://dspace.lib.cranfield.ac.uk/bitstream/handle/1826/17541/Multi-agent_trajectory_prediction-2022.pdf?sequence=1&isAllowed=y">paper</a>]</li>
<li>Fully Convolutional Encoder-Decoder With an Attention Mechanism for Practical Pedestrian Trajectory Prediction, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9768201">paper</a>]</li>
<li>STGM: Vehicle Trajectory Prediction Based on Generative Model for Spatial-Temporal Features, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9743363">paper</a>]</li>
<li>Trajectory Prediction for Autonomous Driving Using Spatial-Temporal Graph Attention Transformer, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9768029">paper</a>]</li>
<li>Intention-Aware Vehicle Trajectory Prediction Based on Spatial-Temporal Dynamic Attention Network for Internet of Vehicles, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9767719">paper</a>] [<a href="https://xbchen82.github.io/resource/">code</a>]</li>
<li>Trajectory Forecasting Based on Prior-Aware Directed Graph Convolutional Neural Network, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9686621&tag=1">paper</a>]</li>
<li>DeepTrack: Lightweight Deep Learning for Vehicle Trajectory Prediction in Highways, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9770480">paper</a>]</li>
<li>Interactive Trajectory Prediction Using a Driving Risk Map-Integrated Deep Learning Method for Surrounding Vehicles on Highways, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9745461&tag=1">paper</a>]</li>
<li>Vehicle Trajectory Prediction in Connected Environments via Heterogeneous Context-Aware Graph Convolutional Networks, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9781338">paper</a>]</li>
<li>Trajectory Prediction Neural Network and Model Interpretation Based on Temporal Pattern Attention, IEEE T-ITS, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9945660">paper</a>]</li>
<li>Learning Sparse Interaction Graphs of Partially Detected Pedestrians for Trajectory Prediction, IEEE RA-L, 2022. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9664278">paper</a>] [<a href="https://github.com/tedhuang96/gst">code</a>]</li>
<li>GAMMA: A General Agent Motion Prediction Model for Autonomous Driving, RAL. [<a href="https://arxiv.org/pdf/1906.01566.pdf">paper</a>] [<a href="https://github.com/AdaCompNUS/gamma">code</a>]</li>
<li>Stepwise Goal-Driven Networks for Trajectory Prediction, RAL. [<a href="https://arxiv.org/pdf/2103.14107v3.pdf">paper</a>] [<a href="https://github.com/ChuhuaW/SGNet.pytorch">code</a>]</li>
<li>GA-STT: Human Trajectory Prediction with Group Aware Spatial-Temporal Transformer, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9779572">paper</a>]</li>
<li>Long-term 4D trajectory prediction using generative adversarial networks, Transportation Research Part C: Emerging Technologies. [<a href="https://www.sciencedirect.com/science/article/pii/S0968090X22000031">paper</a>]</li>
<li>A context-aware pedestrian trajectory prediction framework for automated vehicles, Transportation Research Part C: Emerging Technologies. [<a href="https://www.sciencedirect.com/science/article/pii/S0968090X21004423">paper</a>]</li>
<li>Explainable multimodal trajectory prediction using attention models, Transportation Research Part C: Emerging Technologies. [<a href="https://www.sciencedirect.com/science/article/pii/S0968090X22002509">paper</a>]</li>
<li>CSCNet: Contextual semantic consistency network for trajectory prediction in crowded spaces, PR. [<a href="https://www.sciencedirect.com/science/article/pii/S0031320322000334">paper</a>]</li>
<li>CSR: Cascade Conditional Variational AutoEncoder with Social-aware Regression for Pedestrian Trajectory Prediction, PR. [<a href="https://www.sciencedirect.com/science/article/pii/S0031320322005106">paper</a>]</li>
<li>Step Attention: Sequential Pedestrian Trajectory Prediction, IEEE Sensors Journal. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9732437">paper</a>]</li>
<li>Vehicle Trajectory Prediction Method Coupled With Ego Vehicle Motion Trend Under Dual Attention Mechanism, IEEE Transactions on Instrumentation and Measurement. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9749176">paper</a>]</li>
<li>Spatio-temporal Interaction Aware and Trajectory Distribution Aware Graph Convolution Network for Pedestrian Multimodal Trajectory Prediction, IEEE Transactions on Instrumentation and Measurement. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9997233">paper</a>]</li>
<li>Deep encoder–decoder-NN: A deep learning-based autonomous vehicle trajectory prediction and correction model, Physica A: Statistical Mechanics and its Applications. [<a href="https://www.sciencedirect.com/science/article/pii/S0378437122000139">paper</a>]</li>
<li>PTPGC: Pedestrian trajectory prediction by graph attention network with ConvLSTM, Robotics and Autonomous Systems. [<a href="https://www.sciencedirect.com/science/article/pii/S0921889021002165">paper</a>]</li>
<li>GCHGAT: pedestrian trajectory prediction using group constrained hierarchical graph attention networks, Applied Intelligence. [<a href="https://link.springer.com/article/10.1007/s10489-021-02997-w">paper</a>]</li>
<li>Vehicles Trajectory Prediction Using Recurrent VAE Network, IEEE Access. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9740177">paper</a>] [<a href="https://github.com/midemig/traj_pred_vae">code</a>]</li>
<li>SEEM: A Sequence Entropy Energy-Based Model for Pedestrian Trajectory All-Then-One Prediction, TPAMI. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9699076">paper</a>]</li>
<li>PTP-STGCN: Pedestrian Trajectory Prediction Based on a Spatio-temporal Graph Convolutional Neural Network, Applied Intelligence. [<a href="https://link.springer.com/article/10.1007/s10489-022-03524-1">paper</a>]</li>
<li>Trajectory distributions: A new description of movement for trajectory prediction, Computational Visual Media. [<a href="https://link.springer.com/content/pdf/10.1007/s41095-021-0236-6.pdf">paper</a>]</li>
<li>Trajectory prediction for autonomous driving based on multiscale spatial-temporal graph, IET Intelligent Transport Systems. [<a href="https://ietresearch.onlinelibrary.wiley.com/doi/pdfdirect/10.1049/itr2.12265">paper</a>]</li>
<li>Continual learning-based trajectory prediction with memory augmented networks, Knowledge-Based Systems. [<a href="https://www.sciencedirect.com/science/article/pii/S0950705122011157">paper</a>]</li>
<li>Atten-GAN: Pedestrian Trajectory Prediction with GAN Based on Attention Mechanism, Cognitive Computation. [<a href="https://link.springer.com/article/10.1007/s12559-022-10029-z#Abs1">paper</a>]</li>
<li>EvoSTGAT: Evolving spatiotemporal graph attention networks for pedestrian trajectory prediction, Neurocomputing. [<a href="https://www.sciencedirect.com/science/article/pii/S0925231222003460?ref=pdf_download&fr=RR-2&rr=7da0ead45e800fcc">paper</a>]</li>
<li>Raising context awareness in motion forecasting, CVPR Workshops 2022. [<a href="https://arxiv.org/pdf/2109.08048.pdf">paper</a>] [<a href="https://github.com/valeoai/CAB">code</a>]</li>
<li>Goal-driven Self-Attentive Recurrent Networks for Trajectory Prediction, CVPR Workshops 2022. [<a href="https://arxiv.org/pdf/2204.11561.pdf">paper</a>] [<a href="https://github.com/luigifilippochiara/Goal-SAR">code</a>]</li>
<li>Importance Is in Your Attention: Agent Importance Prediction for Autonomous Driving, CVPR Workshops 2022. [<a href="https://arxiv.org/pdf/2204.09121.pdf">paper</a>]</li>
<li>MPA: MultiPath++ Based Architecture for Motion Prediction, CVPR Workshops 2022. [<a href="https://arxiv.org/pdf/2206.10041.pdf">paper</a>] [<a href="https://github.com/stepankonev/waymo-motion-prediction-challenge-2022-multipath-plus-plus">code</a>]</li>
<li>TPAD: Identifying Effective Trajectory Predictions Under the Guidance of Trajectory Anomaly Detection Model, arXiv:2201.02941, 2022. [<a href="https://arxiv.org/pdf/2201.02941v1.pdf">paper</a>]</li>
<li>Wayformer: Motion Forecasting via Simple & Efficient Attention Networks, arXiv preprint arXiv:2207.05844, 2022. [<a href="https://arxiv.org/pdf/2207.05844.pdf">paper</a>]</li>
<li>PreTR: Spatio-Temporal Non-Autoregressive Trajectory Prediction Transformer, arXiv preprint arXiv:2203.09293, 2022. [<a href="https://arxiv.org/pdf/2203.09293.pdf">paper</a>]</li>
<li>LatentFormer: Multi-Agent Transformer-Based Interaction Modeling and Trajectory Prediction, arXiv preprint arXiv:2203.01880, 2022. [<a href="https://arxiv.org/pdf/2203.01880.pdf">paper</a>]</li>
<li>Diverse Multiple Trajectory Prediction Using a Two-stage Prediction Network Trained with Lane Loss, arXiv preprint arXiv:2206.08641, 2022. [<a href="https://arxiv.org/pdf/2206.08641.pdf">paper</a>]</li>
<li>Semi-supervised Semantics-guided Adversarial Training for Trajectory Prediction, arXiv preprint arXiv:2205.14230, 2022. [<a href="https://arxiv.org/pdf/2205.14230.pdf">paper</a>]</li>
<li>Heterogeneous Trajectory Forecasting via Risk and Scene Graph Learning, arXiv preprint arXiv:2211.00848, 2022. [<a href="https://arxiv.org/pdf/2211.00848.pdf">paper</a>]</li>
<li>GATraj: A Graph- and Attention-based Multi-Agent Trajectory Prediction Model, arXiv preprint arXiv:2209.07857, 2022. [<a href="https://arxiv.org/pdf/2209.07857.pdf">paper</a>] [<a href="https://github.com/mengmengliu1998/GATraj">code</a>]</li>
<li>Dynamic-Group-Aware Networks for Multi-Agent Trajectory Prediction with Relational Reasoning, arXiv preprint arXiv:2206.13114, 2022. [<a href="https://arxiv.org/pdf/2206.13114.pdf">paper</a>]</li>
<li>Collaborative Uncertainty Benefits Multi-Agent Multi-Modal Trajectory Forecasting, arXiv preprint arXiv:2207.05195, 2022. [<a href="https://arxiv.org/abs/2207.05195">paper</a>] [<a href="https://github.com/MediaBrain-SJTU/Collaborative-Uncertainty">code</a>]</li>
<li>Guided Conditional Diffusion for Controllable Traffic Simulation, arXiv preprint arXiv:2210.17366, 2022. [<a href="https://arxiv.org/pdf/2210.17366.pdf">paper</a>] [<a href="https://aiasd.github.io/ctg.github.io/">website</a>]</li>
<li>PhysDiff: Physics-Guided Human Motion Diffusion Model, arXiv preprint arXiv:2212.02500, 2022. [<a href="http://xxx.itp.ac.cn/pdf/2212.02500.pdf">paper</a>]</li>
<li>MPA: MultiPath++ Based Architecture for Motion Prediction, CVPR Workshop on Autonomous Driving 2022. [<a href="https://arxiv.org/abs/2206.10041">paper</a>] [<a href="https://github.com/stepankonev/waymo-motion-prediction-challenge-2022-multipath-plus-plus">code</a>]</li>
<li>Collaborative Uncertainty in Multi-Agent Trajectory Forecasting, NeurIPS 2021. [<a href="https://proceedings.neurips.cc/paper/2021/file/31ca0ca71184bbdb3de7b20a51e88e90-Paper.pdf">paper</a>]</li>
<li>GRIN: Generative Relation and Intention Network for Multi-agent Trajectory Prediction, NeurIPS 2021. [<a href="https://proceedings.neurips.cc/paper/2021/file/e3670ce0c315396e4836d7024abcf3dd-Paper.pdf">paper</a>] [<a href="https://github.com/longyuanli/GRIN_NeurIPS21">code</a>]</li>
<li>LibCity: An Open Library for Traffic Prediction, SIGSPATIAL 2021. [<a href="https://dl.acm.org/doi/pdf/10.1145/3474717.3483923">paper</a>] [<a href="https://github.com/LibCity/Bigscity-LibCity">code</a>]</li>
<li>Predicting Vehicles Trajectories in Urban Scenarios with Transformer Networks and Augmented Information, IEEE Intelligent Vehicles Symposium (IV 2021). [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9575242">paper</a>]</li>
<li>Social-STAGE: Spatio-Temporal Multi-Modal Future Trajectory Forecast, ICRA 2021. [<a href="https://arxiv.org/pdf/2011.04853.pdf">paper</a>]</li>
<li>AVGCN: Trajectory Prediction using Graph Convolutional Networks Guided by Human Attention, ICRA 2021. [<a href="https://arxiv.org/pdf/2101.05682.pdf">paper</a>]</li>
<li>Exploring Dynamic Context for Multi-path Trajectory Prediction, ICRA 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9562034">paper</a>] [<a href="https://github.com/wtliao/DCENet">code</a>]</li>
<li>Pedestrian Trajectory Prediction using Context-Augmented Transformer Networks, ICRA 2021. [<a href="https://www.researchgate.net/publication/346614349_Pedestrian_Trajectory_Prediction_using_Context-Augmented_Transformer_Networks">paper</a>] [<a href="https://github.com/KhaledSaleh/Context-Transformer-PedTraj">code</a>]</li>
<li>Spectral Temporal Graph Neural Network for Trajectory Prediction, ICRA 2021. [<a href="https://arxiv.org/pdf/2106.02930.pdf">paper</a>]</li>
<li>Congestion-aware Multi-agent Trajectory Prediction for Collision Avoidance, ICRA 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9560994">paper</a>] [<a href="https://github.com/xuxie1031/CollisionFreeMultiAgentTrajectoryPrediciton">code</a>]</li>
<li>Anticipatory Navigation in Crowds by Probabilistic Prediction of Pedestrian Future Movements, ICRA 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9561022">paper</a>]</li>
<li>AgentFormer: Agent-Aware Transformers for Socio-Temporal Multi-Agent Forecasting, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Yuan_AgentFormer_Agent-Aware_Transformers_for_Socio-Temporal_Multi-Agent_Forecasting_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/Khrylx/AgentFormer">code</a>] [<a href="https://ye-yuan.com/agentformer/">website</a>]</li>
<li>Likelihood-Based Diverse Sampling for Trajectory Forecasting, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Jason_Likelihood-Based_Diverse_Sampling_for_Trajectory_Forecasting_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/JasonMa2016/LDS">code</a>]</li>
<li>MG-GAN: A Multi-Generator Model Preventing Out-of-Distribution Samples in Pedestrian Trajectory Prediction, ICCV 2021. [<a href="https://arxiv.org/pdf/2108.09274.pdf">paper</a>] [<a href="https://github.com/selflein/MG-GAN">code</a>]</li>
<li>Spatial-Temporal Consistency Network for Low-Latency Trajectory Forecasting, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Li_Spatial-Temporal_Consistency_Network_for_Low-Latency_Trajectory_Forecasting_ICCV_2021_paper.pdf">paper</a>]</li>
<li>Three Steps to Multimodal Trajectory Prediction: Modality Clustering, Classification and Synthesis, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Sun_Three_Steps_to_Multimodal_Trajectory_Prediction_Modality_Clustering_Classification_and_ICCV_2021_paper.pdf">paper</a>]</li>
<li>From Goals, Waypoints & Paths To Long Term Human Trajectory Forecasting, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Mangalam_From_Goals_Waypoints__Paths_to_Long_Term_Human_Trajectory_ICCV_2021_paper.pdf">paper</a>] [<a href="https://karttikeya.github.io/publication/ynet/">code</a>]</li>
<li>Where are you heading? Dynamic Trajectory Prediction with Expert Goal Examples, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Zhao_Where_Are_You_Heading_Dynamic_Trajectory_Prediction_With_Expert_Goal_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/JoeHEZHAO/expert_traj">code</a>]</li>
<li>DenseTNT: End-to-end Trajectory Prediction from Dense Goal Sets, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Gu_DenseTNT_End-to-End_Trajectory_Prediction_From_Dense_Goal_Sets_ICCV_2021_paper.pdf">paper</a>]</li>
<li>Safety-aware Motion Prediction with Unseen Vehicles for Autonomous Driving, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Ren_Safety-Aware_Motion_Prediction_With_Unseen_Vehicles_for_Autonomous_Driving_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/xrenaa/Safety-Aware-Motion-Prediction">code</a>]</li>
<li>LOKI: Long Term and Key Intentions for Trajectory Prediction, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Girase_LOKI_Long_Term_and_Key_Intentions_for_Trajectory_Prediction_ICCV_2021_paper.pdf">paper</a>] [<a href="https://usa.honda-ri.com/loki">dataset</a>]</li>
<li>Human Trajectory Prediction via Counterfactual Analysis, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Chen_Human_Trajectory_Prediction_via_Counterfactual_Analysis_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/CHENGY12/CausalHTP">code</a>]</li>
<li>Personalized Trajectory Prediction via Distribution Discrimination, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Chen_Personalized_Trajectory_Prediction_via_Distribution_Discrimination_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/CHENGY12/DisDis">code</a>]</li>
<li>Unlimited Neighborhood Interaction for Heterogeneous Trajectory Prediction, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Zheng_Unlimited_Neighborhood_Interaction_for_Heterogeneous_Trajectory_Prediction_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/zhengfang1997/Unlimited-Neighborhood-Interaction-for-Heterogeneous-Trajectory-Prediction">code</a>]</li>
<li>Social NCE: Contrastive Learning of Socially-aware Motion Representations, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Liu_Social_NCE_Contrastive_Learning_of_Socially-Aware_Motion_Representations_ICCV_2021_paper.pdf">paper</a>] [<a href="https://github.com/vita-epfl/social-nce">code</a>]</li>
<li>RAIN: Reinforced Hybrid Attention Inference Network for Motion Forecasting, ICCV 2021. [<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Li_RAIN_Reinforced_Hybrid_Attention_Inference_Network_for_Motion_Forecasting_ICCV_2021_paper.pdf">paper</a>]</li>
<li>Temporal Pyramid Network for Pedestrian Trajectory Prediction with Multi-Supervision, AAAI 2021. [<a href="https://arxiv.org/pdf/2012.01884.pdf">paper</a>]</li>
<li>SCAN: A Spatial Context Attentive Network for Joint Multi-Agent Intent Prediction, AAAI 2021. [<a href="https://arxiv.org/pdf/2102.00109.pdf">paper</a>]</li>
<li>Disentangled Multi-Relational Graph Convolutional Network for Pedestrian Trajectory Prediction, AAAI 2021. [<a href="https://www.aaai.org/AAAI21Papers/AAAI-1677.BaeI.pdf">paper</a>] [<a href="https://github.com/InhwanBae/DMRGCN">code</a>]</li>
<li>MotionRNN: A Flexible Model for Video Prediction with Spacetime-Varying Motions, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Wu_MotionRNN_A_Flexible_Model_for_Video_Prediction_With_Spacetime-Varying_Motions_CVPR_2021_paper.pdf">paper</a>]</li>
<li>Multimodal Motion Prediction with Stacked Transformers, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Liu_Multimodal_Motion_Prediction_With_Stacked_Transformers_CVPR_2021_paper.pdf">paper</a>] [<a href="https://github.com/decisionforce/mmTransformer">code</a>] [<a href="https://decisionforce.github.io/mmTransformer/?utm_source=catalyzex.com">website</a>]</li>
<li>SGCN: Sparse Graph Convolution Network for Pedestrian Trajectory Prediction, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Shi_SGCN_Sparse_Graph_Convolution_Network_for_Pedestrian_Trajectory_Prediction_CVPR_2021_paper.pdf">paper</a>] [<a href="https://github.com/shuaishiliu/SGCN">code</a>]</li>
<li>LaPred: Lane-Aware Prediction of Multi-Modal Future Trajectories of Dynamic Agents, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Kim_LaPred_Lane-Aware_Prediction_of_Multi-Modal_Future_Trajectories_of_Dynamic_Agents_CVPR_2021_paper.pdf">paper</a>]</li>
<li>Divide-and-Conquer for Lane-Aware Diverse Trajectory Prediction, CVPR 2021. [<a href="https://arxiv.org/pdf/2104.08277.pdf">paper</a>]</li>
<li>Euro-PVI: Pedestrian Vehicle Interactions in Dense Urban Centers, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Bhattacharyya_Euro-PVI_Pedestrian_Vehicle_Interactions_in_Dense_Urban_Centers_CVPR_2021_paper.pdf">paper</a>] [<a href="https://www.mpi-inf.mpg.de/departments/computer-vision-and-machine-learning/research/euro-pvi-dataset">dataset</a>]</li>
<li>Trajectory Prediction with Latent Belief Energy-Based Model, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Pang_Trajectory_Prediction_With_Latent_Belief_Energy-Based_Model_CVPR_2021_paper.pdf">paper</a>] [<a href="https://github.com/bpucla/lbebm">code</a>]</li>
<li>Shared Cross-Modal Trajectory Prediction for Autonomous Driving, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Choi_Shared_Cross-Modal_Trajectory_Prediction_for_Autonomous_Driving_CVPR_2021_paper.pdf">paper</a>]</li>
<li>Pedestrian and Ego-vehicle Trajectory Prediction from Monocular camera, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Neumann_Pedestrian_and_Ego-Vehicle_Trajectory_Prediction_From_Monocular_camera_CVPR_2021_paper.pdf">paper</a>] [<a href="https://gitlab.com/lukeN86/pedFutureTracking">code</a>]</li>
<li>Interpretable Social Anchors for Human Trajectory Forecasting in Crowds, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Kothari_Interpretable_Social_Anchors_for_Human_Trajectory_Forecasting_in_Crowds_CVPR_2021_paper.pdf">paper</a>]</li>
<li>Introvert: Human Trajectory Prediction via Conditional 3D Attention, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Shafiee_Introvert_Human_Trajectory_Prediction_via_Conditional_3D_Attention_CVPR_2021_paper.pdf">paper</a>]</li>
<li>MP3: A Unified Model to Map, Perceive, Predict and Plan, CVPR 2021. [<a href="https://arxiv.org/pdf/2101.06806.pdf">paper</a>]</li>
<li>TrafficSim: Learning to Simulate Realistic Multi-Agent Behaviors, CVPR 2021. [<a href="https://openaccess.thecvf.com/content/CVPR2021/papers/Suo_TrafficSim_Learning_To_Simulate_Realistic_Multi-Agent_Behaviors_CVPR_2021_paper.pdf">paper</a>]</li>
<li>Multimodal Transformer Network for Pedestrian Trajectory Prediction, IJCAI 2021. [<a href="https://www.ijcai.org/proceedings/2021/0174.pdf">paper</a>] [<a href="https://github.com/ericyinyzy/MTN_trajectory">code</a>]</li>
<li>Decoder Fusion RNN: Context and Interaction Aware Decoders for Trajectory Prediction, IROS 2021. [<a href="https://arxiv.org/pdf/2108.05814.pdf">paper</a>]</li>
<li>Joint Intention and Trajectory Prediction Based on Transformer, IROS 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9636241">paper</a>]</li>
<li>Maneuver-based Trajectory Prediction for Self-driving Cars Using Spatio-temporal Convolutional Networks, IROS 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9636875">paper</a>]</li>
<li>Multiple Contextual Cues Integrated Trajectory Prediction for Autonomous Driving, IROS 2021. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9476975">paper</a>]</li>
<li>MultiXNet: Multiclass Multistage Multimodal Motion Prediction, IEEE Intelligent Vehicles Symposium (IV 2021). [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9575718">paper</a>]</li>
<li>Trajectory Prediction for Autonomous Driving based on Multi-Head Attention with Joint Agent-Map Representation, IEEE Intelligent Vehicles Symposium (IV 2021). [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9576054">paper</a>]</li>
<li>Social-IWSTCNN: A Social Interaction-Weighted Spatio-Temporal Convolutional Neural Network for Pedestrian Trajectory Prediction in Urban Traffic Scenarios, IV 2021. [<a href="https://ieeexplore.ieee.org/abstract/document/9575958">paper</a>]</li>
<li>Generating Scenarios with Diverse Pedestrian Behaviors for Autonomous Vehicle Testing, Conference on Robot Learning (CoRL 2021). [<a href="https://openreview.net/pdf?id=HTfApPeT4DZ">paper</a>] [<a href="https://github.com/MariaPriisalu/spl">code</a>]</li>
<li>Multimodal Trajectory Prediction Conditioned on Lane-Graph Traversals, CoRL 2021. [<a href="https://proceedings.mlr.press/v164/deo22a.html">paper</a>] [<a href="https://github.com/nachiket92/PGP">code</a>]</li>
<li>Learning to Predict Vehicle Trajectories with Model-based Planning, CoRL 2021. [<a href="https://arxiv.org/pdf/2103.04027.pdf">paper</a>]</li>
<li>Pose Based Trajectory Forecast of Vulnerable Road Users Using Recurrent Neural Networks, International Conference on Pattern Recognition (ICPR 2021). [<a href="https://link.springer.com/content/pdf/10.1007/978-3-030-68763-2_5.pdf">paper</a>]</li>
<li>GraphTCN: Spatio-Temporal Interaction Modeling for Human Trajectory Prediction, WACV 2021. [<a href="https://openaccess.thecvf.com/content/WACV2021/papers/Wang_GraphTCN_Spatio-Temporal_Interaction_Modeling_for_Human_Trajectory_Prediction_WACV_2021_paper.pdf">paper</a>]</li>
<li>Goal-driven Long-Term Trajectory Prediction, WACV 2021. [<a href="https://openaccess.thecvf.com/content/WACV2021/papers/Tran_Goal-Driven_Long-Term_Trajectory_Prediction_WACV_2021_paper.pdf">paper</a>]</li>
<li>Multimodal Trajectory Predictions for Autonomous Driving without a Detailed Prior Map, WACV 2021. [<a href="https://openaccess.thecvf.com/content/WACV2021/papers/Kawasaki_Multimodal_Trajectory_Predictions_for_Autonomous_Driving_Without_a_Detailed_Prior_WACV_2021_paper.pdf">paper</a>]</li>
<li>Self-Growing Spatial Graph Network for Context-Aware Pedestrian Trajectory Prediction, IEEE International Conference on Image Processing (ICIP 2021). [<a href="https://arxiv.org/pdf/2012.06320v2.pdf">paper</a>] [<a href="https://github.com/serenetech90/AOL_ovsc">code</a>]</li>
<li>S2TNet: Spatio-Temporal Transformer Networks for Trajectory Prediction in Autonomous Driving, Asian Conference on Machine Learning 2021. [<a href="https://arxiv.org/pdf/2206.10902.pdf">paper</a>] [<a href="https://github.com/chenghuang66/s2tnet">code</a>]</li>
<li>Learning Structured Representations of Spatial and Interactive Dynamics for Trajectory Prediction in Crowded Scenes, IEEE Robotics and Automation Letters 2021 [<a href="https://ieeexplore.ieee.org/abstract/document/9309332">paper</a>], [<a href="https://github.com/tdavchev/structured-trajectory-prediction">code</a>]</li>
<li>Trajectory Prediction using Equivariant Continuous Convolution, ICLR 2021. [<a href="https://arxiv.org/pdf/2010.11344.pdf">paper</a>] [<a href="https://github.com/Rose-STL-Lab/ECCO">code</a>]</li>
<li>TridentNet: A Conditional Generative Model for Dynamic Trajectory Generation, International Conference on Intelligent Autonomous Systems 2021. [<a href="https://link.springer.com/chapter/10.1007/978-3-030-95892-3_31#Abs1">paper</a>]</li>
<li>HOME: Heatmap Output for future Motion Estimation, ITSC 2021. [<a href="https://arxiv.org/pdf/2105.10968.pdf">paper</a>]</li>
<li>Graph and Recurrent Neural Network-based Vehicle Trajectory Prediction For Highway Driving, ITSC 2021. [<a href="https://ieeexplore.ieee.org/abstract/document/9564929">paper</a>]</li>
<li>SCSG Attention: A Self-Centered Star Graph with Attention for Pedestrian Trajectory Prediction, International Conference on Database Systems for Advanced Applications (DASFAA 2021). [<a href="https://link.springer.com/content/pdf/10.1007/978-3-030-73194-6_29.pdf">paper</a>]</li>
<li>Leveraging Trajectory Prediction for Pedestrian Video Anomaly Detection, IEEE Symposium Series on Computational Intelligence (SSCI 2021). [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9660004">paper</a>] [<a href="https://github.com/akanuasiegbu/Leveraging-Trajectory-Prediction-for-Pedestrian-Video-Anomaly-Detection">code</a>]</li>
<li>Are socially-aware trajectory prediction models really socially-aware?, Transportation Research: Part C. [<a href="https://arxiv.org/pdf/2108.10879.pdf">paper</a>, <a href="https://iccv21-adv-workshop.github.io/short_paper/s-attack-arow2021.pdf">paper</a>] [<a href="https://s-attack.github.io/">code</a>]</li>
<li>Injecting knowledge in data-driven vehicle trajectory predictors, Transportation Research: Part C. [<a href="https://reader.elsevier.com/reader/sd/pii/S0968090X21000425?token=F03D20769BFB255F56662C10348A81F3D07A42C6B4AB9BA19E3F7B2A5F1DA7D99B96B783616BDA86C12866AFCF4C5671&originRegion=eu-west-1&originCreation=20220506090622">paper</a>] [<a href="https://github.com/vita-epfl/RRB">code</a>]</li>
<li>Decoding pedestrian and automated vehicle interactions using immersive virtual reality and interpretable deep learning, Transportation Research: Part C. [<a href="https://www.sciencedirect.com/science/article/pii/S0968090X2030855X">paper</a>]</li>
<li>Human Trajectory Forecasting in Crowds: A Deep Learning Perspective, IEEE Transactions on Intelligent Transportation Systems. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9408398">paper</a>] [<a href="https://github.com/vita-epfl/trajnetplusplusbaselines">code</a>]</li>
<li>NetTraj: A Network-Based Vehicle Trajectory Prediction Model With Directional Representation and Spatiotemporal Attention Mechanisms, TITS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9629362">paper</a>]</li>
<li>Spatio-Temporal Graph Dual-Attention Network for Multi-Agent Prediction and Tracking, TITS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9491972">paper</a>]</li>
<li>A Hierarchical Framework for Interactive Behaviour Prediction of Heterogeneous Traffic Participants Based on Graph Neural Network, TITS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9468360&tag=1">paper</a>]</li>
<li>TrajGAIL: Generating urban vehicle trajectories using generative adversarial imitation learning, Transportation Research Part C. [<a href="https://reader.elsevier.com/reader/sd/pii/S0968090X21001121?token=3DEACAF2AD919E99B3331E74F747B61A0EAC2741E79B6F99F4F806155EB394F163D74F2F83806358BBD65911E107EF01&originRegion=us-east-1&originCreation=20220416040814">paper</a>] [<a href="https://github.com/benchoi93/TrajGAIL">code</a>]</li>
<li>Vehicle Trajectory Prediction Using Generative Adversarial Network With Temporal Logic Syntax Tree Features, IEEE ROBOTICS AND AUTOMATION LETTERS. [<a href="https://www.gilitschenski.org/igor/publications/202104-ral-logic_gan/ral21-logic_gan.pdf">paper</a>]</li>
<li>Vehicle Trajectory Prediction Using LSTMs with Spatial-Temporal Attention Mechanisms, IEEE Intelligent Transportation Systems Magazine. [<a href="http://urdata.net/files/2020_VTP.pdf">paper</a>] [<a href="https://github.com/leilin-research/VTP">code</a>]</li>
<li>Long Short-Term Memory-Based Human-Driven Vehicle Longitudinal Trajectory Prediction in a Connected and Autonomous Vehicle Environment, Transportation Research Record. [<a href="http://sage.cnpereading.com/paragraph/download/?doi=10.1177/0361198121993471">paper</a>]</li>
<li>Temporal Pyramid Network with Spatial-Temporal Attention for Pedestrian Trajectory Prediction, IEEE Transactions on Network Science and Engineering. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9373939">paper</a>]</li>
<li>An efficient Spatial–Temporal model based on gated linear units for trajectory prediction, Neurocomputing. [<a href="https://reader.elsevier.com/reader/sd/pii/S0925231221018907?token=C894F657732BB6078B77AEC9BD3858338C1A7F1254CCC0BBC34ADA1421A95CF9A4F68BDCA8812457DE27FB37EEB8F198&originRegion=us-east-1&originCreation=20220420144432">paper</a>]</li>
<li>SRAI-LSTM: A Social Relation Attention-based Interaction-aware LSTM for human trajectory prediction, Neurocomputing. [<a href="https://reader.elsevier.com/reader/sd/pii/S0925231221018014?token=BB22DAAC41E3BF453C326A9D72A0CC900C2DFFD0D8AE07B7DEED51C7F2250B9CB40CC89B6812CA20DBFA6A7EDD32AAD6&originRegion=us-east-1&originCreation=20220512100647">paper</a>]</li>
<li>AST-GNN: An attention-based spatio-temporal graph neural network for Interaction-aware pedestrian trajectory prediction, Neurocomputing. [<a href="https://www.sciencedirect.com/science/article/pii/S092523122100388X">paper</a>]</li>
<li>Multi-PPTP: Multiple Probabilistic Pedestrian Trajectory Prediction in the Complex Junction Scene, IEEE Transactions on Intelligent Transportation Systems. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9619864">paper</a>]</li>
<li>A Novel Graph-Based Trajectory Predictor With Pseudo-Oracle, TNNLS. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9447207">paper</a>]</li>
<li>Large Scale GPS Trajectory Generation Using Map Based on Two Stage GAN, Journal of Data Science. [<a href="https://www.jds-online.com/files/JDS202001-08.pdf">paper</a>] [<a href="https://github.com/XingruiWang/Two-Stage-Gan-in-trajectory-generation">code</a>]</li>
<li>Pose and Semantic Map Based Probabilistic Forecast of Vulnerable Road Users’ Trajectories, IEEE Transactions on Intelligent Vehicles. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9707640">paper</a>]</li>
<li>STI-GAN: Multimodal Pedestrian Trajectory Prediction Using Spatiotemporal Interactions and a Generative Adversarial Network, IEEE Access. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9387292">paper</a>]</li>
<li>Holistic LSTM for Pedestrian Trajectory Prediction, TIP. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9361440">paper</a>]</li>
<li>Pedestrian trajectory prediction with convolutional neural networks, PR. [<a href="https://www.sciencedirect.com/science/article/pii/S0031320321004325">paper</a>]</li>
<li>LSTM based trajectory prediction model for cyclist utilizing multiple interactions with environment, PR. [<a href="https://www.sciencedirect.com/science/article/pii/S0031320320306038">paper</a>]</li>
<li>Human trajectory prediction and generation using LSTM models and GANs, PR. [<a href="https://www.sciencedirect.com/science/article/pii/S003132032100323X">paper</a>]</li>
<li>Vehicle trajectory prediction and generation using LSTM models and GANs, Plos one. [<a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0253868">paper</a>]</li>
<li>BiTraP: Bi-Directional Pedestrian Trajectory Prediction With Multi-Modal Goal Estimation, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9345445">paper</a>] [<a href="https://github.com/umautobots/bidireaction-trajectory-prediction">code</a>]</li>
<li>A Kinematic Model for Trajectory Prediction in General Highway Scenarios, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9472993">paper</a>] [<a href="https://github.com/umautobots/kinematic_highway">code</a>]</li>
<li>Trajectory Prediction in Autonomous Driving With a Lane Heading Auxiliary Loss, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9387075">paper</a>]</li>
<li>Vehicle Trajectory Prediction Using Generative Adversarial Network With Temporal Logic Syntax Tree Features, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9366373">paper</a>]</li>
<li>Tra2Tra: Trajectory-to-Trajectory Prediction With a Global Social Spatial-Temporal Attentive Neural Network, RAL. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9347678">paper</a>]</li>
<li>Social graph convolutional LSTM for pedestrian trajectory prediction, IET Intelligent Transport Systems. [<a href="https://ietresearch.onlinelibrary.wiley.com/doi/epdf/10.1049/itr2.12033">paper</a>]</li>
<li>HSTA: A Hierarchical Spatio-Temporal Attention Model for Trajectory Prediction, IEEE Transactions on Vehicular Technology (TVT). [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9548801">paper</a>]</li>
<li>Environment-Attention Network for Vehicle Trajectory Prediction, TVT. [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9534487">paper</a>]</li>
<li>Where Are They Going? Predicting Human Behaviors in Crowded Scenes, ACM Transactions on Multimedia Computing, Communications, and Applications (TOMM). [<a href="https://dl.acm.org/doi/pdf/10.1145/3449359">paper</a>]</li>
<li>Multi-Agent Trajectory Prediction with Spatio-Temporal Sequence Fusion, IEEE Transactions on Multimedia (TMM). [<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9580659">paper</a>]</li>
<li>EvolveGraph: Multi-Agent Trajectory Prediction with Dynamic Relational Reasoning, NeurIPS 2020. [<a href="https://arxiv.org/abs/2003.13924">paper</a>]</li>
<li>V2VNet- Vehicle-to-Vehicle Communication for Joint Perception and Prediction, ECCV 2020. [<a href="https://arxiv.org/abs/2008.07519">paper</a>]</li>
<li>SMART- Simultaneous Multi-Agent Recurrent Trajectory Prediction, ECCV 2020. [<a href="https://arxiv.org/abs/2007.13078">paper</a>]</li>
<li>SimAug- Learning Robust Representations from Simulation for Trajectory Prediction, ECCV 2020. [<a href="https://arxiv.org/abs/2004.02022">paper</a>]</li>
<li>Learning Lane Graph Representations for Motion Forecasting, ECCV 2020. [<a href="https://arxiv.org/abs/2007.13732">paper</a>]</li>
<li>Implicit Latent Variable Model for Scene-Consistent Motion Forecasting, ECCV 2020. [<a href="https://arxiv.org/abs/2007.12036">paper</a>]</li>
<li>Diverse and Admissible Trajectory Forecasting through Multimodal Context Understanding, ECCV 2020. [<a href="https://arxiv.org/abs/2003.03212">paper</a>]</li>
<li>Semantic Synthesis of Pedestrian Locomotion, ACCV 2020. [<a href="https://openaccess.thecvf.com/content/ACCV2020/html/Priisalu_Semantic_Synthesis_of_Pedestrian_Locomotion_ACCV_2020_paper.html">Paper</a>]</li>
<li>Kernel Trajectory Maps for Multi-Modal Probabilistic Motion Prediction, CoRL 2019. [<a href="https://arxiv.org/abs/1907.05127">paper</a>] [<a href="https://github.com/wzhi/KernelTrajectoryMaps">code</a>]</li>
<li>Social-WaGDAT: Interaction-aware Trajectory Prediction via Wasserstein Graph Double-Attention Network, 2020. [<a href="https://arxiv.org/abs/2002.06241">paper</a>]</li>
<li>Social NCE: Contrastive Learning of Socially-aware Motion Representations. [<a href="https://arxiv.org/abs/2012.11717">paper</a>], [<a href="https://github.com/vita-epfl/social-nce">code</a>]</li>
<li>Pose Based Trajectory Forecast of Vulnerable Road Users Using Recurrent Neural Networks, ICPR International Workshops and Challenges 2020. [<a href="https://www.springerprofessional.de/pose-based-trajectory-forecast-of-vulnerable-road-users-using-re/18885576">paper</a>]</li>
<li>EvolveGraph: Multi-Agent Trajectory Prediction with Dynamic Relational Reasoning, NeurIPS 2020. [<a href="https://arxiv.org/abs/2003.13924">paper</a>]</li>
<li>Spatio-Temporal Graph Transformer Networks for Pedestrian Trajectory Prediction, ECCV 2020. [<a href="https://arxiv.org/abs/2005.08514">paper</a>]</li>
<li>It is not the Journey but the Destination- Endpoint Conditioned Trajectory Prediction, ECCV 2020. [<a href="https://arxiv.org/abs/2004.02025">paper</a>]</li>
<li>How Can I See My Future? FvTraj: Using First-person View for Pedestrian Trajectory Prediction, ECCV 2020. [<a href="http://graphics.cs.uh.edu/wp-content/papers/2020/2020-ECCV-PedestrianTrajPrediction.pdf">paper</a>]</li>
<li>Dynamic and Static Context-aware LSTM for Multi-agent Motion Prediction, ECCV 2020. [<a href="https://arxiv.org/abs/2008.00777">paper</a>]</li>
<li>Human Trajectory Forecasting in Crowds: A Deep Learning Perspective, 2020. [<a href="https://arxiv.org/pdf/2007.03639.pdf">paper</a>], [<a href="https://github.com/vita-epfl/trajnetplusplusbaselines">code</a>]</li>
<li>SimAug: Learning Robust Representations from 3D Simulation for Pedestrian Trajectory Prediction in Unseen cameras, ECCV 2020. [<a href="https://arxiv.org/pdf/2004.02022">paper</a>], [<a href="https://github.com/JunweiLiang/Multiverse">code</a>]</li>
<li>DAG-Net: Double Attentive Graph Neural Network for Trajectory Forecasting, ICPR 2020. [<a href="https://arxiv.org/abs/2005.12661">paper</a>] [<a href="https://github.com/alexmonti19/dagnet">code</a>]</li>
<li>Disentangling Human Dynamics for Pedestrian Locomotion Forecasting with Noisy Supervision, WACV 2020. [<a href="https://arxiv.org/abs/1911.01138">paper</a>]</li>
<li>Social-WaGDAT: Interaction-aware Trajectory Prediction via Wasserstein Graph Double-Attention Network, 2020. [<a href="https://arxiv.org/abs/2002.06241">paper</a>]</li>
<li>Social-STGCNN: A Social Spatio-Temporal Graph Convolutional Neural Network for Human Trajectory Prediction, CVPR 2020. [<a href="https://arxiv.org/pdf/2002.11927.pdf">Paper</a>], [<a href="https://github.com/abduallahmohamed/Social-STGCNN/">Code</a>]</li>
<li>The Garden of Forking Paths: Towards Multi-Future Trajectory Prediction, CVPR 2020. [<a href="https://arxiv.org/pdf/1912.06445.pdf">paper</a>], [<a href="https://next.cs.cmu.edu/multiverse/index.html">code/dataset</a>]</li>
<li>Disentangling Human Dynamics for Pedestrian Locomotion Forecasting with Noisy Supervision, WACV 2020. [<a href="https://arxiv.org/abs/1911.01138">paper</a>]</li>
<li>Pose Based Trajectory Forecast of Vulnerable Road Users, SSCI 2019. [<a href="https://ieeexplore.ieee.org/document/9003023">paper</a>]</li>
<li>The Trajectron: Probabilistic Multi-Agent Trajectory Modeling With Dynamic Spatiotemporal Graphs, ICCV 2019. [<a href="http://openaccess.thecvf.com/content_ICCV_2019/papers/Ivanovic_The_Trajectron_Probabilistic_Multi-Agent_Trajectory_Modeling_With_Dynamic_Spatiotemporal_Graphs_ICCV_2019_paper.pdf">paper</a>] [<a href="https://github.com/StanfordASL/Trajectron">code</a>]</li>
<li>STGAT: Modeling Spatial-Temporal Interactions for Human Trajectory Prediction, ICCV 2019. [<a href="http://openaccess.thecvf.com/content_ICCV_2019/papers/Huang_STGAT_Modeling_Spatial-Temporal_Interactions_for_Human_Trajectory_Prediction_ICCV_2019_paper.pdf">paper</a>] [<a href="https://github.com/huang-xx/STGAT">code</a>]</li>
<li>Instance-Level Future Motion Estimation in a Single Image Based on Ordinal Regression, ICCV 2019. [<a href="http://openaccess.thecvf.com/content_ICCV_2019/papers/Kim_Instance-Level_Future_Motion_Estimation_in_a_Single_Image_Based_on_ICCV_2019_paper.pdf">paper</a>]</li>
<li>Social and Scene-Aware Trajectory Prediction in Crowded Spaces, ICCV workshop 2019. [<a href="https://arxiv.org/pdf/1909.08840.pdf">paper</a>] [<a href="https://github.com/Oghma/sns-lstm/">code</a>]</li>
<li>Stochastic Sampling Simulation for Pedestrian Trajectory Prediction, IROS 2019. [<a href="https://arxiv.org/abs/1903.01860">paper</a>]</li>
<li>Long-Term Prediction of Motion Trajectories Using Path Homology Clusters, IROS 2019. [<a href="http://www.csc.kth.se/~fpokorny/static/publications/carvalho2019a.pdf">paper</a>]</li>
<li>StarNet: Pedestrian Trajectory Prediction Using Deep Neural Network in Star Topology, IROS 2019. [<a href="https://arxiv.org/pdf/1906.01797.pdf">paper</a>]</li>
<li>Learning Generative Socially-Aware Models of Pedestrian Motion, IROS 2019. [<a href="https://ieeexplore.ieee.org/abstract/document/8760356/">paper</a>]</li>
<li>Situation-Aware Pedestrian Trajectory Prediction with Spatio-Temporal Attention Model, CVWW 2019. [<a href="https://arxiv.org/pdf/1902.05437.pdf">paper</a>]</li>
<li>Path predictions using object attributes and semantic environment, VISIGRAPP 2019. [<a href="http://mprg.jp/data/MPRG/C_group/C20190225_minoura.pdf">paper</a>]</li>
<li>Probabilistic Path Planning using Obstacle Trajectory Prediction, CoDS-COMAD 2019. [<a href="https://dl.acm.org/citation.cfm?id=3297006">paper</a>]</li>
<li>Human Trajectory Prediction using Adversarial Loss, hEART 2019. [<a href="http://www.strc.ch/2019/Kothari_Alahi.pdf">paper</a>], [<a href="https://github.com/vita-epfl/AdversarialLoss-SGAN">code</a>]</li>
<li>Social Ways: Learning Multi-Modal Distributions of Pedestrian Trajectories with GANs, CVPR 2019. [<a href="https://sites.google.com/view/ieeecvf-cvpr2019-precognition"><em>Precognition Workshop</em></a>], [<a href="http://openaccess.thecvf.com/content_CVPRW_2019/papers/Precognition/Amirian_Social_Ways_Learning_Multi-Modal_Distributions_of_Pedestrian_Trajectories_With_GANs_CVPRW_2019_paper.pdf">paper</a>], [<a href="https://github.com/amiryanj/socialways">code</a>]</li>
<li>Peeking into the Future: Predicting Future Person Activities and Locations in Videos, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPR_2019/papers/Liang_Peeking_Into_the_Future_Predicting_Future_Person_Activities_and_Locations_CVPR_2019_paper.pdf">paper</a>], [<a href="https://github.com/google/next-prediction">code</a>]</li>
<li>Learning to Infer Relations for Future Trajectory Forecast, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPRW_2019/papers/Precognition/Choi_Learning_to_Infer_Relations_for_Future_Trajectory_Forecast_CVPRW_2019_paper.pdf">paper</a>]</li>
<li>TraPHic: Trajectory Prediction in Dense and Heterogeneous Traffic Using Weighted Interactions, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPR_2019/papers/Chandra_TraPHic_Trajectory_Prediction_in_Dense_and_Heterogeneous_Traffic_Using_Weighted_CVPR_2019_paper.pdf">paper</a>]</li>
<li>Which Way Are You Going? Imitative Decision Learning for Path Forecasting in Dynamic Scenes, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPR_2019/papers/Li_Which_Way_Are_You_Going_Imitative_Decision_Learning_for_Path_CVPR_2019_paper.pdf">paper</a>]</li>
<li>Overcoming Limitations of Mixture Density Networks: A Sampling and Fitting Framework for Multimodal Future Prediction, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPR_2019/papers/Makansi_Overcoming_Limitations_of_Mixture_Density_Networks_A_Sampling_and_Fitting_CVPR_2019_paper.pdf">paper</a>][<a href="https://github.com/lmb-freiburg/Multimodal-Future-Prediction">code</a>]</li>
<li>Sophie: An attentive gan for predicting paths compliant to social and physical constraints, CVPR 2019. [<a href="https://arxiv.org/abs/1806.01482">paper</a>][<a href="https://github.com/hindupuravinash/the-gan-zoo/raw/master/README.md">code</a>]</li>
<li>Pedestrian path, pose, and intention prediction through gaussian process dynamical models and pedestrian activity recognition, 2019. [<a href="https://ieeexplore.ieee.org/document/8370119/">paper</a>]</li>
<li>Multimodal Interaction-aware Motion Prediction for Autonomous Street Crossing, 2019. [<a href="https://arxiv.org/abs/1808.06887">paper</a>]</li>
<li>The simpler the better: Constant velocity for pedestrian motion prediction, 2019. [<a href="https://arxiv.org/abs/1903.07933">paper</a>]</li>
<li>Pedestrian trajectory prediction in extremely crowded scenarios, 2019. [<a href="https://www.ncbi.nlm.nih.gov/pubmed/30862018">paper</a>]</li>
<li>Srlstm: State refinement for lstm towards pedestrian trajectory prediction, 2019. [<a href="https://arxiv.org/abs/1903.02793">paper</a>]</li>
<li>Location-velocity attention for pedestrian trajectory prediction, WACV 2019. [<a href="https://ieeexplore.ieee.org/document/8659060">paper</a>]</li>
<li>Pedestrian Trajectory Prediction in Extremely Crowded Scenarios, Sensors, 2019. [<a href="https://www.mdpi.com/1424-8220/19/5/1223/pdf">paper</a>]</li>
<li>Forecasting Trajectory and Behavior of Road-Agents Using Spectral Clustering in Graph-LSTMs, 2019. [<a href="https://arxiv.org/pdf/1912.01118.pdf">paper</a>] [<a href="https://gamma.umd.edu/researchdirections/autonomousdriving/spectralcows/">code</a>]</li>
<li>Joint Prediction for Kinematic Trajectories in Vehicle-Pedestrian-Mixed Scenes, ICCV 2019. [<a href="http://openaccess.thecvf.com/content_ICCV_2019/papers/Bi_Joint_Prediction_for_Kinematic_Trajectories_in_Vehicle-Pedestrian-Mixed_Scenes_ICCV_2019_paper.pdf">paper</a>]</li>
<li>Analyzing the Variety Loss in the Context of Probabilistic Trajectory Prediction, ICCV 2019. [<a href="http://openaccess.thecvf.com/content_ICCV_2019/papers/Thiede_Analyzing_the_Variety_Loss_in_the_Context_of_Probabilistic_Trajectory_ICCV_2019_paper.pdf">paper</a>]</li>
<li>Looking to Relations for Future Trajectory Forecast, ICCV 2019. [<a href="http://openaccess.thecvf.com/content_ICCV_2019/papers/Choi_Looking_to_Relations_for_Future_Trajectory_Forecast_ICCV_2019_paper.pdf">paper</a>]</li>
<li>Jointly Learnable Behavior and Trajectory Planning for Self-Driving Vehicles, IROS 2019. [<a href="https://arxiv.org/abs/1910.04586">paper</a>]</li>
<li>Sharing Is Caring: Socially-Compliant Autonomous Intersection Negotiation, IROS 2019. [<a href="https://pdfs.semanticscholar.org/f4b2/021353bba52224eb33923b3b98956e2c9821.pdf">paper</a>]</li>
<li>INFER: INtermediate Representations for FuturE PRediction, IROS 2019. [<a href="https://arxiv.org/abs/1903.10641">paper</a>] [<a href="https://github.com/talsperre/INFER">code</a>]</li>
<li>Deep Predictive Autonomous Driving Using Multi-Agent Joint Trajectory Prediction and Traffic Rules, IROS 2019. [<a href="http://rllab.snu.ac.kr/publications/papers/2019_iros_predstl.pdf">paper</a>]</li>
<li>NeuroTrajectory: A Neuroevolutionary Approach to Local State Trajectory Learning for Autonomous Vehicles, IROS 2019. [<a href="https://arxiv.org/abs/1906.10971">paper</a>]</li>
<li>Urban Street Trajectory Prediction with Multi-Class LSTM Networks, IROS 2019. [N/A]</li>
<li>Spatiotemporal Learning of Directional Uncertainty in Urban Environments with Kernel Recurrent Mixture Density Networks, IROS 2019. [<a href="https://ieeexplore.ieee.org/document/8772158">paper</a>]</li>
<li>Conditional generative neural system for probabilistic trajectory prediction, IROS 2019. [<a href="https://arxiv.org/abs/1905.01631">paper</a>]</li>
<li>Interaction-aware multi-agent tracking and probabilistic behavior prediction via adversarial learning, ICRA 2019. [<a href="https://arxiv.org/abs/1904.02390">paper</a>]</li>
<li>Generic Tracking and Probabilistic Prediction Framework and Its Application in Autonomous Driving, IEEE Trans. Intell. Transport. Systems, 2019. [<a href="https://www.researchgate.net/publication/334560415_Generic_Tracking_and_Probabilistic_Prediction_Framework_and_Its_Application_in_Autonomous_Driving">paper</a>]</li>
<li>Coordination and trajectory prediction for vehicle interactions via bayesian generative modeling, IV 2019. [<a href="https://arxiv.org/abs/1905.00587">paper</a>]</li>
<li>Wasserstein generative learning with kinematic constraints for probabilistic interactive driving behavior prediction, IV 2019. [<a href="https://ieeexplore.ieee.org/document/8813783">paper</a>]</li>
<li>GRIP: Graph-based Interaction-aware Trajectory Prediction, ITSC 2019. [<a href="https://arxiv.org/abs/1907.07792">paper</a>]</li>
<li>AGen: Adaptable Generative Prediction Networks for Autonomous Driving, IV 2019. [<a href="http://www.cs.cmu.edu/~cliu6/files/iv19-1.pdf">paper</a>]</li>
<li>TraPHic: Trajectory Prediction in Dense and Heterogeneous Traffic Using Weighted Interactions, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPR_2019/papers/Chandra_TraPHic_Trajectory_Prediction_in_Dense_and_Heterogeneous_Traffic_Using_Weighted_CVPR_2019_paper.pdf">paper</a>], [<a href="https://github.com/rohanchandra30/TrackNPred">code</a>]</li>
<li>Multi-Step Prediction of Occupancy Grid Maps with Recurrent Neural Networks, CVPR 2019. [<a href="https://arxiv.org/pdf/1812.09395.pdf">paper</a>]</li>
<li>Argoverse: 3D Tracking and Forecasting With Rich Maps, CVPR 2019 [<a href="http://openaccess.thecvf.com/content_CVPR_2019/papers/Chang_Argoverse_3D_Tracking_and_Forecasting_With_Rich_Maps_CVPR_2019_paper.pdf">paper</a>]</li>
<li>Robust Aleatoric Modeling for Future Vehicle Localization, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPRW_2019/papers/Precognition/Hudnell_Robust_Aleatoric_Modeling_for_Future_Vehicle_Localization_CVPRW_2019_paper.pdf">paper</a>]</li>
<li>Pedestrian occupancy prediction for autonomous vehicles, IRC 2019. [paper]</li>
<li>Context-based path prediction for targets with switching dynamics, 2019.[<a href="https://link.springer.com/article/10.1007/s11263-018-1104-4">paper</a>]</li>
<li>Deep Imitative Models for Flexible Inference, Planning, and Control, 2019. [<a href="https://arxiv.org/abs/1810.06544">paper</a>]</li>
<li>Infer: Intermediate representations for future prediction, 2019. [<a href="https://arxiv.org/abs/1903.10641">paper</a>][<a href="https://github.com/talsperre/INFER">code</a>]</li>
<li>Multi-agent tensor fusion for contextual trajectory prediction, 2019. [<a href="https://arxiv.org/abs/1904.04776">paper</a>]</li>
<li>Context-Aware Pedestrian Motion Prediction In Urban Intersections, 2018. [<a href="https://arxiv.org/abs/1806.09453">paper</a>]</li>
<li>Generic probabilistic interactive situation recognition and prediction: From virtual to real, ITSC 2018. [<a href="https://ieeexplore.ieee.org/abstract/document/8569780">paper</a>]</li>
<li>Generic vehicle tracking framework capable of handling occlusions based on modified mixture particle filter, IV 2018. [<a href="https://ieeexplore.ieee.org/abstract/document/8500626">paper</a>]</li>
<li>Multi-Modal Trajectory Prediction of Surrounding Vehicles with Maneuver based LSTMs, 2018. [<a href="https://arxiv.org/abs/1805.05499">paper</a>]</li>
<li>Sequence-to-sequence prediction of vehicle trajectory via lstm encoder-decoder architecture, 2018. [<a href="https://arxiv.org/abs/1802.06338">paper</a>]</li>
<li>R2P2: A ReparameteRized Pushforward Policy for diverse, precise generative path forecasting, ECCV 2018. [<a href="https://www.cs.cmu.edu/~nrhineha/R2P2.html">paper</a>]</li>
<li>Predicting trajectories of vehicles using large-scale motion priors, IV 2018. [<a href="https://ieeexplore.ieee.org/document/8500604">paper</a>]</li>
<li>Vehicle trajectory prediction by integrating physics-and maneuver based approaches using interactive multiple models, 2018. [<a href="https://ieeexplore.ieee.org/document/8186191">paper</a>]</li>
<li>Motion Prediction of Traffic Actors for Autonomous Driving using Deep Convolutional Networks, 2018. [<a href="https://arxiv.org/abs/1808.05819v1">paper</a>]</li>
<li>Generative multi-agent behavioral cloning, 2018. [<a href="https://www.semanticscholar.org/paper/Generative-Multi-Agent-Behavioral-Cloning-Zhan-Zheng/ccc196ada6ec9cad1e418d7321b0cd6813d9b261">paper</a>]</li>
<li>Deep Sequence Learning with Auxiliary Information for Traffic Prediction, KDD 2018. [<a href="https://arxiv.org/pdf/1806.07380.pdf">paper</a>], [<a href="https://github.com/JingqingZ/BaiduTraffic">code</a>]</li>
<li>A data-driven model for interaction-aware pedestrian motion prediction in object cluttered environments, ICRA 2018. [<a href="https://arxiv.org/abs/1709.08528">paper</a>]</li>
<li>Move, Attend and Predict: An attention-based neural model for people’s movement prediction, Pattern Recognition Letters 2018. [<a href="https://reader.elsevier.com/reader/sd/pii/S016786551830182X?token=1EF2B664B70D2B0C3ECDD07B6D8B664F5113AEA7533CE5F0B564EF9F4EE90D3CC228CDEB348F79FEB4E8CDCD74D4BA31">paper</a>]</li>
<li>GD-GAN: Generative Adversarial Networks for Trajectory Prediction and Group Detection in Crowds, ACCV 2018, [<a href="https://arxiv.org/pdf/1812.07667.pdf">paper</a>], [<a href="https://www.youtube.com/watch?v=7cCIC_JIfms">demo</a>]</li>
<li>Ss-lstm: a hierarchical lstm model for pedestrian trajectory prediction, WACV 2018. [<a href="https://ieeexplore.ieee.org/document/8354239">paper</a>]</li>
<li>Social Attention: Modeling Attention in Human Crowds, ICRA 2018. [<a href="https://arxiv.org/abs/1710.04689">paper</a>][<a href="https://github.com/TNTant/social_lstm">code</a>]</li>
<li>Pedestrian prediction by planning using deep neural networks, ICRA 2018. [<a href="https://arxiv.org/abs/1706.05904">paper</a>]</li>
<li>Joint long-term prediction of human motion using a planning-based social force approach, ICRA 2018. [<a href="https://iliad-project.eu/publications/2018-2/joint-long-term-prediction-of-human-motion-using-a-planning-based-social-force-approach/">paper</a>]</li>
<li>Human motion prediction under social grouping constraints, IROS 2018. [<a href="http://iliad-project.eu/publications/2018-2/human-motion-prediction-under-social-grouping-constraints/">paper</a>]</li>
<li>Future Person Localization in First-Person Videos, CVPR 2018. [<a href="http://openaccess.thecvf.com/content_cvpr_2018/papers/Yagi_Future_Person_Localization_CVPR_2018_paper.pdf">paper</a>]</li>
<li>Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks, CVPR 2018. [<a href="https://arxiv.org/abs/1803.10892">paper</a>][<a href="https://github.com/agrimgupta92/sgan">code</a>]</li>
<li>Group LSTM: Group Trajectory Prediction in Crowded Scenarios, ECCV 2018. [<a href="https://link.springer.com/chapter/10.1007/978-3-030-11015-4_18">paper</a>]</li>
<li>Mx-lstm: mixing tracklets and vislets to jointly forecast trajectories and head poses, CVPR 2018. [<a href="https://arxiv.org/abs/1805.00652">paper</a>]</li>
<li>Intent prediction of pedestrians via motion trajectories using stacked recurrent neural networks, 2018. [<a href="http://ieeexplore.ieee.org/document/8481390/">paper</a>]</li>
<li>Transferable pedestrian motion prediction models at intersections, 2018. [<a href="https://arxiv.org/abs/1804.00495">paper</a>]</li>
<li>Probabilistic map-based pedestrian motion prediction taking traffic participants into consideration, 2018. [<a href="https://ieeexplore.ieee.org/document/8500562">paper</a>]</li>
<li>A Computationally Efficient Model for Pedestrian Motion Prediction, ECC 2018. [<a href="https://arxiv.org/abs/1803.04702">paper</a>]</li>
<li>Context-aware trajectory prediction, ICPR 2018. [<a href="https://arxiv.org/abs/1705.02503">paper</a>]</li>
<li>Set-based prediction of pedestrians in urban environments considering formalized traffic rules, ITSC 2018. [<a href="https://ieeexplore.ieee.org/document/8569434">paper</a>]</li>
<li>Building prior knowledge: A markov based pedestrian prediction model using urban environmental data, ICARCV 2018. [<a href="https://arxiv.org/abs/1809.06045">paper</a>]</li>
<li>Depth Information Guided Crowd Counting for Complex Crowd Scenes, 2018. [<a href="https://arxiv.org/abs/1803.02256">paper</a>]</li>
<li>Tracking by Prediction: A Deep Generative Model for Mutli-Person Localisation and Tracking, WACV 2018. [<a href="https://arxiv.org/abs/1803.03347">paper</a>]</li>
<li>“Seeing is Believing”: Pedestrian Trajectory Forecasting Using Visual Frustum of Attention, WACV 2018. [<a href="https://ieeexplore.ieee.org/document/8354238">paper</a>]</li>
<li>Long-Term On-Board Prediction of People in Traffic Scenes under Uncertainty, CVPR 2018. [<a href="http://openaccess.thecvf.com/content_cvpr_2018/papers/Bhattacharyya_Long-Term_On-Board_Prediction_CVPR_2018_paper.pdf">paper</a>], [<a href="https://github.com/apratimbhattacharyya18/onboard_long_term_prediction">code+data</a>]</li>
<li>Encoding Crowd Interaction with Deep Neural Network for Pedestrian Trajectory Prediction, CVPR 2018. [<a href="http://openaccess.thecvf.com/content_cvpr_2018/papers/Xu_Encoding_Crowd_Interaction_CVPR_2018_paper.pdf">paper</a>], [<a href="https://github.com/ShanghaiTechCVDL/CIDNN">code</a>]</li>
<li>Multipolicy decision-making for autonomous driving via changepoint-based behavior prediction, 2017. [<a href="https://link.springer.com/article/10.1007/s10514-017-9619-z">paper</a>]</li>
<li>Probabilistic long-term prediction for autonomous vehicles, IV 2017. [<a href="https://ieeexplore.ieee.org/abstract/document/7995726">paper</a>]</li>
<li>Probabilistic vehicle trajectory prediction over occupancy grid map via recurrent neural network, ITSC 2017. [<a href="https://ieeexplore.ieee.org/document/6632960">paper</a>]</li>
<li>Desire: Distant future prediction in dynamic scenes with interacting agents, CVPR 2017. [<a href="https://arxiv.org/abs/1704.04394">paper</a>][<a href="https://github.com/yadrimz/DESIRE">code</a>]</li>
<li>Imitating driver behavior with generative adversarial networks, 2017. [<a href="https://arxiv.org/abs/1701.06699">paper</a>][<a href="https://github.com/sisl/gail-driver">code</a>]</li>
<li>Infogail: Interpretable imitation learning from visual demonstrations, 2017. [<a href="https://arxiv.org/abs/1703.08840">paper</a>][<a href="https://github.com/YunzhuLi/InfoGAIL">code</a>]</li>
<li>Long-term planning by short-term prediction, 2017. [<a href="https://arxiv.org/abs/1602.01580">paper</a>]</li>
<li>Long-term path prediction in urban scenarios using circular distributions, 2017. [<a href="https://www.sciencedirect.com/science/article/pii/S0262885617301853">paper</a>]</li>
<li>Deep learning driven visual path prediction from a single image, 2016. [<a href="https://arxiv.org/abs/1601.07265">paper</a>]</li>
<li>Walking Ahead: The Headed Social Force Model, 2017. [<a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0169734">paper</a>]</li>
<li>Real-time certified probabilistic pedestrian forecasting, 2017. [<a href="https://ieeexplore.ieee.org/document/7959047">paper</a>]</li>
<li>A multiple-predictor approach to human motion prediction, ICRA 2017. [<a href="https://ieeexplore.ieee.org/document/7989265">paper</a>]</li>
<li>Forecasting interactive dynamics of pedestrians with fictitious play, CVPR 2017. [<a href="https://arxiv.org/abs/1604.01431">paper</a>]</li>
<li>Forecast the plausible paths in crowd scenes, IJCAI 2017. [<a href="https://www.ijcai.org/proceedings/2017/386">paper</a>]</li>
<li>Bi-prediction: pedestrian trajectory prediction based on bidirectional lstm classification, DICTA 2017. [<a href="https://ieeexplore.ieee.org/document/8227412/">paper</a>]</li>
<li>Aggressive, Tense or Shy? Identifying Personality Traits from Crowd Videos, IJCAI 2017. [<a href="https://www.ijcai.org/proceedings/2017/17">paper</a>]</li>
<li>Natural vision based method for predicting pedestrian behaviour in urban environments, ITSC 2017. [<a href="http://ieeexplore.ieee.org/document/8317848/">paper</a>]</li>
<li>Human Trajectory Prediction using Spatially aware Deep Attention Models, 2017. [<a href="https://arxiv.org/pdf/1705.09436.pdf">paper</a>]</li>
<li>Soft + Hardwired Attention: An LSTM Framework for Human Trajectory Prediction and Abnormal Event Detection, 2017. [<a href="https://arxiv.org/pdf/1702.05552.pdf">paper</a>]</li>
<li>Forecasting Interactive Dynamics of Pedestrians with Fictitious Play, CVPR 2017. [<a href="http://openaccess.thecvf.com/content_cvpr_2017/papers/Ma_Forecasting_Interactive_Dynamics_CVPR_2017_paper.pdf">paper</a>]</li>
<li>Social LSTM: Human trajectory prediction in crowded spaces, CVPR 2016. [<a href="http://openaccess.thecvf.com/content_cvpr_2016/html/Alahi_Social_LSTM_Human_CVPR_2016_paper.html">paper</a>][<a href="https://github.com/vita-epfl/trajnetplusplusbaselines">code</a>]</li>
<li>Comparison and evaluation of pedestrian motion models for vehicle safety systems, ITSC 2016. [<a href="https://ieeexplore.ieee.org/document/7795912">paper</a>]</li>
<li>Age and Group-driven Pedestrian Behaviour: from Observations to Simulations, 2016. [<a href="https://collective-dynamics.eu/index.php/cod/article/view/A3">paper</a>]</li>
<li>Structural-RNN: Deep learning on spatio-temporal graphs, CVPR 2016. [<a href="https://arxiv.org/abs/1511.05298">paper</a>][<a href="https://github.com/asheshjain399/RNNexp">code</a>]</li>
<li>Intent-aware long-term prediction of pedestrian motion, ICRA 2016. [<a href="https://ieeexplore.ieee.org/document/7487409">paper</a>]</li>
<li>Context-based detection of pedestrian crossing intention for autonomous driving in urban environments, IROS 2016. [<a href="https://ieeexplore.ieee.org/abstract/document/7759351/">paper</a>]</li>
<li>Novel planning-based algorithms for human motion prediction, ICRA 2016. [<a href="https://ieeexplore.ieee.org/document/7487505">paper</a>]</li>
<li>Learning social etiquette: Human trajectory understanding in crowded scenes, ECCV 2016. [<a href="https://link.springer.com/chapter/10.1007/978-3-319-46484-8_33">paper</a>][<a href="https://github.com/SajjadMzf/Pedestrian_Datasets_VIS">code</a>]</li>
<li>GLMP-realtime pedestrian path prediction using global and local movement patterns, ICRA 2016. [<a href="http://ieeexplore.ieee.org/document/7487768/">paper</a>]</li>
<li>Knowledge transfer for scene-specific motion prediction, ECCV 2016. [<a href="https://arxiv.org/abs/1603.06987">paper</a>]</li>
<li>STF-RNN: Space Time Features-based Recurrent Neural Network for predicting People Next Location, SSCI 2016. [<a href="https://github.com/mhjabreel/STF-RNN">code</a>]</li>
<li>Goal-directed pedestrian prediction, ICCV 2015. [<a href="https://ieeexplore.ieee.org/document/7406377">paper</a>]</li>
<li>Trajectory analysis and prediction for improved pedestrian safety: Integrated framework and evaluations, 2015. [<a href="https://ieeexplore.ieee.org/document/7225707">paper</a>]</li>
<li>Predicting and recognizing human interactions in public spaces, 2015. [<a href="https://link.springer.com/article/10.1007/s11554-014-0428-8">paper</a>]</li>
<li>Learning collective crowd behaviors with dynamic pedestrian-agents, 2015. [<a href="https://link.springer.com/article/10.1007/s11263-014-0735-3">paper</a>]</li>
<li>Modeling spatial-temporal dynamics of human movements for predicting future trajectories, AAAI 2015. [<a href="https://aaai.org/ocs/index.php/WS/AAAIW15/paper/view/10126">paper</a>]</li>
<li>Unsupervised robot learning to predict person motion, ICRA 2015. [<a href="https://ieeexplore.ieee.org/document/7139254">paper</a>]</li>
<li>A controlled interactive multiple model filter for combined pedestrian intention recognition and path prediction, ITSC 2015. [<a href="http://ieeexplore.ieee.org/abstract/document/7313129/">paper</a>]</li>
<li>Real-Time Predictive Modeling and Robust Avoidance of Pedestrians with Uncertain, Changing Intentions, 2014. [<a href="https://arxiv.org/abs/1405.5581">paper</a>]</li>
<li>Behavior estimation for a complete framework for human motion prediction in crowded environments, ICRA 2014. [<a href="https://ieeexplore.ieee.org/document/6907734">paper</a>]</li>
<li>Pedestrian’s trajectory forecast in public traffic with artificial neural network, ICPR 2014. [<a href="https://ieeexplore.ieee.org/document/6977417">paper</a>]</li>
<li>Will the pedestrian cross? A study on pedestrian path prediction, 2014. [<a href="https://ieeexplore.ieee.org/document/6632960">paper</a>]</li>
<li>BRVO: Predicting pedestrian trajectories using velocity-space reasoning, 2014. [<a href="https://journals.sagepub.com/doi/abs/10.1177/0278364914555543">paper</a>]</li>
<li>Context-based pedestrian path prediction, ECCV 2014. [<a href="https://link.springer.com/chapter/10.1007/978-3-319-10599-4_40">paper</a>]</li>
<li>Pedestrian path prediction using body language traits, 2014. [<a href="https://ieeexplore.ieee.org/document/6856498/">paper</a>]</li>
<li>Online maneuver recognition and multimodal trajectory prediction for intersection assistance using non-parametric regression, 2014. [<a href="https://ieeexplore.ieee.org/document/6856480">paper</a>]</li>
<li>Learning intentions for improved human motion prediction, 2013. [<a href="https://ieeexplore.ieee.org/document/6766565">paper</a>]</li>
<li>Understanding interactions between traffic participants based on learned behaviors, 2016. [<a href="https://ieeexplore.ieee.org/document/7535554">paper</a>]</li>
<li>Visual path prediction in complex scenes with crowded moving objects, CVPR 2016. [<a href="https://ieeexplore.ieee.org/abstract/document/7780661/">paper</a>]</li>
<li>A game-theoretic approach to replanning-aware interactive scene prediction and planning, 2016. [<a href="https://ieeexplore.ieee.org/document/7353203">paper</a>]</li>
<li>Intention-aware online pomdp planning for autonomous driving in a crowd, ICRA 2015. [<a href="https://ieeexplore.ieee.org/document/7139219">paper</a>]</li>
<li>Online maneuver recognition and multimodal trajectory prediction for intersection assistance using non-parametric regression, 2014. [<a href="https://ieeexplore.ieee.org/document/6856480">paper</a>]</li>
<li>Patch to the future: Unsupervised visual prediction, CVPR 2014. [<a href="http://ieeexplore.ieee.org/abstract/document/6909818/">paper</a>]</li>
<li>Mobile agent trajectory prediction using bayesian nonparametric reachability trees, 2011. [<a href="https://dspace.mit.edu/handle/1721.1/114899">paper</a>]</li>
</ul>
<h3>Mobile Robots</h3>
<ul>
<li>Anticipatory Navigation in Crowds by Probabilistic Prediction of Pedestrian Future Movements, ICRA 2021. [<a href="https://arxiv.org/abs/2011.06235">paper</a>]</li>
<li>Social NCE: Contrastive Learning of Socially-aware Motion Representations. [<a href="https://arxiv.org/abs/2012.11717">paper</a>], [<a href="https://github.com/vita-epfl/social-nce">code</a>]</li>
<li>Multimodal probabilistic model-based planning for human-robot interaction, ICRA 2018. [<a href="https://arxiv.org/abs/1710.09483">paper</a>][<a href="https://github.com/StanfordASL/TrafficWeavingCVAE">code</a>]</li>
<li>Decentralized Non-communicating Multiagent Collision Avoidance with Deep Reinforcement Learning, ICRA 2017. [<a href="https://arxiv.org/abs/1609.07845">paper</a>]</li>
<li>Augmented dictionary learning for motion prediction, ICRA 2016. [<a href="https://ieeexplore.ieee.org/document/7487407">paper</a>]</li>
<li>Predicting future agent motions for dynamic environments, ICMLA 2016. [<a href="https://www.semanticscholar.org/paper/Predicting-Future-Agent-Motions-for-Dynamic-Previtali-Bordallo/2df8179ac7b819bad556b6d185fc2030c40f98fa">paper</a>]</li>
<li>Bayesian intention inference for trajectory prediction with an unknown goal destination, IROS 2015. [<a href="http://ieeexplore.ieee.org/abstract/document/7354203/">paper</a>]</li>
<li>Learning to predict trajectories of cooperatively navigating agents, ICRA 2014. [<a href="https://ieeexplore.ieee.org/document/6907442">paper</a>]</li>
</ul>
<h3>Sport Players</h3>
<ul>
<li>EvolveGraph: Multi-Agent Trajectory Prediction with Dynamic Relational Reasoning, NeurIPS 2020. [<a href="https://arxiv.org/abs/2003.13924">paper</a>]</li>
<li>Imitative Non-Autoregressive Modeling for Trajectory Forecasting and Imputation, CVPR 2020. [<a href="https://openaccess.thecvf.com/content_CVPR_2020/html/Qi_Imitative_Non-Autoregressive_Modeling_for_Trajectory_Forecasting_and_Imputation_CVPR_2020_paper.html">paper</a>]</li>
<li>DAG-Net: Double Attentive Graph Neural Network for Trajectory Forecasting, ICPR 2020. [<a href="https://arxiv.org/abs/2005.12661">paper</a>] [<a href="https://github.com/alexmonti19/dagnet">code</a>]</li>
<li>Diverse Generation for Multi-Agent Sports Games, CVPR 2019. [<a href="http://openaccess.thecvf.com/content_CVPR_2019/html/Yeh_Diverse_Generation_for_Multi-Agent_Sports_Games_CVPR_2019_paper.html">paper</a>]</li>
<li>Stochastic Prediction of Multi-Agent Interactions from Partial Observations, ICLR 2019. [<a href="http://arxiv.org/abs/1902.09641v1">paper</a>]</li>
<li>Generating Multi-Agent Trajectories using Programmatic Weak Supervision, ICLR 2019. [<a href="http://arxiv.org/abs/1803.07612v6">paper</a>]</li>
<li>Generative Multi-Agent Behavioral Cloning, ICML 2018. [<a href="http://www.stephanzheng.com/pdf/Zhan_Zheng_Lucey_Yue_Generative_Multi_Agent_Behavioral_Cloning.pdf">paper</a>]</li>
<li>Where Will They Go? Predicting Fine-Grained Adversarial Multi-Agent Motion using Conditional Variational Autoencoders, ECCV 2018. [<a href="http://openaccess.thecvf.com/content_ECCV_2018/papers/Panna_Felsen_Where_Will_They_ECCV_2018_paper.pdf">paper</a>]</li>
<li>Coordinated Multi-Agent Imitation Learning, ICML 2017. [<a href="http://arxiv.org/abs/1703.03121v2">paper</a>]</li>
<li>Generating long-term trajectories using deep hierarchical networks, 2017. [<a href="https://arxiv.org/abs/1706.07138">paper</a>]</li>
<li>Learning Fine-Grained Spatial Models for Dynamic Sports Play Prediction, ICDM 2014. [<a href="http://www.yisongyue.com/publications/icdm2014_bball_predict.pdf">paper</a>]</li>
<li>Generative Modeling of Multimodal Multi-Human Behavior, 2018. [<a href="https://arxiv.org/pdf/1803.02015.pdf">paper</a>]</li>
<li>What will Happen Next? Forecasting Player Moves in Sports Videos, ICCV 2017, [<a href="http://openaccess.thecvf.com/content_ICCV_2017/papers/Felsen_What_Will_Happen_ICCV_2017_paper.pdf">paper</a>]</li>
</ul>
<h3>Benchmark and Evaluation Metrics</h3>
<ul>
<li>Social-Implicit: Rethinking Trajectory Prediction Evaluation and The Effectiveness of Implicit Maximum Likelihood Estimation, ECCV 2022. [<a href="https://arxiv.org/abs/2203.03057">paper</a>] [<a href="https://github.com/abduallahmohamed/Social-Implicit">code</a>]</li>
<li>OpenTraj: Assessing Prediction Complexity in Human Trajectories Datasets, ACCV 2020. [<a href="https://arxiv.org/abs/2010.00890">paper</a>] [<a href="https://github.com/crowdbotp/OpenTraj">code</a>]</li>
<li>Testing the Safety of Self-driving Vehicles by Simulating Perception and Prediction, ECCV 2020. [<a href="https://arxiv.org/abs/2008.06020">paper</a>]</li>
<li>PIE: A Large-Scale Dataset and Models for Pedestrian Intention Estimation and Trajectory Prediction, ICCV 2019. [<a href="http://openaccess.thecvf.com/content_ICCV_2019/papers/Rasouli_PIE_A_Large-Scale_Dataset_and_Models_for_Pedestrian_Intention_Estimation_ICCV_2019_paper.pdf">paper</a>]</li>
<li>Towards a fatality-aware benchmark of probabilistic reaction prediction in highly interactive driving scenarios, ITSC 2018. [<a href="https://arxiv.org/abs/1809.03478">paper</a>]</li>
<li>How good is my prediction? Finding a similarity measure for trajectory prediction evaluation, ITSC 2017. [<a href="http://ieeexplore.ieee.org/document/8317825/">paper</a>]</li>
<li>Trajnet: Towards a benchmark for human trajectory prediction. [<a href="http://trajnet.epfl.ch/">website</a>]</li>
</ul>
<h3>Others</h3>
<ul>
<li>Pose Based Start Intention Detection of Cyclists, ITSC 2019. [<a href="https://ieeexplore.ieee.org/abstract/document/8917215">paper</a>]</li>
<li>Cyclist trajectory prediction using bidirectional recurrent neural networks, AI 2018. [<a href="https://link.springer.com/chapter/10.1007/978-3-030-03991-2_28">paper</a>]</li>
<li>Road infrastructure indicators for trajectory prediction, 2018. [<a href="https://ieeexplore.ieee.org/document/8500678">paper</a>]</li>
<li>Using road topology to improve cyclist path prediction, 2017. [<a href="https://ieeexplore.ieee.org/document/7995734/">paper</a>]</li>
<li>Trajectory prediction of cyclists using a physical model and an artificial neural network, 2016. [<a href="https://ieeexplore.ieee.org/document/7535484/">paper</a>]</li>
</ul>
+
+
\ No newline at end of file
diff --git a/texinfo/daily/index.xml b/texinfo/daily/index.xml
index ef7febe85f9..f3e9cff5346 100644
--- a/texinfo/daily/index.xml
+++ b/texinfo/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Texinfo Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:34Z
+ 2023-12-24T01:43:27Z
Daily Trending of Texinfo in GitHub
\ No newline at end of file
diff --git a/texinfo/weekly/index.xml b/texinfo/weekly/index.xml
new file mode 100644
index 00000000000..fd8983ffbe8
--- /dev/null
+++ b/texinfo/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Texinfo Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:52Z
+ Weekly Trending of Texinfo in GitHub
+
+
\ No newline at end of file
diff --git a/text/daily/index.xml b/text/daily/index.xml
index 84f76e778cd..787fda726f3 100644
--- a/text/daily/index.xml
+++ b/text/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Text Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:33Z
+ 2023-12-24T01:43:28Z
Daily Trending of Text in GitHub
\ No newline at end of file
diff --git a/text/weekly/index.xml b/text/weekly/index.xml
new file mode 100644
index 00000000000..b98c469abc8
--- /dev/null
+++ b/text/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Text Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:54Z
+ Weekly Trending of Text in GitHub
+
+
\ No newline at end of file
diff --git a/textile/daily/index.xml b/textile/daily/index.xml
index 134fe45ccf1..4e08b8e1caa 100644
--- a/textile/daily/index.xml
+++ b/textile/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Textile Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:35Z
+ 2023-12-24T01:43:28Z
Daily Trending of Textile in GitHub
\ No newline at end of file
diff --git a/textile/weekly/index.xml b/textile/weekly/index.xml
new file mode 100644
index 00000000000..57f5b4393b9
--- /dev/null
+++ b/textile/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Textile Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:53Z
+ Weekly Trending of Textile in GitHub
+
+
\ No newline at end of file
diff --git a/textmate-properties/daily/index.xml b/textmate-properties/daily/index.xml
index 1ab43164426..5eaddd032d8 100644
--- a/textmate-properties/daily/index.xml
+++ b/textmate-properties/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TextMate Properties Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:35Z
+ 2023-12-24T01:43:29Z
Daily Trending of TextMate Properties in GitHub
\ No newline at end of file
diff --git a/textmate-properties/weekly/index.xml b/textmate-properties/weekly/index.xml
new file mode 100644
index 00000000000..20475867fcb
--- /dev/null
+++ b/textmate-properties/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TextMate Properties Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:55Z
+ Weekly Trending of TextMate Properties in GitHub
+
+
\ No newline at end of file
diff --git a/thrift/daily/index.xml b/thrift/daily/index.xml
index 0277e230bb5..fbe1a9e4c6a 100644
--- a/thrift/daily/index.xml
+++ b/thrift/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Thrift Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:38Z
+ 2023-12-24T01:43:32Z
Daily Trending of Thrift in GitHub
\ No newline at end of file
diff --git a/thrift/weekly/index.xml b/thrift/weekly/index.xml
new file mode 100644
index 00000000000..6b9b55010e6
--- /dev/null
+++ b/thrift/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Thrift Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:56Z
+ Weekly Trending of Thrift in GitHub
+
+
\ No newline at end of file
diff --git a/ti-program/daily/index.xml b/ti-program/daily/index.xml
index 72238709cbe..57cde0928fd 100644
--- a/ti-program/daily/index.xml
+++ b/ti-program/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TI Program Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:37Z
+ 2023-12-24T01:43:32Z
Daily Trending of TI Program in GitHub
\ No newline at end of file
diff --git a/ti-program/weekly/index.xml b/ti-program/weekly/index.xml
new file mode 100644
index 00000000000..5eee14d4d4e
--- /dev/null
+++ b/ti-program/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TI Program Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:57Z
+ Weekly Trending of TI Program in GitHub
+
+
\ No newline at end of file
diff --git a/tla/daily/index.xml b/tla/daily/index.xml
index 4d201628a21..0b04c32df14 100644
--- a/tla/daily/index.xml
+++ b/tla/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TLA Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:36Z
+ 2023-12-24T01:43:30Z
Daily Trending of TLA in GitHub
\ No newline at end of file
diff --git a/tla/weekly/index.xml b/tla/weekly/index.xml
new file mode 100644
index 00000000000..180828d3caf
--- /dev/null
+++ b/tla/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TLA Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:56Z
+ Weekly Trending of TLA in GitHub
+
+
\ No newline at end of file
diff --git a/toml/daily/index.xml b/toml/daily/index.xml
index 6fc9c13cc51..f8014d7f79a 100644
--- a/toml/daily/index.xml
+++ b/toml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TOML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:42Z
+ 2023-12-24T01:43:34Z
Daily Trending of TOML in GitHub
\ No newline at end of file
diff --git a/toml/weekly/index.xml b/toml/weekly/index.xml
new file mode 100644
index 00000000000..62e257ffff9
--- /dev/null
+++ b/toml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TOML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:00Z
+ Weekly Trending of TOML in GitHub
+
+
\ No newline at end of file
diff --git a/tsql/daily/index.xml b/tsql/daily/index.xml
index 18c2b98111c..9b79616c7ca 100644
--- a/tsql/daily/index.xml
+++ b/tsql/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TSQL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:43Z
+ 2023-12-24T01:43:36Z
Daily Trending of TSQL in GitHub
\ No newline at end of file
diff --git a/tsql/weekly/index.xml b/tsql/weekly/index.xml
new file mode 100644
index 00000000000..48ca48a35f5
--- /dev/null
+++ b/tsql/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TSQL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:01Z
+ Weekly Trending of TSQL in GitHub
+
+
\ No newline at end of file
diff --git a/tsv/daily/index.xml b/tsv/daily/index.xml
index 1190b8f9fd6..b7022069ea1 100644
--- a/tsv/daily/index.xml
+++ b/tsv/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TSV Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:40Z
+ 2023-12-24T01:43:35Z
Daily Trending of TSV in GitHub
\ No newline at end of file
diff --git a/tsv/weekly/index.xml b/tsv/weekly/index.xml
new file mode 100644
index 00000000000..4e1aa7533fe
--- /dev/null
+++ b/tsv/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TSV Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:00:59Z
+ Weekly Trending of TSV in GitHub
+
+
\ No newline at end of file
diff --git a/tsx/daily/index.xml b/tsx/daily/index.xml
index 5d458cdffbb..fc09c2b7af7 100644
--- a/tsx/daily/index.xml
+++ b/tsx/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TSX Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:45Z
+ 2023-12-24T01:43:39Z
Daily Trending of TSX in GitHub
\ No newline at end of file
diff --git a/tsx/weekly/index.xml b/tsx/weekly/index.xml
new file mode 100644
index 00000000000..e2472159fb5
--- /dev/null
+++ b/tsx/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TSX Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:03Z
+ Weekly Trending of TSX in GitHub
+
+
\ No newline at end of file
diff --git a/turing/daily/index.xml b/turing/daily/index.xml
index 494200ac68b..f2f1a971278 100644
--- a/turing/daily/index.xml
+++ b/turing/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Turing Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:47Z
+ 2023-12-24T01:43:37Z
Daily Trending of Turing in GitHub
\ No newline at end of file
diff --git a/turing/weekly/index.xml b/turing/weekly/index.xml
new file mode 100644
index 00000000000..49e1e203622
--- /dev/null
+++ b/turing/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Turing Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:05Z
+ Weekly Trending of Turing in GitHub
+
+
\ No newline at end of file
diff --git a/turtle/daily/index.xml b/turtle/daily/index.xml
index a65f46ec84a..aee7434c516 100644
--- a/turtle/daily/index.xml
+++ b/turtle/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Turtle Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:44Z
+ 2023-12-24T01:43:38Z
Daily Trending of Turtle in GitHub
\ No newline at end of file
diff --git a/turtle/weekly/index.xml b/turtle/weekly/index.xml
new file mode 100644
index 00000000000..5944e9237cc
--- /dev/null
+++ b/turtle/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Turtle Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:04Z
+ Weekly Trending of Turtle in GitHub
+
+
\ No newline at end of file
diff --git a/twig/daily/index.xml b/twig/daily/index.xml
index 29b6139b74d..ba74ff826f1 100644
--- a/twig/daily/index.xml
+++ b/twig/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Twig Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:46Z
+ 2023-12-24T01:43:38Z
Daily Trending of Twig in GitHub
-
- crowdsecurity/cs-whm-plugin
- 2023-12-23T01:40:46Z
- tag:github.com,2023-12-23:/crowdsecurity/cs-whm-plugin
-
- <p>WHM plugin to better control the Security Engine</p><hr>
-
\ No newline at end of file
diff --git a/twig/weekly/index.xml b/twig/weekly/index.xml
new file mode 100644
index 00000000000..f3557c7ca0a
--- /dev/null
+++ b/twig/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Twig Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:03Z
+ Weekly Trending of Twig in GitHub
+
+
+ crowdsecurity/cs-whm-plugin
+ 2023-12-24T02:01:03Z
+ tag:github.com,2023-12-24:/crowdsecurity/cs-whm-plugin
+
+ <p>WHM plugin to better control the Security Engine</p><hr>
+
+
\ No newline at end of file
diff --git a/txl/daily/index.xml b/txl/daily/index.xml
index 34d68bff574..fa0ffeb342d 100644
--- a/txl/daily/index.xml
+++ b/txl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub TXL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:48Z
+ 2023-12-24T01:43:40Z
Daily Trending of TXL in GitHub
\ No newline at end of file
diff --git a/txl/weekly/index.xml b/txl/weekly/index.xml
new file mode 100644
index 00000000000..e29d75d2114
--- /dev/null
+++ b/txl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub TXL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:06Z
+ Weekly Trending of TXL in GitHub
+
+
\ No newline at end of file
diff --git a/type-language/daily/index.xml b/type-language/daily/index.xml
index 4b8cf8b4ac1..dbadc13583b 100644
--- a/type-language/daily/index.xml
+++ b/type-language/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Type Language Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:49Z
+ 2023-12-24T01:43:41Z
Daily Trending of Type Language in GitHub
\ No newline at end of file
diff --git a/type-language/weekly/index.xml b/type-language/weekly/index.xml
new file mode 100644
index 00000000000..48b6e066f99
--- /dev/null
+++ b/type-language/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Type Language Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:07Z
+ Weekly Trending of Type Language in GitHub
+
+
\ No newline at end of file
diff --git a/typescript/daily/index.xml b/typescript/daily/index.xml
index b41cdc44540..0985c8d131f 100644
--- a/typescript/daily/index.xml
+++ b/typescript/daily/index.xml
@@ -1,28 +1,14 @@
GitHub TypeScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:53Z
+ 2023-12-24T01:43:44Z
Daily Trending of TypeScript in GitHub
- InjectiveLabs/injective-ts
- 2023-12-23T01:40:53Z
- tag:github.com,2023-12-23:/InjectiveLabs/injective-ts
-
- <p>Collection of TypeScript packages that consume and interact with the Injective Chain</p><hr><h1>🌟 Injective's TypeScript Monorepo</h1>
<p><a href="https://docs.ts.injective.network/"><img src="https://img.shields.io/static/v1?label=Documentation&message=Documentation&color=blue" alt="Documentation"></a></p>
<p><em>Access Limitless DeFi Markets with Zero Barriers.</em></p>
<p><code>injective-ts</code> is a TypeScript monorepo that contains packages which can be used to interact with Injective from a Node.js or browser environments and which provide simple abstractions over core data structures, serialization, key management, and API request generation, etc. The packages can be found in the <code>packages</code> folder and each package is a <code>npm</code> module that is published on the <code>npm</code> registry.</p>
<p>Learn more on our <a href="https://docs.ts.injective.network/">Docs</a></p>
<hr>
<h2>📜 Contribution</h2>
<p>General contribution guidelines can be found on the <a href="https://raw.githubusercontent.com/InjectiveLabs/injective-ts/dev/CONTRIBUTING.md">Contributing</a> page. There can be a package-specific contribution guides, please make sure you read them before you open a PR.</p>
<hr>
<h2>⛑ Support</h2>
<p>Reach out to us at one of the following places!</p>
<ul>
<li>Website at <a href="https://injective.com" target="_blank"><code>injective.com</code></a></li>
<li>Twitter at <a href="https://twitter.com/Injective_" target="_blank"><code>@Injective</code></a></li>
<li>Discord at <a href="https://discord.com/invite/NK4qdbv" target="_blank"><code>Discord</code></a></li>
<li>Telegram at <a href="https://t.me/joininjective" target="_blank"><code>Telegram</code></a></li>
</ul>
<hr>
<h2>🔓 License</h2>
<p>Copyright © 2021 - 2022 Injective Labs Inc. (<a href="https://injectivelabs.org/">https://injectivelabs.org/</a>)</p>
<p><a href="https://iili.io/mNneZN.md.png"><img src="https://iili.io/mNneZN.md.png" style="width: 300px; max-width: 100%; height: auto"></a></p>
<a href="https://iili.io/mNneZN.md.png"> </a>
<p><a href="https://iili.io/mNneZN.md.png">Originally released by Injective Labs Inc. under: <br> Apache License <br> Version 2.0, January 2004 <br> </a><a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a></p>
<p> </p>
<div align="center">
<sub><em>Powering the future of decentralized finance.</em></sub>
</div>
-
-
- antergone/palm-proxy
- 2023-12-23T01:40:53Z
- tag:github.com,2023-12-23:/antergone/palm-proxy
-
- <p>Google PaLM API proxy on Vercel Edge</p><hr><h1>palm-proxy</h1>
<p>Google PaLM API proxy on Vercel Edge</p>
<h2>Deploy</h2>
<h3>Deploy With Vercel</h3>
<p><a href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fantergone%2Fpalm-proxy"><img src="https://vercel.com/button" alt="Deploy with Vercel"></a></p>
<h2>Discussion</h2>
<p>Please Visit Simon's Blog. <a href="https://simonmy.com/posts/%E4%BD%BF%E7%94%A8vercel%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86google-palm-api.html">https://simonmy.com/posts/使用vercel反向代理google-palm-api.html</a></p>
-
-
- radishes-music/radishes
- 2023-12-23T01:40:53Z
- tag:github.com,2023-12-23:/radishes-music/radishes
-
- <p>Cross-platform copyright-free music platform(跨平台的无版权音乐平台). 支持 windows / macos / linux / web</p><hr><h2>Radishes 2.0.0</h2>
<p><img src="https://github.com/Linkontoask/radishes/workflows/release/badge.svg?sanitize=true" alt="release"></p>
<img src="https://raw.githubusercontent.com/radishes-music/radishes/next/snapshots/home.jpg">
<p><code>Radishes</code>是这个项目的名称,它是由<code>萝卜</code>翻译而来。可以在这里试听和下载“灰色”歌曲哟</p>
<p>界面表现和功能参考 windows 网易云音乐界面和 ios 的网易云音乐,会对一些功能进行移动端支持。希望能找到合适的基于 vue3 的移动端打包工具(非套壳)。</p>
<h3>项目运行</h3>
<ul>
<li>克隆项目</li>
</ul>
<p><code>git clone https://github.com/Linkontoask/radishes.git</code></p>
<ul>
<li>安装依赖</li>
</ul>
<pre><code class="language-shell">cd radishes/
yarn bootstrap
</code></pre>
<ul>
<li> <p>运行项目<br> web: <code>yarn dev</code><br> electron: <code>yarn dev:electron</code></p> </li>
<li> <p>构建项目<br> web: <code>yarn build</code><br> electron:win: <code>yarn build:electron</code><br> electron:linux: <code>yarn build<img alt="electron" src="https://github.githubassets.com/images/icons/emoji/electron.png?v8">)linux</code><br> electron:macos: <code>yarn build<img alt="electron" src="https://github.githubassets.com/images/icons/emoji/electron.png?v8">)macos</code></p> </li>
</ul>
<h3>支持的功能</h3>
<p><code>browser</code>: 浏览器支持<br> <code>electron</code>: 桌面级支持<br> <code>mobile</code>: 移动端支持(在线链接: <del><a href="http://112.74.169.178/mobile/music/">http://112.74.169.178/mobile/music/</a></del>,分支:<code>next-mobile</code>)<br> <code>√</code>: 已经支持<br> <code>×</code>: 不打算支持</p>
<table>
<thead>
<tr>
<th align="left">功能</th>
<th align="center">browser</th>
<th align="center">electron</th>
<th align="center">mobile</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">登录和注册(邮箱暂不支持注册)</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center"></td>
</tr>
<tr>
<td align="left">每日推荐歌单和歌曲</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">每日轮播图以及新歌播放、查看歌单详情</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">歌单搜索、查看、收藏、下载</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">歌曲排行榜以及排行榜的分类支持</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">支持查看歌手专辑、详情、相似歌手以及歌手按地区等方式过滤</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">歌曲播放、暂停、歌词(横向、纵向)、音量 MediaSession(Chrome)</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">浮动歌词支持(在 PC 上为一个子窗口),歌词进度显示</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">×</td>
</tr>
<tr>
<td align="left">支持设置播放源(QQ、酷狗等)、下载品质和下载位置修改</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center"></td>
</tr>
<tr>
<td align="left">支持搜索歌手、专辑、歌单和单曲</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">本地音乐支持(支持拖放播放歌曲、歌曲标签 ID3v2 显示)</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">×</td>
</tr>
<tr>
<td align="left">缓存本地所有状态(比如当前播放歌曲、进度、主题颜色、大小等)</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center">√</td>
</tr>
<tr>
<td align="left">朋友动态查看、点赞等</td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
</tr>
<tr>
<td align="left">音乐云盘</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center"></td>
</tr>
<tr>
<td align="left">视频播放、收藏</td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
</tr>
<tr>
<td align="left">通知(已登录)</td>
<td align="center">×</td>
<td align="center"></td>
<td align="center">×</td>
</tr>
<tr>
<td align="left">音效(3D 环绕、淡入淡出、温柔、混合)</td>
<td align="center">√</td>
<td align="center">√</td>
<td align="center"></td>
</tr>
</tbody>
</table>
<h3>Electron</h3>
<p>目前已发布第一版,包含听歌等功能,前往 <a href="https://github.com/Linkontoask/radishes/releases/tag/2.0.0-alpha.1">https://github.com/Linkontoask/radishes/releases/tag/2.0.0-alpha.1</a> 下载 windows 版本。<br> 已发布<code>mac</code>版本。<a href="https://github.com/Linkontoask/radishes/releases/tag/v2.0.0-alpha.4">v2.0.0-alpha.4</a> 在开发的同时会快速兼容 Electron 。所谓的快速就是调用很少的 API 实现 PC 端的功能,比如放大、缩小、通知、歌词、音乐拖放上传。</p>
<p>目前<code>Electron</code>已经支持对歌曲的标签写入与读取,专辑封面还未压缩处理。所有在<code>radishes</code>平台下载的歌曲都会自动生成歌曲的歌手、专辑、标题等内容。<br> 到现在为止,<code>Electron</code>平台相对于<code>Web</code>平台已经完成了下载进度展示、本地音乐的同步和播放、浮动歌词的展示。</p>
<h3><code>vue3.x</code>已发布,音乐项目已完成基本架构</h3>
<p>目前会利用闲暇时间进行重构,如果你也想参与进来,可以发邮件或在<a href="https://github.com/Linkontoask/radishes/issues/6">这里</a>告诉我</p>
<h2>Star History</h2>
<p><a href="https://star-history.com/#radishes-music/radishes&Date"><img src="https://api.star-history.com/svg?repos=radishes-music/radishes&type=Date" alt="Star History Chart"></a></p>
<p>相关链接:</p>
<ul>
<li><a href="https://github.com/Binaryify/NeteaseCloudMusicApi">NeteaseCloudMusicApi</a></li>
<li><a href="https://github.com/nondanee/UnblockNeteaseMusic">UnblockNeteaseMusic</a></li>
<li><a href="https://v3.vuejs.org/">vuejs</a></li>
<li><a href="https://commitlint.js.org/#/">commitlint</a></li>
<li><a href="https://cli.vuejs.org/zh/">vue-cli</a></li>
<li><a href="https://prettier.io/">prettier</a></li>
<li><a href="https://github.com/neutrinojs/webpack-chain#getting-started">webpack-chain</a></li>
<li><a href="https://github.com/storybookjs/storybook/tree/next/app/vue">storybook</a></li>
<li><a href="https://github.com/storybookjs/storybook/issues/10654">storybook vue3 support</a></li>
<li><a href="https://github.com/nklayman/vue-cli-plugin-electron-builder">vue-cli-plugin-electron-builder</a></li>
<li><a href="https://github.com/vuejs/jsx-next/raw/dev/packages/babel-plugin-jsx/README-zh_CN.md">vue-cli jsx</a></li>
<li><a href="https://github.com/nativescript-vue/nativescript-vue/issues/583">nativescript vue 3 issues</a></li>
<li><a href="https://github.com/nativescript-vue/nativescript-vue">nativescript-vue</a></li>
<li><a href="https://philipwalton.com/articles/deploying-es2015-code-in-production-today/">browser module</a></li>
<li><a href="https://day.js.org/docs/zh-CN/installation/installation">dayjs</a></li>
<li><a href="https://github.com/lerna/lerna">lerna</a></li>
<li><a href="https://github.com/egoroof/browser-id3-writer">id3-writer</a></li>
</ul>
+ ton-community/tsc5
+ 2023-12-24T01:43:44Z
+ tag:github.com,2023-12-24:/ton-community/tsc5
+
+ <p></p><hr><h1>🏆 Welcome to TON Smart Challenge #5</h1>
<h3>by <a href="https://ton.org/">TON Foundation</a> & <a href="https://codeforces.com/">Codeforces</a></h3>
<h2>📝 Tasks</h2>
<ol>
<li><a href="https://raw.githubusercontent.com/ton-community/tsc5/main/descriptions/1.md">Inheritance Smart Contract</a></li>
<li><a href="https://raw.githubusercontent.com/ton-community/tsc5/main/descriptions/2.md">Splitter Smart Contract</a></li>
<li><a href="https://raw.githubusercontent.com/ton-community/tsc5/main/descriptions/3.md">Universal Versioning Template</a></li>
<li><a href="https://raw.githubusercontent.com/ton-community/tsc5/main/descriptions/4.md">Quantum Maze</a></li>
</ol>
<p>The goal of the contestants is to provide a code that matches the description.</p>
<p>Each task except Task 4 may give the contestant either 0 or 5 to 6 score points: 5 for all tests passed plus "gas-score" from 0 to 1 (0 for "infinite" gas consumption, 1 for 0 gas consumption, dependence is inverse exponent).</p>
<p>Task 4 provides two sets of tests - basic and advanced:</p>
<ul>
<li><strong>Basic tests</strong> - offer 3 points in case the solution is passing all the tests</li>
<li><strong>Advanced tests</strong> - offer 0 or 4 to 5 points (4 for all tests passed plus "gas-score" from 0 to 1)</li>
</ul>
<h2>📅 Solution submission guide and terms</h2>
<ol>
<li> <p><strong>Registration Process</strong>: Before you begin, make sure to go through the registration process via the <strong><a href="https://t.me/smartchallengebot?start=utm_github_repo">@smartchallengebot</a></strong>. Your solutions will not be accepted if you are not properly registered.</p> </li>
<li> <p><strong>Create a Private GitHub Repository</strong>: Clone this repository and set it as your own private GitHub repo. <strong>Ensuring the visibility configs are set to "private"</strong> is crucial to safeguarding your solution.</p> </li>
<li> <p><strong>Set Your Token</strong>: Utilize the <code>token</code> provided to you during registration in Telegram bot and set it as a secret variable called USER_TOKEN in your private repository. You can learn more about setting secret variables in the <a href="https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository">official GitHub documentation</a>.</p> </li>
<li> <p><strong>Submit Your Solution</strong>: When you are ready to submit your solution, simply push your code into your private repository. The code will be sent to the task review server, and GitHub actions will display the status of your submission.</p> </li>
<li> <p><strong>Solution Evaluation</strong>: If at least one of your solutions works well, your submission will be counted. Feel free to push solutions for more tasks; GitHub actions will run your code against tests and count successful submissions. To see a detailed report on your submission, proceed to GitHub Actions tab and you will see a similar report along with possible errors if present:</p> </li>
</ol>
<div align="center">
<table>
<thead>
<tr>
<th>Task ID</th>
<th align="center">Compiled</th>
<th align="center">Tests Passed</th>
<th align="center">Points</th>
<th align="center">Gas Used</th>
<th align="center">Compilation Error</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">0</td>
<td align="center">N/A</td>
<td align="center"><a href="https://raw.githubusercontent.com/ton-community/tsc5/main/#compilation-error-task-1">Error Details</a></td>
</tr>
<tr>
<td>2</td>
<td align="center">✅</td>
<td align="center">❌ 0/6</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center"></td>
</tr>
<tr>
<td>3</td>
<td align="center">✅</td>
<td align="center">✅ 10/10</td>
<td align="center">5.127</td>
<td align="center">491,235,717</td>
<td align="center"></td>
</tr>
<tr>
<td>4</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">0</td>
<td align="center">N/A</td>
<td align="center"><a href="https://raw.githubusercontent.com/ton-community/tsc5/main/#compilation-error-task-4">Error Details</a></td>
</tr>
<tr>
<td>5</td>
<td align="center">❌</td>
<td align="center">❌</td>
<td align="center">0</td>
<td align="center">N/A</td>
<td align="center"><a href="https://raw.githubusercontent.com/ton-community/tsc5/main/#compilation-error-task-5">Error Details</a></td>
</tr>
</tbody>
</table>
</div>
<ol start="6">
<li><strong>Check Your Points</strong>: To check your solution points, review the logs of the GitHub action for your latest commit. Additionally, you can find your solution points in the menu button inside of the Telegram bot.</li>
</ol>
<p><strong>Best of luck with your submissions!</strong></p>
<h2>‼️ Important rule:</h2>
<p>Please don't share your solution's code with anybody. If someone's submission will be suspected of using your code - both participants will be disqualified. Repeated case will cause lifetime ban from TON Smart Challenges.</p>
<h2>🏆 Scoring and Prizes</h2>
<p>Winners of the contest will receive prizes denominated in Toncoin, the native cryptocurrency of TON blockchain, which is also used as a resource for contract execution.</p>
<p>The pool of <strong>$20,000 in Toncoin</strong> will be split equally between the top 100 participants of the leaderboard after plagiarising participants are removed. Every participant on the leaderboard will receive a SBT (participation soulbound token).</p>
<p>Prize pool distribution:</p>
<ul>
<li>$7,000 in TON - The top 15 of participants</li>
<li>$7,000 in TON - 16-45th participant</li>
<li>$6,000 in TON - 46-100th participant</li>
</ul>
<h2>🚀 Getting Started with TON</h2>
<p>New to blockchain or TON development? Start here:</p>
<ul>
<li><a href="https://blog.ton.org/what-is-blockchain">Blockchain Basics</a></li>
<li><a href="https://docs.ton.org/learn/introduction">TON Intro</a></li>
<li><a href="https://ton.org/dev?filterBy=developSmartContract">Developer Portal</a></li>
</ul>
<h3>📘 Essential FunC Resources</h3>
<p>Master the FunC language with these must-have materials:</p>
<ul>
<li><a href="https://stepik.org/course/176754/info">TON Blockchain Course</a></li>
<li><a href="https://docs.ton.org/develop/func/overview">FunC Docs</a></li>
</ul>
<p>Find ready-to-use smart contract examples <a href="https://docs.ton.org/develop/smart-contracts/examples">here</a>.</p>
<h3>🛠️ Tools for Tact Compilation and Testing</h3>
<h4>For FunC Challenge</h4>
<p>For FunC Challenge we recommend <strong>cloning current repository</strong> and follow the submission guide described above.</p>
<h4>To quickstart your own FunC project</h4>
<p>While we recommend <a href="https://github.com/ton-org/blueprint">blueprint</a> for working with FunC contracts, <a href="https://ton.org/docs/develop/smart-contracts/testing/toncli">toncli</a> is also a viable option for compiling and local testing.</p>
<h3>FunC syntax highlight</h3>
<p>For a more streamlined coding experience, consider using <a href="https://docs.ton.org/develop/smart-contracts/environment/ide-plugins">IDE plugins</a> for syntax highlighting.</p>
<h3>🌍 TON Developers Community Chats</h3>
<p>Stay in the loop and engage with other developers:</p>
<ul>
<li><a href="https://t.me/tondev_eng">TON Dev Chat (EN)</a></li>
<li><a href="https://t.me/tondev_zh">TON Dev Chat (中文)</a></li>
<li><a href="https://t.me/tondev">TON Dev Chat (РУ)</a></li>
</ul>
\ No newline at end of file
diff --git a/typescript/weekly/index.xml b/typescript/weekly/index.xml
new file mode 100644
index 00000000000..03068dbca9a
--- /dev/null
+++ b/typescript/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub TypeScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:10Z
+ Weekly Trending of TypeScript in GitHub
+
+
+ date-fns/date-fns
+ 2023-12-24T02:01:10Z
+ tag:github.com,2023-12-24:/date-fns/date-fns
+
+ <p>⏳ Modern JavaScript date utility library ⌛️</p><hr><p>🎉️ <strong>NEW</strong>: <a href="https://blog.date-fns.org/v3-is-out/">date-fns v3 is out!</a></p>
<img alt="date-fns" title="date-fns" src="https://raw.githubusercontent.com/date-fns/date-fns/master/docs/logotype.svg?sanitize=true" width="150">
<p>date-fns provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js</p>
<p>👉 <a href="https://date-fns.org/">Documentation</a></p>
<p>👉 <a href="https://blog.date-fns.org/">Blog</a></p>
<hr>
<p>It's like <a href="https://lodash.com">Lodash</a> for dates</p>
<ul>
<li>It has <a href="https://date-fns.org/docs/Getting-Started/"><strong>200+ functions</strong> for all occasions</a>.</li>
<li><strong>Modular</strong>: Pick what you need. Works with webpack, Browserify, or Rollup and also supports tree-shaking.</li>
<li><strong>Native dates</strong>: Uses existing native type. It doesn't extend core objects for safety's sake.</li>
<li><strong>Immutable & Pure</strong>: Built using pure functions and always returns a new date instance.</li>
<li><strong>TypeScript</strong>: The library is 100% TypeScript with brand-new handcrafted types.</li>
<li><strong>I18n</strong>: Dozens of locales. Include only what you need.</li>
<li><a href="https://date-fns.org/">and many more benefits</a></li>
</ul>
<pre><code class="language-js">import { compareAsc, format } from "date-fns";
format(new Date(2014, 1, 11), "yyyy-MM-dd");
//=> '2014-02-11'
const dates = [
new Date(1995, 6, 2),
new Date(1987, 1, 11),
new Date(1989, 6, 10),
];
dates.sort(compareAsc);
//=> [
// Wed Feb 11 1987 00:00:00,
// Mon Jul 10 1989 00:00:00,
// Sun Jul 02 1995 00:00:00
// ]
</code></pre>
<p>The library is available as an <a href="https://www.npmjs.com/package/date-fns">npm package</a>. To install the package run:</p>
<pre><code class="language-bash">npm install date-fns --save
</code></pre>
<h2>Docs</h2>
<p><a href="https://date-fns.org/">See date-fns.org</a> for more details, API, and other docs.</p>
<br>
<!-- END OF README-JOB SECTION -->
<h2>License</h2>
<p><a href="https://kossnocorp.mit-license.org/">MIT © Sasha Koss</a></p>
+
+
+ lobehub/lobe-chat
+ 2023-12-24T02:01:10Z
+ tag:github.com,2023-12-24:/lobehub/lobe-chat
+
+ <p>🤖 Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.</p><hr><p><a name="readme-top"></a></p>
<div align="center">
<img height="120" src="https://registry.npmmirror.com/@lobehub/assets-logo/1.0.0/files/assets/logo-3d.webp">
<img height="120" src="https://gw.alipayobjects.com/zos/kitchen/qJ3l3EPsdW/split.svg?sanitize=true">
<img height="120" src="https://registry.npmmirror.com/@lobehub/assets-emoji-anim/1.0.0/files/assets/robot.webp">
<h1>Lobe Chat</h1>
<p>LobeChat is an open-source, high-performance chatbot framework<br>that supports speech synthesis, multimodal, and extensible (<a href="https://sspai.com/post/81986">Function Call</a>) plugin system. <br> Supports one-click free deployment of your private ChatGPT/LLM web application.</p>
<p><strong>English</strong> · <a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/README.zh-CN.md">简体中文</a> · <a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/CHANGELOG.md">Changelog</a> · <a href="https://github.com/lobehub/lobe-chat/wiki">Wiki</a> · <a href="https://github.com/lobehub/lobe-chat/issues">Report Bug</a> · <a href="https://github.com/lobehub/lobe-chat/issues">Request Feature</a></p>
<!-- SHIELD GROUP -->
<p><a href="https://github.com/lobehub/lobe-chat/releases"><img src="https://img.shields.io/github/v/release/lobehub/lobe-chat?color=369eff&labelColor=black&logo=github&style=flat-square" alt=""></a> <a href="https://hub.docker.com/r/lobehub/lobe-chat"><img src="https://img.shields.io/docker/v/lobehub/lobe-chat?color=369eff&label=docker&labelColor=black&logo=docker&logoColor=white&style=flat-square" alt=""></a> <a href="https://chat-preview.lobehub.com"><img src="https://img.shields.io/website?down_message=offline&label=vercel&labelColor=black&logo=vercel&style=flat-square&up_message=online&url=https%3A%2F%2Fchat-preview.lobehub.com" alt=""></a> <a href="https://discord.gg/AYFPHvv2jT"><img src="https://img.shields.io/discord/1127171173982154893?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square" alt=""></a><br> <a href="https://github.com/actions/workflows/lobehub/lobe-chat/test.yml"><img src="https://img.shields.io/github/actions/workflow/status/lobehub/lobe-chat/test.yml?label=test&labelColor=black&logo=githubactions&logoColor=white&style=flat-square" alt=""></a> <a href="https://github.com/actions/workflows/lobehub/lobe-chat/release.yml"><img src="https://img.shields.io/github/actions/workflow/status/lobehub/lobe-chat/release.yml?label=release&labelColor=black&logo=githubactions&logoColor=white&style=flat-square" alt=""></a> <a href="https://github.com/lobehub/lobe-chat/releases"><img src="https://img.shields.io/github/release-date/lobehub/lobe-chat?labelColor=black&style=flat-square" alt=""></a><br> <a href="https://github.com/lobehub/lobe-chat/graphs/contributors"><img src="https://img.shields.io/github/contributors/lobehub/lobe-chat?color=c4f042&labelColor=black&style=flat-square" alt=""></a> <a href="https://github.com/lobehub/lobe-chat/network/members"><img src="https://img.shields.io/github/forks/lobehub/lobe-chat?color=8ae8ff&labelColor=black&style=flat-square" alt=""></a> <a href="https://github.com/lobehub/lobe-chat/network/stargazers"><img src="https://img.shields.io/github/stars/lobehub/lobe-chat?color=ffcb47&labelColor=black&style=flat-square" alt=""></a> <a href="https://github.com/lobehub/lobe-chat/issues"><img src="https://img.shields.io/github/issues/lobehub/lobe-chat?color=ff80eb&labelColor=black&style=flat-square" alt=""></a> <a href="https://github.com/lobehub/lobe-chat/raw/main/LICENSE"><img src="https://img.shields.io/github/license/lobehub/lobe-chat?color=white&labelColor=black&style=flat-square" alt=""></a><br> <a href="https://opencollective.com/lobehub" title="Become 🩷 LobeHub Sponsor"><img src="https://img.shields.io/badge/-Sponsor%20LobeHub-f04f88?logo=opencollective&logoColor=white&style=flat-square" alt=""></a></p>
<p><strong>Share LobeChat Repository</strong></p>
<p><a href="https://x.com/intent/tweet?hashtags=chatbot%2CchatGPT%2CopenAI&text=Check%20this%20GitHub%20repository%20out%20%F0%9F%A4%AF%20LobeChat%20-%20An%20open-source%2C%20extensible%20%28Function%20Calling%29%2C%20high-performance%20chatbot%20framework.%20It%20supports%20one-click%20free%20deployment%20of%20your%20private%20ChatGPT%2FLLM%20web%20application.&url=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat"><img src="https://img.shields.io/badge/-share%20on%20x-black?labelColor=black&logo=x&logoColor=white&style=flat-square" alt=""></a> <a href="https://t.me/share/url%22?text=Check%20this%20GitHub%20repository%20out%20%F0%9F%A4%AF%20LobeChat%20-%20An%20open-source%2C%20extensible%20%28Function%20Calling%29%2C%20high-performance%20chatbot%20framework.%20It%20supports%20one-click%20free%20deployment%20of%20your%20private%20ChatGPT%2FLLM%20web%20application.%20%23chatbot%20%23chatGPT%20%23openAI&url=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat"><img src="https://img.shields.io/badge/-share%20on%20telegram-black?labelColor=black&logo=telegram&logoColor=white&style=flat-square" alt=""></a> <a href="https://api.whatsapp.com/send?text=Check%20this%20GitHub%20repository%20out%20%F0%9F%A4%AF%20LobeChat%20-%20An%20open-source%2C%20extensible%20%28Function%20Calling%29%2C%20high-performance%20chatbot%20framework.%20It%20supports%20one-click%20free%20deployment%20of%20your%20private%20ChatGPT%2FLLM%20web%20application.%20https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat%20%23chatbot%20%23chatGPT%20%23openAI"><img src="https://img.shields.io/badge/-share%20on%20whatsapp-black?labelColor=black&logo=whatsapp&logoColor=white&style=flat-square" alt=""></a> <a href="https://www.reddit.com/submit?title=Check%20this%20GitHub%20repository%20out%20%F0%9F%A4%AF%20LobeChat%20-%20An%20open-source%2C%20extensible%20%28Function%20Calling%29%2C%20high-performance%20chatbot%20framework.%20It%20supports%20one-click%20free%20deployment%20of%20your%20private%20ChatGPT%2FLLM%20web%20application.%20%23chatbot%20%23chatGPT%20%23openAI&url=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat"><img src="https://img.shields.io/badge/-share%20on%20reddit-black?labelColor=black&logo=reddit&logoColor=white&style=flat-square" alt=""></a> <a href="http://service.weibo.com/share/share.php?sharesource=weibo&title=Check%20this%20GitHub%20repository%20out%20%F0%9F%A4%AF%20LobeChat%20-%20An%20open-source%2C%20extensible%20%28Function%20Calling%29%2C%20high-performance%20chatbot%20framework.%20It%20supports%20one-click%20free%20deployment%20of%20your%20private%20ChatGPT%2FLLM%20web%20application.%20%23chatbot%20%23chatGPT%20%23openAI&url=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat"><img src="https://img.shields.io/badge/-share%20on%20weibo-black?labelColor=black&logo=sinaweibo&logoColor=white&style=flat-square" alt=""></a></p>
<p><sup>Pioneering the new age of thinking and creating. Built for you, the Super Individual.</sup></p>
<p><img src="https://gw.alipayobjects.com/zos/kitchen/RKnWrrfuMl/welcome.webp" alt=""></p>
</div>
<details>
<summary><kbd>Table of contents</kbd></summary>
<h4>TOC</h4>
<ul>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-getting-started--join-our-community">👋🏻 Getting Started & Join Our Community</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-features">✨ Features</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#%EF%B8%8F-performance">⚡️ Performance</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-self-hosting">🛳 Self Hosting</a>
<ul>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#a-deploying-with-vercel-zeabur-or-sealos"><code>A</code> Deploying with Vercel, Zeabur or Sealos</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#b-deploying-with-docker"><code>B</code> Deploying with Docker</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#environment-variable">Environment Variable</a></li>
</ul> </li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-ecosystem">📦 Ecosystem</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-plugins">🧩 Plugins</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#%EF%B8%8F-local-development">⌨️ Local Development</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-contributing">🤝 Contributing</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-sponsor">🩷 Sponsor</a></li>
<li><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-more-products">🔗 More Products</a></li>
</ul>
<h4></h4>
<br>
</details>
<h2>👋🏻 Getting Started & Join Our Community</h2>
<p>Please be aware that LobeChat is currently under active development, and feedback is welcome for any <a href="https://img.shields.io/github/issues/lobehub/lobe-chat.svg?style=flat">issues</a> encountered.</p>
<table>
<thead>
<tr>
<th align="left"><a href="https://chat-preview.lobehub.com"><img src="https://img.shields.io/website?down_message=offline&label=try%20lobechat&labelColor=black&logo=vercel&style=for-the-badge&up_message=online&url=https%3A%2F%2Fchat-preview.lobehub.com" alt=""></a></th>
<th align="left">No installation or registration necessary! Visit our website to experience it firsthand.</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><a href="https://discord.gg/AYFPHvv2jT"><img src="https://img.shields.io/discord/1127171173982154893?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge" alt=""></a></td>
<td align="left">Join our Discord community! This is where you can connect with developers and other enthusiastic users of LobeHub.</td>
</tr>
</tbody>
</table>
<blockquote>
<p>[!IMPORTANT]</p>
<p><strong>Star Us</strong>, You will receive all release notifications from GitHub without any delay ~ ⭐️</p>
</blockquote>
<p><img src="https://gw.alipayobjects.com/zos/kitchen/0hcO8QiU9c/star.webp" alt=""></p>
<details>
<summary><kbd>Star History</kbd></summary>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=lobehub%2Flobe-chat&theme=dark&type=Date">
<img width="100%" src="https://api.star-history.com/svg?repos=lobehub%2Flobe-chat&type=Date">
</picture>
</details>
<h2>✨ Features</h2>
<p><img src="https://github-production-user-asset-6210df.s3.amazonaws.com/17870709/284072129-382bdf30-e3d6-4411-b5a0-249710b8ba08.png" alt=""></p>
<h4><code>1</code> Visual Model Support</h4>
<p>LobeChat now supports OpenAI's latest <a href="https://platform.openai.com/docs/guides/vision"><code>gpt-4-vision</code></a> model with visual recognition capabilities, a multimodal intelligence that can perceive visuals. Users can easily upload or drag and drop images into the dialogue box, and the agent will be able to recognize the content of the images and engage in intelligent conversation based on this, creating smarter and more diversified chat scenarios.</p>
<p>This feature opens up new interactive methods, allowing communication to transcend text and include a wealth of visual elements. Whether it's sharing images in daily use or interpreting images within specific industries, the agent provides an outstanding conversational experience.</p>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<p><img src="https://github-production-user-asset-6210df.s3.amazonaws.com/17870709/284072124-c9853d8d-f1b5-44a8-a305-45ebc0f6d19a.png" alt=""></p>
<h4><code>2</code> TTS & STT Voice Speech</h4>
<p>LobeChat supports Text-to-Speech (TTS) and Speech-to-Text (STT) technologies, enabling our application to convert text messages into clear voice outputs, allowing users to interact with our conversational agent as if they were talking to a real person. Users can choose from a variety of voices to pair with the agent.</p>
<p>Moreover, TTS offers an excellent solution for those who prefer auditory learning or desire to receive information while busy. In LobeChat, we have meticulously selected a range of high-quality voice options (OpenAI Audio, Microsoft Edge Speech) to meet the needs of users from different regions and cultural backgrounds. Users can choose the voice that suits their personal preferences or specific scenarios, resulting in a personalized communication experience.</p>
<blockquote>
<p>[!NOTE]</p>
<p>In the process of implementing this feature, we found that there was no satisfactory TTS (Text-to-Speech) frontend library available on the market. As a result, we invested a lot of effort, including data conversion, audio progress management, and speech visualization, among other tasks.</p>
</blockquote>
<blockquote>
<p>[!IMPORTANT]</p>
<p>Therefore, we decided to refine our implementation and make it open source, hoping to assist developers who wish to implement TTS. <a href="https://github.com/lobehub/lobe-tts">@lobehub/tts</a> is a high-quality TTS toolkit developed in TypeScript, which supports usage both on the server-side and in the browser.</p>
<ul>
<li><strong>Server-side:</strong> With just 15 lines of code, you can achieve high-quality voice generation capabilities comparable to OpenAI's TTS service. It currently supports EdgeSpeechTTS, MicrosoftTTS, OpenAITTS, and OpenAISTT.</li>
<li><strong>Browser-side:</strong> It provides high-quality React Hooks and visual audio components, supporting common functions such as loading, playing, pausing, and dragging the timeline. Additionally, it offers a very rich set of capabilities for adjusting the audio track styles.</li>
</ul>
</blockquote>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<p><img src="https://github-production-user-asset-6210df.s3.amazonaws.com/17870709/268670883-33c43a5c-a512-467e-855c-fa299548cce5.png" alt=""></p>
<h4><code>3</code> Function Calling Plugin System</h4>
<p>The plugin ecosystem of LobeChat is a significant extension of its core functionalities, greatly enhancing the practicality and flexibility of ChatGPT. By leveraging plugins, ChatGPT can perform real-time information retrieval and processing, such as automatically fetching the latest news headlines to provide users with immediate and relevant information. Moreover, these plugins are not limited to news aggregation but can also extend to other practical functions, such as quick document retrieval, e-commerce platform data access, and various third-party services.</p>
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/docs/Usage/Plugins.md">Learn More →</a></p>
<p>
<video controls src="https://github.com/lobehub/lobe-chat/assets/28616219/f29475a3-f346-4196-a435-41a6373ab9e2" muted="false"></video></p>
<blockquote>
<p>[!TIP]</p>
<p>To aid developers in joining this ecosystem, we provide comprehensive development resources in the <a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#-plugins">🧩 Plugin System</a> section. This includes detailed component development documentation, a fully-featured software development kit (SDK), and template files—all designed to simplify the development process and lower the barrier to entry for developers.</p>
</blockquote>
<blockquote>
<p>[!IMPORTANT]</p>
<p>We welcome developers to use these resources to unleash their creativity and write feature-rich, user-friendly plugins. With collective efforts, we can continuously expand the boundaries of chat applications and explore a more intelligent and efficient creativity platform.</p>
</blockquote>
<!-- PLUGIN LIST -->
<table>
<thead>
<tr>
<th>Recent Submits</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://chat-preview.lobehub.com/settings/agent">weather GPT</a><br><sup>By <strong>Steven Tey</strong> on <strong>2023-12-16</strong></sup></td>
<td>Get current weather information for a specific location.<br><code>weather</code></td>
</tr>
<tr>
<td><a href="https://chat-preview.lobehub.com/settings/agent">Ask Your PDF</a><br><sup>By <strong>AskYourPDF</strong> on <strong>2023-12-16</strong></sup></td>
<td>Unlock the power of your PDFs!, dive into your documents, find answers, and bring information to your fingertips.<br><code>pdf</code> <code>document</code> <code>web</code></td>
</tr>
<tr>
<td><a href="https://chat-preview.lobehub.com/settings/agent">Clock Time</a><br><sup>By <strong>LobeHub</strong> on <strong>2023-11-01</strong></sup></td>
<td>Display a clock to show current time<br><code>clock</code> <code>time</code></td>
</tr>
<tr>
<td><a href="https://chat-preview.lobehub.com/settings/agent">Mindmap</a><br><sup>By <strong>Moonlit7</strong> on <strong>2023-12-19</strong></sup></td>
<td>A mindmap generation assistant<br><code>mindmap</code></td>
</tr>
</tbody>
</table>
<blockquote>
<p>📊 Total plugins: <a href="https://github.com/lobehub/lobe-chat-plugins"><kbd><strong>9</strong></kbd></a></p>
</blockquote>
<!-- PLUGIN LIST -->
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<p><img src="https://github-production-user-asset-6210df.s3.amazonaws.com/17870709/268670869-f1ffbf66-42b6-42cf-a937-9ce1f8328514.png" alt=""></p>
<h4><code>4</code> Agent Market</h4>
<p>In the LobeChat Agent Marketplace, creators can discover a vibrant and innovative community that brings together a multitude of well-designed agents, which not only play an important role in work scenarios but also offer great convenience in learning processes. Our marketplace is not just a showcase platform but also a collaborative space. Here, everyone can contribute their wisdom and share the agents they have developed.</p>
<blockquote>
<p>[!TIP]</p>
<p>By <a href="https://github.com/lobehub/lobe-chat-agents">🤖/🏪 Submit Agents</a>, you can easily submit your agent creations to our platform. Importantly, LobeChat has established a sophisticated automated internationalization (i18n) workflow, capable of seamlessly translating your agent into multiple language versions. This means that no matter what language your users speak, they can experience your agent without barriers.</p>
</blockquote>
<blockquote>
<p>[!IMPORTANT]</p>
<p>We welcome all users to join this growing ecosystem and participate in the iteration and optimization of agents. Together, we can create more interesting, practical, and innovative agents, further enriching the diversity and practicality of the agent offerings.</p>
</blockquote>
<!-- AGENT LIST -->
<table>
<thead>
<tr>
<th>Recent Submits</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://chat-preview.lobehub.com/market?agent=facebook-ads-expert">Facebook Ads Expert</a><br><sup>By <strong><a href="https://github.com/alissonryan">alissonryan</a></strong> on <strong>2023-12-20</strong></sup></td>
<td>Create a Facebook Ads with a expert<br><code>copywriting</code> <code>facebook-ads</code> <code>lead-generation</code></td>
</tr>
<tr>
<td><a href="https://chat-preview.lobehub.com/market?agent=dream-painter">Dream Painter</a><br><sup>By <strong><a href="https://github.com/ccdanpian">ccdanpian</a></strong> on <strong>2023-12-19</strong></sup></td>
<td>A dream artist who can bring your dreams into reality.<br><code>txt-2-img</code> <code>painter</code></td>
</tr>
<tr>
<td><a href="https://chat-preview.lobehub.com/market?agent=news-hub">News Hub</a><br><sup>By <strong><a href="https://github.com/ccdanpian">ccdanpian</a></strong> on <strong>2023-12-19</strong></sup></td>
<td>News Search Assistant, proficient in locating and presenting relevant news based on user requests. Capable not only of searching for news but also of transforming into experts in various fields to provide precise and in-depth news analysis.<br><code>news</code> <code>search</code> <code>helper</code></td>
</tr>
<tr>
<td><a href="https://chat-preview.lobehub.com/market?agent=research-assistant">Research Assistant</a><br><sup>By <strong><a href="https://github.com/ccsen">ccsen</a></strong> on <strong>2023-12-19</strong></sup></td>
<td>Capable of answering questions, conducting research, drafting content, and more, utilizing scientific research papers.<br><code>research-assistant</code> <code>literature-retrieval</code> <code>writing</code> <code>scientific-research</code> <code>citation</code></td>
</tr>
</tbody>
</table>
<blockquote>
<p>📊 Total agents: <a href="https://github.com/lobehub/lobe-chat-agents"><kbd><strong>77</strong></kbd> </a></p>
</blockquote>
<!-- AGENT LIST -->
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<p><img src="https://gw.alipayobjects.com/zos/kitchen/69x6bllkX3/pwa.webp" alt=""></p>
<h4><code>5</code> Progress Web App</h4>
<p>We deeply understand the importance of providing a seamless experience for users in today's multi-device environment. Therefore, we have adopted Progressive Web Application (<a href="https://support.google.com/chrome/answer/9658361">PWA</a>) technology, a modern web technology that elevates web applications to an experience close to that of native apps.</p>
<p>Through PWA, LobeChat can offer a highly optimized user experience on both desktop and mobile devices while maintaining its lightweight and high-performance characteristics. Visually and in terms of feel, we have also meticulously designed the interface to ensure it is indistinguishable from native apps, providing smooth animations, responsive layouts, and adapting to different device screen resolutions.</p>
<blockquote>
<p>[!NOTE]</p>
<p>If you are unfamiliar with the installation process of PWA, you can add LobeChat as your desktop application (also applicable to mobile devices) by following these steps:</p>
<ul>
<li>Launch the Chrome or Edge browser on your computer.</li>
<li>Visit the LobeChat webpage.</li>
<li>In the upper right corner of the address bar, click on the <kbd>Install</kbd> icon.</li>
<li>Follow the instructions on the screen to complete the PWA Installation.</li>
</ul>
</blockquote>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<p><img src="https://gw.alipayobjects.com/zos/kitchen/R441AuFS4W/mobile.webp" alt=""></p>
<h4><code>6</code> Mobile Device Adaptation</h4>
<p>We have carried out a series of optimization designs for mobile devices to enhance the user's mobile experience. Currently, we are iterating on the mobile user experience to achieve smoother and more intuitive interactions. If you have any suggestions or ideas, we welcome you to provide feedback through GitHub Issues or Pull Requests.</p>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<p><img src="https://gw.alipayobjects.com/zos/kitchen/pvus1lo%26Z7/darkmode.webp" alt=""></p>
<h4><code>7</code> Theme Mode Selection</h4>
<p>As a design-engineering-oriented application, LobeChat places great emphasis on users' personalized experiences, hence introducing flexible and diverse theme modes, including a light mode for daytime and a dark mode for nighttime. Beyond switching theme modes, a range of color customization options allow users to adjust the application's theme colors according to their preferences. Whether it's a desire for a sober dark blue, a lively peach pink, or a professional gray-white, users can find their style of color choices in LobeChat.</p>
<blockquote>
<p>[!TIP]</p>
<p>The default configuration can intelligently recognize the user's system color mode and automatically switch themes to ensure a consistent visual experience with the operating system. For users who like to manually control details, LobeChat also offers intuitive setting options and a choice between chat bubble mode and document mode for conversation scenarios.</p>
</blockquote>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h4>What's more</h4>
<p>Beside these features, LobeChat also have much better basic technique underground:</p>
<ul>
<li><input type="checkbox" checked disabled> 💨 <strong>Quick Deployment</strong>: Using the Vercel platform or docker image, you can deploy with just one click and complete the process within 1 minute without any complex configuration.</li>
<li><input type="checkbox" checked disabled> 🌐 <strong>Custom Domain</strong>: If users have their own domain, they can bind it to the platform for quick access to the dialogue agent from anywhere.</li>
<li><input type="checkbox" checked disabled> 🔒 <strong>Privacy Protection</strong>: All data is stored locally in the user's browser, ensuring user privacy.</li>
<li><input type="checkbox" checked disabled> 💎 <strong>Exquisite UI Design</strong>: With a carefully designed interface, it offers an elegant appearance and smooth interaction. It supports light and dark themes and is mobile-friendly. PWA support provides a more native-like experience.</li>
<li><input type="checkbox" checked disabled> 🗣️ <strong>Smooth Conversation Experience</strong>: Fluid responses ensure a smooth conversation experience. It fully supports Markdown rendering, including code highlighting, LaTex formulas, Mermaid flowcharts, and more.</li>
</ul>
<blockquote>
<p>✨ more features will be added when LobeChat evolve.</p>
</blockquote>
<hr>
<blockquote>
<p>[!NOTE]</p>
<p>You can find our upcoming <a href="https://github.com/lobehub/lobe-chat/projects">Roadmap</a> plans in the Projects section.</p>
</blockquote>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>⚡️ Performance</h2>
<blockquote>
<p>[!NOTE]</p>
<p>The complete list of reports can be found in the <a href="https://github.com/lobehub/lobe-chat/wiki/Lighthouse">📘 Lighthouse Reports</a></p>
</blockquote>
<table>
<thead>
<tr>
<th align="center">Desktop</th>
<th align="center">Mobile</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><img src="https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/desktop/pagespeed.svg?sanitize=true" alt=""></td>
<td align="center"><img src="https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/mobile/pagespeed.svg?sanitize=true" alt=""></td>
</tr>
<tr>
<td align="center"><a href="https://lobehub.github.io/lobe-chat/lighthouse/chat/desktop/chat_preview_lobehub_com_chat.html">📑 Lighthouse Report</a></td>
<td align="center"><a href="https://lobehub.github.io/lobe-chat/lighthouse/chat/mobile/chat_preview_lobehub_com_chat.html">📑 Lighthouse Report</a></td>
</tr>
</tbody>
</table>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>🛳 Self Hosting</h2>
<p>LobeChat provides Self-Hosted Version with Vercel and <a href="https://hub.docker.com/r/lobehub/lobe-chat">Docker Image</a>. This allows you to deploy your own chatbot within a few minutes without any prior knowledge.</p>
<h3><code>A</code> Deploying with Vercel, Zeabur or Sealos</h3>
<p>If you want to deploy this service yourself on either Vercel or Zeabur, you can follow these steps:</p>
<ul>
<li>Prepare your <a href="https://platform.openai.com/account/api-keys">OpenAI API Key</a>.</li>
<li>Click the button below to start deployment: Log in directly with your GitHub account, and remember to fill in the <code>OPENAI_API_KEY</code>(required) and <code>ACCESS_CODE</code> (recommended) on the environment variable section.</li>
<li>After deployment, you can start using it.</li>
<li>Bind a custom domain (optional): The DNS of the domain assigned by Vercel is polluted in some areas; binding a custom domain can connect directly.</li>
</ul>
<div align="center">
<table>
<thead>
<tr>
<th align="center">Deploy with Vercel</th>
<th align="center">Deploy with Zeabur</th>
<th align="center">Deploy with Sealos</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><a href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat&env=OPENAI_API_KEY&envDescription=Find%20your%20OpenAI%20API%20Key%20by%20click%20the%20right%20Learn%20More%20button.&envLink=https%3A%2F%2Fplatform.openai.com%2Faccount%2Fapi-keys&project-name=lobe-chat&repository-name=lobe-chat"><img src="https://vercel.com/button" alt=""></a></td>
<td align="center"><a href="https://zeabur.com/templates/VZGGTI"><img src="https://zeabur.com/button.svg?sanitize=true" alt=""></a></td>
<td align="center"><a href="https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Dlobe-chat"><img src="https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg?sanitize=true" alt=""></a></td>
</tr>
</tbody>
</table>
</div>
<h4>Keep Updated</h4>
<p>If you have deployed your own project following the one-click deployment steps in the README, you might encounter constant prompts indicating "updates available." This is because Vercel defaults to creating a new project instead of forking this one, resulting in an inability to detect updates accurately.</p>
<blockquote>
<p>[!TIP]</p>
<p>We suggest you redeploy using the following steps, <a href="https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync">📘 Maintaining Updates with LobeChat Self-Deployment</a>.</p>
</blockquote>
<br>
<h3><code>B</code> Deploying with Docker</h3>
<p><a href="https://hub.docker.com/r/lobehub/lobe-chat"><img src="https://img.shields.io/docker/v/lobehub/lobe-chat?color=369eff&label=docker&labelColor=black&logo=docker&logoColor=white&style=flat-square" alt=""></a> <a href="https://hub.docker.com/r/lobehub/lobe-chat"><img src="https://img.shields.io/docker/image-size/lobehub/lobe-chat?color=369eff&labelColor=black&style=flat-square" alt=""></a> <a href="https://hub.docker.com/r/lobehub/lobe-chat"><img src="https://img.shields.io/docker/pulls/lobehub/lobe-chat?color=45cc11&labelColor=black&style=flat-square" alt=""></a></p>
<p>We provide a Docker image for deploying the LobeChat service on your own private device. Use the following command to start the LobeChat service:</p>
<pre><code class="language-fish">$ docker run -d -p 3210:3210 \
-e OPENAI_API_KEY=sk-xxxx \
-e ACCESS_CODE=lobe66 \
lobehub/lobe-chat
</code></pre>
<blockquote>
<p>[!TIP]</p>
<p>If you need to use the OpenAI service through a proxy, you can configure the proxy address using the <code>OPENAI_PROXY_URL</code> environment variable:</p>
</blockquote>
<pre><code class="language-fish">$ docker run -d -p 3210:3210 \
-e OPENAI_API_KEY=sk-xxxx \
-e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
-e ACCESS_CODE=lobe66 \
lobehub/lobe-chat
</code></pre>
<blockquote>
<p>[!NOTE]</p>
<p>For detailed instructions on deploying with Docker, please refer to the <a href="https://github.com/lobehub/lobe-chat/wiki/Docker-Deployment">📘 Docker Deployment Guide</a></p>
</blockquote>
<br>
<h3>Environment Variable</h3>
<p>This project provides some additional configuration items set with environment variables:</p>
<table>
<thead>
<tr>
<th>Environment Variable</th>
<th>Required</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>OPENAI_API_KEY</code></td>
<td>Yes</td>
<td>This is the API key you apply on the OpenAI account page</td>
<td><code>sk-xxxxxx...xxxxxx</code></td>
</tr>
<tr>
<td><code>OPENAI_PROXY_URL</code></td>
<td>No</td>
<td>If you manually configure the OpenAI interface proxy, you can use this configuration item to override the default OpenAI API request base URL</td>
<td><code>https://api.chatanywhere.cn/v1</code><br>The default value is<br><code>https://api.openai.com/v1</code></td>
</tr>
<tr>
<td><code>ACCESS_CODE</code></td>
<td>No</td>
<td>Add a password to access this service; you can set a long password to avoid leaking. If this value contains a comma, it is a password array.</td>
<td><code>awCTe)re_r74</code> or <code>rtrt_ewee3@09!</code> or <code>code1,code2,code3</code></td>
</tr>
<tr>
<td><code>CUSTOM_MODELS</code></td>
<td>No</td>
<td>Used to control the model list. Use <code>+</code> to add a model, <code>-</code> to hide a model, and <code>model_name=display_name</code> to customize the display name of a model, separated by commas.</td>
<td><code>qwen-7b-chat,+glm-6b,-gpt-3.5-turbo</code></td>
</tr>
</tbody>
</table>
<blockquote>
<p>[!NOTE]</p>
<p>The complete list of environment variables can be found in the <a href="https://github.com/lobehub/lobe-chat/wiki/Environment-Variable">📘 Environment Variables</a></p>
</blockquote>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>📦 Ecosystem</h2>
<table>
<thead>
<tr>
<th>NPM</th>
<th>Repository</th>
<th>Description</th>
<th>Version</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://www.npmjs.com/package/@lobehub/ui">@lobehub/ui</a></td>
<td><a href="https://github.com/lobehub/lobe-ui">lobehub/lobe-ui</a></td>
<td>Lobe UI is an open-source UI component library dedicated to building AIGC web applications.</td>
<td><a href="https://www.npmjs.com/package/@lobehub/ui"><img src="https://img.shields.io/npm/v/@lobehub/ui?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square" alt=""></a></td>
</tr>
<tr>
<td><a href="https://www.npmjs.com/package/@lobehub/tts">@lobehub/tts</a></td>
<td><a href="https://github.com/lobehub/lobe-tts">lobehub/lobe-tts</a></td>
<td>Lobe TTS is a high-quality & reliable TTS/STT React Hooks library</td>
<td><a href="https://www.npmjs.com/package/@lobehub/tts"><img src="https://img.shields.io/npm/v/@lobehub/tts?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square" alt=""></a></td>
</tr>
<tr>
<td><a href="https://www.npmjs.com/package/@lobehub/lint">@lobehub/lint</a></td>
<td><a href="https://github.com/lobehub/lobe-lint">lobehub/lobe-lint</a></td>
<td>LobeLint provides configurations for ESlint, Stylelint, Commitlint, Prettier, Remark, and Semantic Release for LobeHub.</td>
<td><a href="https://www.npmjs.com/package/@lobehub/lint"><img src="https://img.shields.io/npm/v/@lobehub/lint?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square" alt=""></a></td>
</tr>
<tr>
<td>@lobehub/assets</td>
<td><a href="https://github.com/lobehub/lobe-assets">lobehub/assets</a></td>
<td>Logo assets, favicons, webfonts for LobeHub.</td>
<td></td>
</tr>
</tbody>
</table>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>🧩 Plugins</h2>
<p>Plugins provide a means to extend the <a href="https://sspai.com/post/81986">Function Calling</a> capabilities of LobeChat. They can be used to introduce new function calls and even new ways to render message results. If you are interested in plugin development, please refer to our <a href="https://github.com/lobehub/lobe-chat/wiki/Plugin-Development">📘 Plugin Development Guide</a> in the Wiki.</p>
<ul>
<li><a href="https://github.com/lobehub/lobe-chat-plugins">lobe-chat-plugins</a>: This is the plugin index for LobeChat. It accesses index.json from this repository to display a list of available plugins for LobeChat to the user.</li>
<li><a href="https://github.com/lobehub/chat-plugin-template">chat-plugin-template</a>: This is the plugin template for LobeChat plugin development.</li>
<li><a href="https://github.com/lobehub/chat-plugin-sdk">@lobehub/chat-plugin-sdk</a>: The LobeChat Plugin SDK assists you in creating exceptional chat plugins for Lobe Chat.</li>
<li><a href="https://github.com/lobehub/chat-plugins-gateway">@lobehub/chat-plugins-gateway</a>: The LobeChat Plugins Gateway is a backend service that provides a gateway for LobeChat plugins. We deploy this service using Vercel. The primary API POST /api/v1/runner is deployed as an Edge Function.</li>
</ul>
<blockquote>
<p>[!NOTE]</p>
<p>The plugin system is currently undergoing major development. You can learn more in the following issues:</p>
<ul>
<li>[x] <a href="https://github.com/lobehub/lobe-chat/issues/73"><strong>Plugin Phase 1</strong></a>: Implement separation of the plugin from the main body, split the plugin into an independent repository for maintenance, and realize dynamic loading of the plugin.</li>
<li>[x] <a href="https://github.com/lobehub/lobe-chat/issues/97"><strong>Plugin Phase 2</strong></a>: The security and stability of the plugin's use, more accurately presenting abnormal states, the maintainability of the plugin architecture, and developer-friendly.</li>
<li>[ ] <a href="https://github.com/lobehub/lobe-chat/issues/149"><strong>Plugin Phase 3</strong></a>: Higher-level and more comprehensive customization capabilities, support for plugin authentication, and examples.</li>
</ul>
</blockquote>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>⌨️ Local Development</h2>
<p>You can use GitHub Codespaces for online development:</p>
<p><a href="https://codespaces.new/lobehub/lobe-chat"><img src="https://github.com/codespaces/badge.svg?sanitize=true" alt=""></a></p>
<p>Or clone it for local development:</p>
<p><a href="https://bun.sh"><img src="https://img.shields.io/badge/-speedup%20with%20bun-black?logo=bun&style=for-the-badge" alt=""></a></p>
<pre><code class="language-fish">$ git clone https://github.com/lobehub/lobe-chat.git
$ cd lobe-chat
$ bun install
$ bun dev
</code></pre>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>🤝 Contributing</h2>
<p>Contributions of all types are more than welcome; if you are interested in contributing code, feel free to check out our GitHub <a href="https://github.com/lobehub/lobe-chat/issues">Issues</a> and <a href="https://github.com/lobehub/lobe-chat/projects">Projects</a> to get stuck in to show us what you’re made of.</p>
<p><a href="https://github.com/lobehub/lobe-chat/pulls"><img src="https://img.shields.io/badge/%F0%9F%A4%AF_pr_welcome-%E2%86%92-ffcb47?labelColor=black&style=for-the-badge" alt=""></a> <a href="https://github.com/lobehub/lobe-chat-agents"><img src="https://img.shields.io/badge/%F0%9F%A4%96/%F0%9F%8F%AA_submit_agent-%E2%86%92-c4f042?labelColor=black&style=for-the-badge" alt=""></a> <a href="https://github.com/lobehub/lobe-chat-plugins"><img src="https://img.shields.io/badge/%F0%9F%A7%A9/%F0%9F%8F%AA_submit_plugin-%E2%86%92-95f3d9?labelColor=black&style=for-the-badge" alt=""></a></p>
<a href="https://github.com/lobehub/lobe-chat/graphs/contributors" target="_blank">
<table>
<tbody>
<tr>
<th colspan="2"> <br><img src="https://contrib.rocks/image?repo=lobehub/lobe-chat"><br><br> </th>
</tr>
<tr>
<td>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=active&period=past_28_days&owner_id=131470832&repo_ids=643445235&image_size=2x3&color_scheme=dark">
<img src="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=active&period=past_28_days&owner_id=131470832&repo_ids=643445235&image_size=2x3&color_scheme=light">
</picture> </td>
<td rowspan="2">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-org-participants-growth/thumbnail.png?activity=active&period=past_28_days&owner_id=131470832&repo_ids=643445235&image_size=4x7&color_scheme=dark">
<img src="https://next.ossinsight.io/widgets/official/compose-org-participants-growth/thumbnail.png?activity=active&period=past_28_days&owner_id=131470832&repo_ids=643445235&image_size=4x7&color_scheme=light">
</picture> </td>
</tr>
<tr>
<td>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=new&period=past_28_days&owner_id=131470832&repo_ids=643445235&image_size=2x3&color_scheme=dark">
<img src="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=new&period=past_28_days&owner_id=131470832&repo_ids=643445235&image_size=2x3&color_scheme=light">
</picture> </td>
</tr>
</tbody>
</table> </a>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>🩷 Sponsor</h2>
<p>Every bit counts and your one-time donation sparkles in our galaxy of support! You're a shooting star, making a swift and bright impact on our journey. Thank you for believing in us – your generosity guides us toward our mission, one brilliant flash at a time.</p>
<a href="https://opencollective.com/lobehub" target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/lobehub/.github/blob/main/static/sponsor-dark.png?raw=true">
<img src="https://github.com/lobehub/.github/raw/main/static/sponsor-light.png?raw=true">
</picture> </a>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<h2>🔗 More Products</h2>
<ul>
<li><strong><a href="https://github.com/lobehub/sd-webui-lobe-theme">🤯 Lobe Theme</a>:</strong> The modern theme for Stable Diffusion WebUI, exquisite interface design, highly customizable UI, and efficiency-boosting features.</li>
<li><strong><a href="https://github.com/lobehub/lobe-commit/tree/master/packages/lobe-i18n">🌏 Lobe i18n</a> :</strong> Lobe i18n is an automation tool for the i18n (internationalization) translation process, powered by ChatGPT. It supports features such as automatic splitting of large files, incremental updates, and customization options for the OpenAI model, API proxy, and temperature.</li>
<li><strong><a href="https://github.com/lobehub/lobe-commit/tree/master/packages/lobe-commit">💌 Lobe Commit</a>:</strong> Lobe Commit is a CLI tool that leverages Langchain/ChatGPT to generate Gitmoji-based commit messages.</li>
</ul>
<div align="right">
<p><a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/#readme-top"><img src="https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square" alt=""></a></p>
</div>
<hr>
<details>
<summary><h4>📝 License</h4></summary>
<p><a href="https://app.fossa.com/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat.svg?type=large" alt=""></a></p>
</details>
<p>Copyright © 2023 <a href="https://github.com/lobehub">LobeHub</a>. <br> This project is <a href="https://raw.githubusercontent.com/lobehub/lobe-chat/main/LICENSE">MIT</a> licensed.</p>
<!-- LINK GROUP -->
+
+
+ dream-num/univer
+ 2023-12-24T02:01:10Z
+ tag:github.com,2023-12-24:/dream-num/univer
+
+ <p>Univer is a set of enterprise document and data collaboration solutions, including spreadsheets, documents, and slides. The highly extensible design allows developers to customize personalized functions based on Univer.</p><hr><p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./docs/img/banner-light.png">
<img src="https://raw.githubusercontent.com/dream-num/univer/dev/docs/img/banner-dark.png" alt="Univer" width="400">
</picture> </p>
<p align="center"> <a href="https://raw.githubusercontent.com/dream-num/univer/dev/LICENSE.txt"> <img src="https://img.shields.io/github/license/dream-num/univer" alt="GitHub License"> </a> <a href="https://github.com/dream-num/univer/actions/workflows/build.yml"> <img src="https://img.shields.io/github/actions/workflow/status/dream-num/univer/build.yml" alt="GitHub Workflow Status"> </a> <a href="https://codecov.io/gh/dream-num/univer"> <img src="https://codecov.io/gh/dream-num/univer/graph/badge.svg?token=aPfyW2pIMN" alt="codecov"> </a> <a href="https://www.codefactor.io/repository/github/dream-num/univer/overview/dev"> <img src="https://www.codefactor.io/repository/github/dream-num/univer/badge/dev" alt="CodeFactor"> </a> <a href="https://discord.gg/z3NKNT6D2f"> <img src="https://img.shields.io/discord/1136129819961217077?logo=discord&logoColor=FFFFFF&label=discord&color=5865F2" alt="Discord"> </a> </p>
<p align="center"> English | <a href="https://raw.githubusercontent.com/dream-num/univer/dev/README-zh.md">简体中文</a> | <a href="https://raw.githubusercontent.com/dream-num/univer/dev/README-ja.md">日本語</a> </p>
<!-- An introduction photo here. -->
<blockquote>
<p>🚧 This project is still in heavy development. Please note that there are likely to be major API changes. Please submit issues and suggestions to us.</p>
</blockquote>
<h2>Introduction</h2>
<p>Univer is a set of enterprise document and data collaboration solutions, including spreadsheets, documents, and slides. The highly extensible design allows developers to customize personalized functions based on Univer.</p>
<p>Highlights of Univer:</p>
<ul>
<li>📈 Univer supports spreadsheets. Documents and slides will be supported in the future.</li>
<li>🌌 Highly extensible architecture design.
<ul>
<li>🔌 Plug-in architecture, the capabilities of documents can be combined on demand, support third-party plug-ins, and facilitate customization development.</li>
<li>💄 Provide component library and icons to help developers present a consistent user experience.</li>
</ul> </li>
<li>⚡ High performance.
<ul>
<li>✏️ Unified and efficient rendering engine and formula engine, based on Canvas.</li>
<li>🧮 High-performance formula engine, supports Web Worker.</li>
</ul> </li>
<li>🌍 Internationalization support.</li>
</ul>
<h2>Usage</h2>
<p>We recommend to import Univer as a npm package. Please checkout the <a href="https://univer.work/en-us/guides/quick-start/">Quick Start</a> section on the documentation website. We also have an <a href="https://univer.work/en-us/playground/overview/">online playground</a> which can help you preview Univer without setting up the development environment.</p>
<p>Univer bases on a plugin architecture. You can install the following packages to enhance the functionality of Univer.</p>
<h3>Packages</h3>
<table>
<thead>
<tr>
<th align="left">Name</th>
<th align="left">Description</th>
<th align="left">Version</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/core">core</a></td>
<td align="left">Implements plugin system and architecture of Univer. It also provides basic services and models of different types of documents.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/core"><img src="https://img.shields.io/npm/v/@univerjs/core" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/design">design</a></td>
<td align="left">Implements the design system on Univer. It provides CSS and a component kit based on React.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/design"><img src="https://img.shields.io/npm/v/@univerjs/design" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/docs">docs</a></td>
<td align="left">Implements basic logics of rich text editing features. It also facilitates text editing in other types of documents.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/docs"><img src="https://img.shields.io/npm/v/@univerjs/docs" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/docs-ui">docs-ui</a></td>
<td align="left">Provides user interface of Univer Documents</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/docs-ui"><img src="https://img.shields.io/npm/v/@univerjs/docs-ui" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/engine-formula">engine-formula</a></td>
<td align="left">It implements a rendering engine based on Canvas and is extensible for</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/engine-formula"><img src="https://img.shields.io/npm/v/@univerjs/engine-formula" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/engine-numfmt">engine-numfmt</a></td>
<td align="left">It implements a number format engine.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/engine-numfmt"><img src="https://img.shields.io/npm/v/@univerjs/engine-numfmt" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/engine-render">engine-render</a></td>
<td align="left">It implements a rendering engine based on canvas context2d.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/engine-render"><img src="https://img.shields.io/npm/v/@univerjs/engine-render" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/network">network</a></td>
<td align="left">It implements network services based on WebSocket and HTTP.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/network"><img src="https://img.shields.io/npm/v/@univerjs/network" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/rpc">rpc</a></td>
<td align="left">It implements a RPC mechanism and methods to sync data between different replicas of Univer documents.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/rpc"><img src="https://img.shields.io/npm/v/@univerjs/rpc" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/sheets">sheets</a></td>
<td align="left">Basic logics of spreadsheet features.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/sheets"><img src="https://img.shields.io/npm/v/@univerjs/sheets" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/sheets-formula">sheets-formula</a></td>
<td align="left">It implements formula in spreadsheets.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/sheets-formula"><img src="https://img.shields.io/npm/v/@univerjs/sheets-formula" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/sheets-numfmt">sheets-numfmt</a></td>
<td align="left">It implements number format in spreadsheets.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/sheets-numfmt"><img src="https://img.shields.io/npm/v/@univerjs/sheets-numfmt" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/sheets-ui">sheets-ui</a></td>
<td align="left">Provides user interface of Univer Spreadsheets</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/sheets-ui"><img src="https://img.shields.io/npm/v/@univerjs/sheets-ui" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/ui">ui</a></td>
<td align="left">Implements basic user interactions with Univer and workbench layout based on React.</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/ui"><img src="https://img.shields.io/npm/v/@univerjs/ui" alt="npm version"></a></td>
</tr>
<tr>
<td align="left"><a href="https://raw.githubusercontent.com/dream-num/univer/dev/packages/uniscript">uniscript</a> (experimental)</td>
<td align="left">Implements a DSL based on Typescript that empowers users to accomplish more sophisticated tasks</td>
<td align="left"><a href="https://npmjs.org/package/@univerjs/uniscript"><img src="https://img.shields.io/npm/v/@univerjs/uniscript" alt="npm version"></a></td>
</tr>
</tbody>
</table>
<h2>Contribution</h2>
<p>We appreciate any kinds of contributing. You can submit <a href="https://github.com/dream-num/univer/issues">issues or feature requests</a> to us. Please read our <a href="https://raw.githubusercontent.com/dream-num/univer/dev/CONTRIBUTING.md">contributing guide</a> first.</p>
<p>If you would like to contribute code to Univer, please refer to the contributing guide as well. It would guide you through the process of setting up the development environment and submitting a pull request.</p>
<h2>Stargazers</h2>
<p><a href="https://github.com/dream-num/univer/stargazers"><img src="https://bytecrank.com/nastyox/reporoster/php/stargazersSVG.php?user=dream-num&repo=univer" alt="Stargazers repo roster for @dream-num/univer"></a></p>
<h2>Links</h2>
<ul>
<li><a href="https://univer.work/guides/introduction/">Documentation</a> (currently only Chinese version)</li>
<li><a href="https://univer.work/playground/overview/">Online Playground</a></li>
<li><a href="https://univer.work">Official Website</a></li>
<li><a href="https://dream-num.github.io/univer-demo/">Legacy Univer Demo</a></li>
</ul>
<h3>Community</h3>
<ul>
<li><a href="https://discord.gg/z3NKNT6D2f">Discord community</a></li>
</ul>
<h2>License</h2>
<p>Univer is distributed under the terms of the Apache-2.0 license.</p>
<hr>
<p>Copyright DreamNum Inc. 2023-present</p>
+
+
\ No newline at end of file
diff --git a/unified-parallel-c/daily/index.xml b/unified-parallel-c/daily/index.xml
index e4343f61c25..04abfd9ad6e 100644
--- a/unified-parallel-c/daily/index.xml
+++ b/unified-parallel-c/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Unified Parallel C Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:00Z
+ 2023-12-24T01:43:50Z
Daily Trending of Unified Parallel C in GitHub
\ No newline at end of file
diff --git a/unified-parallel-c/weekly/index.xml b/unified-parallel-c/weekly/index.xml
new file mode 100644
index 00000000000..5db70beec3f
--- /dev/null
+++ b/unified-parallel-c/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Unified Parallel C Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:19Z
+ Weekly Trending of Unified Parallel C in GitHub
+
+
\ No newline at end of file
diff --git a/unity3d-asset/daily/index.xml b/unity3d-asset/daily/index.xml
index 6ada7c6da75..e45319c156e 100644
--- a/unity3d-asset/daily/index.xml
+++ b/unity3d-asset/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Unity3D Asset Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:40:59Z
+ 2023-12-24T01:43:52Z
Daily Trending of Unity3D Asset in GitHub
\ No newline at end of file
diff --git a/unity3d-asset/weekly/index.xml b/unity3d-asset/weekly/index.xml
new file mode 100644
index 00000000000..dce97c79499
--- /dev/null
+++ b/unity3d-asset/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Unity3D Asset Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:17Z
+ Weekly Trending of Unity3D Asset in GitHub
+
+
\ No newline at end of file
diff --git a/unix-assembly/daily/index.xml b/unix-assembly/daily/index.xml
index d83b5315fd1..1796ae43852 100644
--- a/unix-assembly/daily/index.xml
+++ b/unix-assembly/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Unix Assembly Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:01Z
+ 2023-12-24T01:43:52Z
Daily Trending of Unix Assembly in GitHub
\ No newline at end of file
diff --git a/unix-assembly/weekly/index.xml b/unix-assembly/weekly/index.xml
new file mode 100644
index 00000000000..981c3ead66c
--- /dev/null
+++ b/unix-assembly/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Unix Assembly Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:16Z
+ Weekly Trending of Unix Assembly in GitHub
+
+
\ No newline at end of file
diff --git a/unknown/daily/index.xml b/unknown/daily/index.xml
index 50185b0c885..b63eddf39e1 100644
--- a/unknown/daily/index.xml
+++ b/unknown/daily/index.xml
@@ -1,28 +1,28 @@
- GitHub Unknown Languages Daily Trending
+ GitHub Unknown languages Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:23:42Z
- Daily Trending of Unknown Languages in GitHub
+ 2023-12-24T01:27:35Z
+ Daily Trending of Unknown languages in GitHub
- gpt-engineer-org/gptengineer.app
- 2023-12-23T01:23:42Z
- tag:github.com,2023-12-23:/gpt-engineer-org/gptengineer.app
-
- <p>Rapid prototyping of web apps using plain english 👶🤖</p><hr>
+ thomasbi1/cyberrunner
+ 2023-12-24T01:27:35Z
+ tag:github.com,2023-12-24:/thomasbi1/cyberrunner
+
+ <p></p><hr>
- ashishps1/awesome-low-level-design
- 2023-12-23T01:23:42Z
- tag:github.com,2023-12-23:/ashishps1/awesome-low-level-design
-
- <p>This repository contains low level design resources to improve coding skills and prepare for interviews.</p><hr>
+ vndee/awsome-vietnamese-nlp
+ 2023-12-24T01:27:35Z
+ tag:github.com,2023-12-24:/vndee/awsome-vietnamese-nlp
+
+ <p>A collection of Vietnamese Natural Language Processing resources.</p><hr>
- yetzt/null-island
- 2023-12-23T01:23:42Z
- tag:github.com,2023-12-23:/yetzt/null-island
-
- <p>A design reflection about the representation of missing values.</p><hr>
+ yonggekkk/sing-box_hysteria2_tuic_argo_reality
+ 2023-12-24T01:27:35Z
+ tag:github.com,2023-12-24:/yonggekkk/sing-box_hysteria2_tuic_argo_reality
+
+ <p>Sing-box精装桶一键脚本【Hysteria2、Tuic5、Vless-reality、Vmess-ws/argo】:支持多端口跳跃、自签/acme双证书切换、高自由度分流设置、argo隧道、warp出站账户变更设置、Clash-Meta配置+SFA/SFI/SFW三合一配置</p><hr>
\ No newline at end of file
diff --git a/unknown/weekly/index.xml b/unknown/weekly/index.xml
new file mode 100644
index 00000000000..293ee0283f7
--- /dev/null
+++ b/unknown/weekly/index.xml
@@ -0,0 +1,28 @@
+
+ GitHub Unknown languages Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T01:45:04Z
+ Weekly Trending of Unknown languages in GitHub
+
+
+ DataEngineer-io/data-engineer-handbook
+ 2023-12-24T01:45:04Z
+ tag:github.com,2023-12-24:/DataEngineer-io/data-engineer-handbook
+
+ <p>This is a repo with links to everything you'd ever want to learn about data engineering</p><hr>
+
+
+ bleedline/aimoneyhunter
+ 2023-12-24T01:45:04Z
+ tag:github.com,2023-12-24:/bleedline/aimoneyhunter
+
+ <p>ai副业赚钱大集合,教你如何利用ai做一些副业项目,赚取更多额外收益。The Ultimate Guide to Making Money with AI Side Hustles: Learn how to leverage AI for some cool side gigs and rake in some extra cash. Check out the English version for more insights.</p><hr>
+
+
+ HumanAIGC/OutfitAnyone
+ 2023-12-24T01:45:04Z
+ tag:github.com,2023-12-24:/HumanAIGC/OutfitAnyone
+
+ <p>Outfit Anyone: Ultra-high quality virtual try-on for Any Clothing and Any Person</p><hr>
+
+
\ No newline at end of file
diff --git a/uno/daily/index.xml b/uno/daily/index.xml
index da49fb49806..74cf07ad350 100644
--- a/uno/daily/index.xml
+++ b/uno/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Uno Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:01Z
+ 2023-12-24T01:43:51Z
Daily Trending of Uno in GitHub
\ No newline at end of file
diff --git a/uno/weekly/index.xml b/uno/weekly/index.xml
new file mode 100644
index 00000000000..fee1e7208ec
--- /dev/null
+++ b/uno/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Uno Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:18Z
+ Weekly Trending of Uno in GitHub
+
+
\ No newline at end of file
diff --git a/unrealscript/daily/index.xml b/unrealscript/daily/index.xml
index 5ee1f6f8398..868fb8ad03d 100644
--- a/unrealscript/daily/index.xml
+++ b/unrealscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub UnrealScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:03Z
+ 2023-12-24T01:43:54Z
Daily Trending of UnrealScript in GitHub
\ No newline at end of file
diff --git a/unrealscript/weekly/index.xml b/unrealscript/weekly/index.xml
new file mode 100644
index 00000000000..0c449be1d49
--- /dev/null
+++ b/unrealscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub UnrealScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:20Z
+ Weekly Trending of UnrealScript in GitHub
+
+
\ No newline at end of file
diff --git a/urweb/daily/index.xml b/urweb/daily/index.xml
index d7bb8ca1248..5a2df6f2686 100644
--- a/urweb/daily/index.xml
+++ b/urweb/daily/index.xml
@@ -1,7 +1,7 @@
GitHub UrWeb Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:04Z
+ 2023-12-24T01:43:53Z
Daily Trending of UrWeb in GitHub
\ No newline at end of file
diff --git a/urweb/weekly/index.xml b/urweb/weekly/index.xml
new file mode 100644
index 00000000000..e8060c76ced
--- /dev/null
+++ b/urweb/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub UrWeb Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:22Z
+ Weekly Trending of UrWeb in GitHub
+
+
\ No newline at end of file
diff --git a/v/daily/index.xml b/v/daily/index.xml
index 8e28c5c335d..e890c340ebe 100644
--- a/v/daily/index.xml
+++ b/v/daily/index.xml
@@ -1,14 +1,7 @@
GitHub V Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:05Z
+ 2023-12-24T01:43:55Z
Daily Trending of V in GitHub
-
- Casper64/css
- 2023-12-23T01:41:05Z
- tag:github.com,2023-12-23:/Casper64/css
-
- <p>A CSS parser written V</p><hr>
-
\ No newline at end of file
diff --git a/v/weekly/index.xml b/v/weekly/index.xml
new file mode 100644
index 00000000000..345d3669d8b
--- /dev/null
+++ b/v/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub V Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:20Z
+ Weekly Trending of V in GitHub
+
+
\ No newline at end of file
diff --git a/vala/daily/index.xml b/vala/daily/index.xml
index 52318db127c..55667659e85 100644
--- a/vala/daily/index.xml
+++ b/vala/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Vala Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:06Z
+ 2023-12-24T01:43:56Z
Daily Trending of Vala in GitHub
\ No newline at end of file
diff --git a/vala/weekly/index.xml b/vala/weekly/index.xml
new file mode 100644
index 00000000000..42160762475
--- /dev/null
+++ b/vala/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Vala Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:21Z
+ Weekly Trending of Vala in GitHub
+
+
\ No newline at end of file
diff --git a/valve-data-format/daily/index.xml b/valve-data-format/daily/index.xml
index 72c66796985..d69664e47e5 100644
--- a/valve-data-format/daily/index.xml
+++ b/valve-data-format/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Valve Data Format Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:09Z
+ 2023-12-24T01:43:57Z
Daily Trending of Valve Data Format in GitHub
\ No newline at end of file
diff --git a/valve-data-format/weekly/index.xml b/valve-data-format/weekly/index.xml
new file mode 100644
index 00000000000..d193348753d
--- /dev/null
+++ b/valve-data-format/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Valve Data Format Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:23Z
+ Weekly Trending of Valve Data Format in GitHub
+
+
\ No newline at end of file
diff --git a/vba/daily/index.xml b/vba/daily/index.xml
index 47f9908c819..d910bf37d40 100644
--- a/vba/daily/index.xml
+++ b/vba/daily/index.xml
@@ -1,7 +1,7 @@
GitHub VBA Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:07Z
+ 2023-12-24T01:43:58Z
Daily Trending of VBA in GitHub
\ No newline at end of file
diff --git a/vba/weekly/index.xml b/vba/weekly/index.xml
new file mode 100644
index 00000000000..43c9e5467a8
--- /dev/null
+++ b/vba/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub VBA Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:24Z
+ Weekly Trending of VBA in GitHub
+
+
\ No newline at end of file
diff --git a/vbscript/daily/index.xml b/vbscript/daily/index.xml
index 5943c79401b..1593483eee6 100644
--- a/vbscript/daily/index.xml
+++ b/vbscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub VBScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:10Z
+ 2023-12-24T01:43:59Z
Daily Trending of VBScript in GitHub
\ No newline at end of file
diff --git a/vbscript/weekly/index.xml b/vbscript/weekly/index.xml
new file mode 100644
index 00000000000..e98a22de977
--- /dev/null
+++ b/vbscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub VBScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:25Z
+ Weekly Trending of VBScript in GitHub
+
+
\ No newline at end of file
diff --git a/vcl/daily/index.xml b/vcl/daily/index.xml
index 8fb77b96d7d..fffa676d956 100644
--- a/vcl/daily/index.xml
+++ b/vcl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub VCL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:08Z
+ 2023-12-24T01:43:59Z
Daily Trending of VCL in GitHub
\ No newline at end of file
diff --git a/vcl/weekly/index.xml b/vcl/weekly/index.xml
new file mode 100644
index 00000000000..c8e5e08b90b
--- /dev/null
+++ b/vcl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub VCL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:26Z
+ Weekly Trending of VCL in GitHub
+
+
\ No newline at end of file
diff --git a/verilog/daily/index.xml b/verilog/daily/index.xml
index 09068100c5a..aa739aa5d4b 100644
--- a/verilog/daily/index.xml
+++ b/verilog/daily/index.xml
@@ -1,14 +1,14 @@
GitHub Verilog Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:13Z
+ 2023-12-24T01:44:04Z
Daily Trending of Verilog in GitHub
- FelipeFFerreira/ITA-CORES
- 2023-12-23T01:41:13Z
- tag:github.com,2023-12-23:/FelipeFFerreira/ITA-CORES
-
- <p>RISC-V SoC Physical Implementation in 180 nm CMOS with a Quark Core Based on FemtoRV32</p><hr>
+ mikeakohn/m6502
+ 2023-12-24T01:44:04Z
+ tag:github.com,2023-12-24:/mikeakohn/m6502
+
+ <p>FPGA implementation of the 6502.</p><hr>
\ No newline at end of file
diff --git a/verilog/weekly/index.xml b/verilog/weekly/index.xml
new file mode 100644
index 00000000000..be3cdd7c50c
--- /dev/null
+++ b/verilog/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Verilog Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:28Z
+ Weekly Trending of Verilog in GitHub
+
+
\ No newline at end of file
diff --git a/vhdl/daily/index.xml b/vhdl/daily/index.xml
index c9a0ea0c6cc..c95b08523bb 100644
--- a/vhdl/daily/index.xml
+++ b/vhdl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub VHDL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:15Z
+ 2023-12-24T01:44:02Z
Daily Trending of VHDL in GitHub
\ No newline at end of file
diff --git a/vhdl/weekly/index.xml b/vhdl/weekly/index.xml
new file mode 100644
index 00000000000..7788d90198f
--- /dev/null
+++ b/vhdl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub VHDL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:30Z
+ Weekly Trending of VHDL in GitHub
+
+
\ No newline at end of file
diff --git a/vim-help-file/daily/index.xml b/vim-help-file/daily/index.xml
index 58b5686fcd4..aa7cd946c75 100644
--- a/vim-help-file/daily/index.xml
+++ b/vim-help-file/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Vim Help File Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:14Z
+ 2023-12-24T01:44:01Z
Daily Trending of Vim Help File in GitHub
\ No newline at end of file
diff --git a/vim-help-file/weekly/index.xml b/vim-help-file/weekly/index.xml
new file mode 100644
index 00000000000..0d4caa2a0e2
--- /dev/null
+++ b/vim-help-file/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Vim Help File Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:29Z
+ Weekly Trending of Vim Help File in GitHub
+
+
\ No newline at end of file
diff --git a/vim-script/daily/index.xml b/vim-script/daily/index.xml
index b0528e669ba..068a93aa44b 100644
--- a/vim-script/daily/index.xml
+++ b/vim-script/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Vim Script Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:21Z
+ 2023-12-24T01:44:08Z
Daily Trending of Vim Script in GitHub
\ No newline at end of file
diff --git a/vim-script/weekly/index.xml b/vim-script/weekly/index.xml
new file mode 100644
index 00000000000..c2f6e7baa71
--- /dev/null
+++ b/vim-script/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Vim Script Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:35Z
+ Weekly Trending of Vim Script in GitHub
+
+
+ Equal/dotfiles
+ 2023-12-24T02:01:35Z
+ tag:github.com,2023-12-24:/Equal/dotfiles
+
+ <p>Dotfiles!</p><hr>
+
+
+ aki017/vimrc
+ 2023-12-24T02:01:35Z
+ tag:github.com,2023-12-24:/aki017/vimrc
+
+ <p>vimrc</p><hr>
+
+
\ No newline at end of file
diff --git a/vim-snippet/daily/index.xml b/vim-snippet/daily/index.xml
index 6d22bde3ec2..9ea573af63c 100644
--- a/vim-snippet/daily/index.xml
+++ b/vim-snippet/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Vim Snippet Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:17Z
+ 2023-12-24T01:44:05Z
Daily Trending of Vim Snippet in GitHub
\ No newline at end of file
diff --git a/vim-snippet/weekly/index.xml b/vim-snippet/weekly/index.xml
new file mode 100644
index 00000000000..c69bdc36966
--- /dev/null
+++ b/vim-snippet/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Vim Snippet Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:32Z
+ Weekly Trending of Vim Snippet in GitHub
+
+
\ No newline at end of file
diff --git a/visual-basic-.net/daily/index.xml b/visual-basic-.net/daily/index.xml
index 1cb0e507731..fc9f1832113 100644
--- a/visual-basic-.net/daily/index.xml
+++ b/visual-basic-.net/daily/index.xml
@@ -1,14 +1,7 @@
GitHub Visual Basic .NET Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:19Z
+ 2023-12-24T01:44:09Z
Daily Trending of Visual Basic .NET in GitHub
-
- dauris/Pond_Window
- 2023-12-23T01:41:19Z
- tag:github.com,2023-12-23:/dauris/Pond_Window
-
- <p></p><hr>
-
\ No newline at end of file
diff --git a/visual-basic-.net/weekly/index.xml b/visual-basic-.net/weekly/index.xml
new file mode 100644
index 00000000000..be37701e9f3
--- /dev/null
+++ b/visual-basic-.net/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Visual Basic .NET Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:33Z
+ Weekly Trending of Visual Basic .NET in GitHub
+
+
\ No newline at end of file
diff --git a/volt/daily/index.xml b/volt/daily/index.xml
index 16f937f258a..21a4de52c9b 100644
--- a/volt/daily/index.xml
+++ b/volt/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Volt Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:23Z
+ 2023-12-24T01:44:12Z
Daily Trending of Volt in GitHub
\ No newline at end of file
diff --git a/volt/weekly/index.xml b/volt/weekly/index.xml
new file mode 100644
index 00000000000..118dac15935
--- /dev/null
+++ b/volt/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Volt Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:38Z
+ Weekly Trending of Volt in GitHub
+
+
\ No newline at end of file
diff --git a/vue/daily/index.xml b/vue/daily/index.xml
index 9b5f3cc7c57..748ca9395de 100644
--- a/vue/daily/index.xml
+++ b/vue/daily/index.xml
@@ -1,21 +1,14 @@
GitHub Vue Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:27Z
+ 2023-12-24T01:44:14Z
Daily Trending of Vue in GitHub
- MetaLowCodeTeam/MetaLowCode
- 2023-12-23T01:41:27Z
- tag:github.com,2023-12-23:/MetaLowCodeTeam/MetaLowCode
-
- <p>MetaLowCode——美乐低代码,企业级全栈低代码开发平台。私有部署,源码交付。</p><hr>
-
-
- xiaoqing-tan/vue3dashboard
- 2023-12-23T01:41:27Z
- tag:github.com,2023-12-23:/xiaoqing-tan/vue3dashboard
-
- <p>一款基于Vue3+tailwindcss+Element Plus的后台管理系统</p><hr>
+ rotick/searchemoji
+ 2023-12-24T01:44:14Z
+ tag:github.com,2023-12-24:/rotick/searchemoji
+
+ <p>🔍Search for Emoji, 🖱️Click to Copy - Emoji Search Engine Supporting 30 Languages</p><hr>
\ No newline at end of file
diff --git a/vue/weekly/index.xml b/vue/weekly/index.xml
new file mode 100644
index 00000000000..0aa556aa171
--- /dev/null
+++ b/vue/weekly/index.xml
@@ -0,0 +1,21 @@
+
+ GitHub Vue Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:40Z
+ Weekly Trending of Vue in GitHub
+
+
+ imsyy/SPlayer
+ 2023-12-24T02:01:40Z
+ tag:github.com,2023-12-24:/imsyy/SPlayer
+
+ <p>【重构中】🎉 一个简约的音乐播放器,支持网易云音乐账号登录,逐字歌词,下载歌曲,展示评论区,音乐云盘及歌单管理,移动端基础适配</p><hr>
+
+
+ primefaces/primevue-examples
+ 2023-12-24T02:01:40Z
+ tag:github.com,2023-12-24:/primefaces/primevue-examples
+
+ <p>PrimeVue Example Projects</p><hr>
+
+
\ No newline at end of file
diff --git a/vyper/daily/index.xml b/vyper/daily/index.xml
index 55d53f94fcf..c331cd496e9 100644
--- a/vyper/daily/index.xml
+++ b/vyper/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Vyper Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:24Z
+ 2023-12-24T01:44:10Z
Daily Trending of Vyper in GitHub
\ No newline at end of file
diff --git a/vyper/weekly/index.xml b/vyper/weekly/index.xml
new file mode 100644
index 00000000000..fcf788b2bef
--- /dev/null
+++ b/vyper/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Vyper Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:37Z
+ Weekly Trending of Vyper in GitHub
+
+
\ No newline at end of file
diff --git a/wavefront-material/daily/index.xml b/wavefront-material/daily/index.xml
index 767d428131f..b0262a36671 100644
--- a/wavefront-material/daily/index.xml
+++ b/wavefront-material/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Wavefront Material Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:30Z
+ 2023-12-24T01:44:16Z
Daily Trending of Wavefront Material in GitHub
\ No newline at end of file
diff --git a/wavefront-material/weekly/index.xml b/wavefront-material/weekly/index.xml
new file mode 100644
index 00000000000..e12be82f585
--- /dev/null
+++ b/wavefront-material/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Wavefront Material Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:41Z
+ Weekly Trending of Wavefront Material in GitHub
+
+
\ No newline at end of file
diff --git a/wavefront-object/daily/index.xml b/wavefront-object/daily/index.xml
index b77d81c54e1..7ff4bd003a7 100644
--- a/wavefront-object/daily/index.xml
+++ b/wavefront-object/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Wavefront Object Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:31Z
+ 2023-12-24T01:44:17Z
Daily Trending of Wavefront Object in GitHub
\ No newline at end of file
diff --git a/wavefront-object/weekly/index.xml b/wavefront-object/weekly/index.xml
new file mode 100644
index 00000000000..3f1c04a4de4
--- /dev/null
+++ b/wavefront-object/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Wavefront Object Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:43Z
+ Weekly Trending of Wavefront Object in GitHub
+
+
\ No newline at end of file
diff --git a/wdl/daily/index.xml b/wdl/daily/index.xml
index d32df9d2373..89eff94f924 100644
--- a/wdl/daily/index.xml
+++ b/wdl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub WDL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:29Z
+ 2023-12-24T01:44:15Z
Daily Trending of WDL in GitHub
\ No newline at end of file
diff --git a/wdl/weekly/index.xml b/wdl/weekly/index.xml
new file mode 100644
index 00000000000..95c92571a70
--- /dev/null
+++ b/wdl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub WDL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:42Z
+ Weekly Trending of WDL in GitHub
+
+
\ No newline at end of file
diff --git a/web-ontology-language/daily/index.xml b/web-ontology-language/daily/index.xml
index 2849276ddce..9f834738621 100644
--- a/web-ontology-language/daily/index.xml
+++ b/web-ontology-language/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Web Ontology Language Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:28Z
+ 2023-12-24T01:44:16Z
Daily Trending of Web Ontology Language in GitHub
\ No newline at end of file
diff --git a/web-ontology-language/weekly/index.xml b/web-ontology-language/weekly/index.xml
new file mode 100644
index 00000000000..f3a8cc1f434
--- /dev/null
+++ b/web-ontology-language/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Web Ontology Language Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:43Z
+ Weekly Trending of Web Ontology Language in GitHub
+
+
\ No newline at end of file
diff --git a/webassembly/daily/index.xml b/webassembly/daily/index.xml
index f18ac5895d6..26768efed85 100644
--- a/webassembly/daily/index.xml
+++ b/webassembly/daily/index.xml
@@ -1,7 +1,7 @@
GitHub WebAssembly Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:35Z
+ 2023-12-24T01:44:21Z
Daily Trending of WebAssembly in GitHub
\ No newline at end of file
diff --git a/webassembly/weekly/index.xml b/webassembly/weekly/index.xml
new file mode 100644
index 00000000000..e0b110d5b79
--- /dev/null
+++ b/webassembly/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub WebAssembly Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:45Z
+ Weekly Trending of WebAssembly in GitHub
+
+
\ No newline at end of file
diff --git a/webidl/daily/index.xml b/webidl/daily/index.xml
index 94b2c90e816..bdbc966e964 100644
--- a/webidl/daily/index.xml
+++ b/webidl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub WebIDL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:33Z
+ 2023-12-24T01:44:18Z
Daily Trending of WebIDL in GitHub
\ No newline at end of file
diff --git a/webidl/weekly/index.xml b/webidl/weekly/index.xml
new file mode 100644
index 00000000000..d1f7fb1444c
--- /dev/null
+++ b/webidl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub WebIDL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:46Z
+ Weekly Trending of WebIDL in GitHub
+
+
\ No newline at end of file
diff --git a/webvtt/daily/index.xml b/webvtt/daily/index.xml
index d1da3065102..72b8ba47179 100644
--- a/webvtt/daily/index.xml
+++ b/webvtt/daily/index.xml
@@ -1,7 +1,7 @@
GitHub WebVTT Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:33Z
+ 2023-12-24T01:44:20Z
Daily Trending of WebVTT in GitHub
\ No newline at end of file
diff --git a/webvtt/weekly/index.xml b/webvtt/weekly/index.xml
new file mode 100644
index 00000000000..5d9e5fb6208
--- /dev/null
+++ b/webvtt/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub WebVTT Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:44Z
+ Weekly Trending of WebVTT in GitHub
+
+
\ No newline at end of file
diff --git a/wget-config/daily/index.xml b/wget-config/daily/index.xml
index 30d73decfc1..16e65f2abce 100644
--- a/wget-config/daily/index.xml
+++ b/wget-config/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Wget Config Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:36Z
+ 2023-12-24T01:44:24Z
Daily Trending of Wget Config in GitHub
\ No newline at end of file
diff --git a/wget-config/weekly/index.xml b/wget-config/weekly/index.xml
new file mode 100644
index 00000000000..fe2bc58ecb4
--- /dev/null
+++ b/wget-config/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Wget Config Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:48Z
+ Weekly Trending of Wget Config in GitHub
+
+
\ No newline at end of file
diff --git a/wikitext/daily/index.xml b/wikitext/daily/index.xml
index fbf626c6b8d..f7a7c0cdb48 100644
--- a/wikitext/daily/index.xml
+++ b/wikitext/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Wikitext Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:37Z
+ 2023-12-24T01:44:22Z
Daily Trending of Wikitext in GitHub
\ No newline at end of file
diff --git a/wikitext/weekly/index.xml b/wikitext/weekly/index.xml
new file mode 100644
index 00000000000..ebb09cd8f25
--- /dev/null
+++ b/wikitext/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Wikitext Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:50Z
+ Weekly Trending of Wikitext in GitHub
+
+
\ No newline at end of file
diff --git a/windows-registry-entries/daily/index.xml b/windows-registry-entries/daily/index.xml
index 2dcb5eac254..3788bfeed2e 100644
--- a/windows-registry-entries/daily/index.xml
+++ b/windows-registry-entries/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Windows Registry Entries Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:42Z
+ 2023-12-24T01:44:26Z
Daily Trending of Windows Registry Entries in GitHub
\ No newline at end of file
diff --git a/windows-registry-entries/weekly/index.xml b/windows-registry-entries/weekly/index.xml
new file mode 100644
index 00000000000..7c6758b06d0
--- /dev/null
+++ b/windows-registry-entries/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Windows Registry Entries Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:52Z
+ Weekly Trending of Windows Registry Entries in GitHub
+
+
\ No newline at end of file
diff --git a/wisp/daily/index.xml b/wisp/daily/index.xml
index ed10d175c34..aeee9312680 100644
--- a/wisp/daily/index.xml
+++ b/wisp/daily/index.xml
@@ -1,7 +1,7 @@
GitHub wisp Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:39Z
+ 2023-12-24T01:44:27Z
Daily Trending of wisp in GitHub
\ No newline at end of file
diff --git a/wisp/weekly/index.xml b/wisp/weekly/index.xml
new file mode 100644
index 00000000000..9667a895ee6
--- /dev/null
+++ b/wisp/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub wisp Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:53Z
+ Weekly Trending of wisp in GitHub
+
+
\ No newline at end of file
diff --git a/witcher-script/daily/index.xml b/witcher-script/daily/index.xml
index ff6f9b1e790..c93f04bb0ee 100644
--- a/witcher-script/daily/index.xml
+++ b/witcher-script/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Witcher Script Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:40Z
+ 2023-12-24T01:44:25Z
Daily Trending of Witcher Script in GitHub
\ No newline at end of file
diff --git a/witcher-script/weekly/index.xml b/witcher-script/weekly/index.xml
new file mode 100644
index 00000000000..8702e5c048e
--- /dev/null
+++ b/witcher-script/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Witcher Script Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:52Z
+ Weekly Trending of Witcher Script in GitHub
+
+
\ No newline at end of file
diff --git a/wollok/daily/index.xml b/wollok/daily/index.xml
index aecb0c821bd..fb0fa072f8f 100644
--- a/wollok/daily/index.xml
+++ b/wollok/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Wollok Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:43Z
+ 2023-12-24T01:44:28Z
Daily Trending of Wollok in GitHub
\ No newline at end of file
diff --git a/wollok/weekly/index.xml b/wollok/weekly/index.xml
new file mode 100644
index 00000000000..45d41b63a1d
--- /dev/null
+++ b/wollok/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Wollok Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:56Z
+ Weekly Trending of Wollok in GitHub
+
+
\ No newline at end of file
diff --git a/world-of-warcraft-addon-data/daily/index.xml b/world-of-warcraft-addon-data/daily/index.xml
index 710cb1825c3..0c98f619b8f 100644
--- a/world-of-warcraft-addon-data/daily/index.xml
+++ b/world-of-warcraft-addon-data/daily/index.xml
@@ -1,7 +1,7 @@
GitHub World of Warcraft Addon Data Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:45Z
+ 2023-12-24T01:44:29Z
Daily Trending of World of Warcraft Addon Data in GitHub
\ No newline at end of file
diff --git a/world-of-warcraft-addon-data/weekly/index.xml b/world-of-warcraft-addon-data/weekly/index.xml
new file mode 100644
index 00000000000..6c4d43ba0e4
--- /dev/null
+++ b/world-of-warcraft-addon-data/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub World of Warcraft Addon Data Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:54Z
+ Weekly Trending of World of Warcraft Addon Data in GitHub
+
+
\ No newline at end of file
diff --git a/x-bitmap/daily/index.xml b/x-bitmap/daily/index.xml
index aa2e8ca13d3..ab63888f5ca 100644
--- a/x-bitmap/daily/index.xml
+++ b/x-bitmap/daily/index.xml
@@ -1,7 +1,7 @@
GitHub X BitMap Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:44Z
+ 2023-12-24T01:44:30Z
Daily Trending of X BitMap in GitHub
\ No newline at end of file
diff --git a/x-bitmap/weekly/index.xml b/x-bitmap/weekly/index.xml
new file mode 100644
index 00000000000..74c29b22a2d
--- /dev/null
+++ b/x-bitmap/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub X BitMap Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:56Z
+ Weekly Trending of X BitMap in GitHub
+
+
\ No newline at end of file
diff --git a/x-font-directory-index/daily/index.xml b/x-font-directory-index/daily/index.xml
index cce06a800e8..3c06b0d1273 100644
--- a/x-font-directory-index/daily/index.xml
+++ b/x-font-directory-index/daily/index.xml
@@ -1,7 +1,7 @@
GitHub X Font Directory Index Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:48Z
+ 2023-12-24T01:44:33Z
Daily Trending of X Font Directory Index in GitHub
\ No newline at end of file
diff --git a/x-font-directory-index/weekly/index.xml b/x-font-directory-index/weekly/index.xml
new file mode 100644
index 00000000000..ffc859833e5
--- /dev/null
+++ b/x-font-directory-index/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub X Font Directory Index Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:58Z
+ Weekly Trending of X Font Directory Index in GitHub
+
+
\ No newline at end of file
diff --git a/x-pixmap/daily/index.xml b/x-pixmap/daily/index.xml
index f47e220fbaf..daf35c49976 100644
--- a/x-pixmap/daily/index.xml
+++ b/x-pixmap/daily/index.xml
@@ -1,7 +1,7 @@
GitHub X PixMap Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:47Z
+ 2023-12-24T01:44:33Z
Daily Trending of X PixMap in GitHub
\ No newline at end of file
diff --git a/x-pixmap/weekly/index.xml b/x-pixmap/weekly/index.xml
new file mode 100644
index 00000000000..88cf69a5c87
--- /dev/null
+++ b/x-pixmap/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub X PixMap Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:59Z
+ Weekly Trending of X PixMap in GitHub
+
+
\ No newline at end of file
diff --git a/x10/daily/index.xml b/x10/daily/index.xml
index 1a7fe46e3b8..991f53b3a56 100644
--- a/x10/daily/index.xml
+++ b/x10/daily/index.xml
@@ -1,7 +1,7 @@
GitHub X10 Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:48Z
+ 2023-12-24T01:44:31Z
Daily Trending of X10 in GitHub
\ No newline at end of file
diff --git a/x10/weekly/index.xml b/x10/weekly/index.xml
new file mode 100644
index 00000000000..31b237f134b
--- /dev/null
+++ b/x10/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub X10 Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:57Z
+ Weekly Trending of X10 in GitHub
+
+
\ No newline at end of file
diff --git a/xbase/daily/index.xml b/xbase/daily/index.xml
index 7c1195707dd..20c9e9c5977 100644
--- a/xbase/daily/index.xml
+++ b/xbase/daily/index.xml
@@ -1,7 +1,7 @@
GitHub xBase Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:49Z
+ 2023-12-24T01:44:32Z
Daily Trending of xBase in GitHub
\ No newline at end of file
diff --git a/xbase/weekly/index.xml b/xbase/weekly/index.xml
new file mode 100644
index 00000000000..b014a4e469e
--- /dev/null
+++ b/xbase/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub xBase Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:01:59Z
+ Weekly Trending of xBase in GitHub
+
+
\ No newline at end of file
diff --git a/xc/daily/index.xml b/xc/daily/index.xml
index d50c0c9f26c..dc5f8308c8b 100644
--- a/xc/daily/index.xml
+++ b/xc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XC Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:53Z
+ 2023-12-24T01:44:34Z
Daily Trending of XC in GitHub
\ No newline at end of file
diff --git a/xc/weekly/index.xml b/xc/weekly/index.xml
new file mode 100644
index 00000000000..b929b79cf5b
--- /dev/null
+++ b/xc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XC Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:01Z
+ Weekly Trending of XC in GitHub
+
+
\ No newline at end of file
diff --git a/xcompose/daily/index.xml b/xcompose/daily/index.xml
index 972884e2b30..ba9e352ea88 100644
--- a/xcompose/daily/index.xml
+++ b/xcompose/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XCompose Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:52Z
+ 2023-12-24T01:44:36Z
Daily Trending of XCompose in GitHub
\ No newline at end of file
diff --git a/xcompose/weekly/index.xml b/xcompose/weekly/index.xml
new file mode 100644
index 00000000000..4a08e30b977
--- /dev/null
+++ b/xcompose/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XCompose Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:01Z
+ Weekly Trending of XCompose in GitHub
+
+
\ No newline at end of file
diff --git a/xml-property-list/daily/index.xml b/xml-property-list/daily/index.xml
index 1237a0ddc47..276064a0a32 100644
--- a/xml-property-list/daily/index.xml
+++ b/xml-property-list/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XML Property List Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:51Z
+ 2023-12-24T01:44:37Z
Daily Trending of XML Property List in GitHub
\ No newline at end of file
diff --git a/xml-property-list/weekly/index.xml b/xml-property-list/weekly/index.xml
new file mode 100644
index 00000000000..d1c74827b56
--- /dev/null
+++ b/xml-property-list/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XML Property List Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:02Z
+ Weekly Trending of XML Property List in GitHub
+
+
\ No newline at end of file
diff --git a/xml/daily/index.xml b/xml/daily/index.xml
index eba53b86a6f..93d4bf26de9 100644
--- a/xml/daily/index.xml
+++ b/xml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:50Z
+ 2023-12-24T01:44:35Z
Daily Trending of XML in GitHub
\ No newline at end of file
diff --git a/xml/weekly/index.xml b/xml/weekly/index.xml
new file mode 100644
index 00000000000..db29db67f72
--- /dev/null
+++ b/xml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:03Z
+ Weekly Trending of XML in GitHub
+
+
\ No newline at end of file
diff --git a/xojo/daily/index.xml b/xojo/daily/index.xml
index 9951f7166b7..30bbbd295cf 100644
--- a/xojo/daily/index.xml
+++ b/xojo/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Xojo Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:57Z
+ 2023-12-24T01:44:38Z
Daily Trending of Xojo in GitHub
\ No newline at end of file
diff --git a/xojo/weekly/index.xml b/xojo/weekly/index.xml
new file mode 100644
index 00000000000..75ece0b7f93
--- /dev/null
+++ b/xojo/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Xojo Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:04Z
+ Weekly Trending of Xojo in GitHub
+
+
\ No newline at end of file
diff --git a/xonsh/daily/index.xml b/xonsh/daily/index.xml
index f15293e75e1..842fa046ba2 100644
--- a/xonsh/daily/index.xml
+++ b/xonsh/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Xonsh Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:54Z
+ 2023-12-24T01:44:38Z
Daily Trending of Xonsh in GitHub
\ No newline at end of file
diff --git a/xonsh/weekly/index.xml b/xonsh/weekly/index.xml
new file mode 100644
index 00000000000..0a56b501214
--- /dev/null
+++ b/xonsh/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Xonsh Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:05Z
+ Weekly Trending of Xonsh in GitHub
+
+
\ No newline at end of file
diff --git a/xpages/daily/index.xml b/xpages/daily/index.xml
index 8b49dde36e6..195db082e75 100644
--- a/xpages/daily/index.xml
+++ b/xpages/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XPages Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:56Z
+ 2023-12-24T01:44:40Z
Daily Trending of XPages in GitHub
\ No newline at end of file
diff --git a/xpages/weekly/index.xml b/xpages/weekly/index.xml
new file mode 100644
index 00000000000..1a038ada022
--- /dev/null
+++ b/xpages/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XPages Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:04Z
+ Weekly Trending of XPages in GitHub
+
+
\ No newline at end of file
diff --git a/xproc/daily/index.xml b/xproc/daily/index.xml
index 7ca1347ddaf..79464771c0a 100644
--- a/xproc/daily/index.xml
+++ b/xproc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XProc Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:55Z
+ 2023-12-24T01:44:39Z
Daily Trending of XProc in GitHub
\ No newline at end of file
diff --git a/xproc/weekly/index.xml b/xproc/weekly/index.xml
new file mode 100644
index 00000000000..9f1031b3785
--- /dev/null
+++ b/xproc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XProc Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:06Z
+ Weekly Trending of XProc in GitHub
+
+
\ No newline at end of file
diff --git a/xquery/daily/index.xml b/xquery/daily/index.xml
index 7121c3b5311..38fd1598d3b 100644
--- a/xquery/daily/index.xml
+++ b/xquery/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XQuery Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:58Z
+ 2023-12-24T01:44:41Z
Daily Trending of XQuery in GitHub
\ No newline at end of file
diff --git a/xquery/weekly/index.xml b/xquery/weekly/index.xml
new file mode 100644
index 00000000000..3d592090bd9
--- /dev/null
+++ b/xquery/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XQuery Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:08Z
+ Weekly Trending of XQuery in GitHub
+
+
\ No newline at end of file
diff --git a/xs/daily/index.xml b/xs/daily/index.xml
index e4ba0d7a8d3..2c4615c12b9 100644
--- a/xs/daily/index.xml
+++ b/xs/daily/index.xml
@@ -1,7 +1,7 @@
GitHub XS Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:41:59Z
+ 2023-12-24T01:44:41Z
Daily Trending of XS in GitHub
\ No newline at end of file
diff --git a/xs/weekly/index.xml b/xs/weekly/index.xml
new file mode 100644
index 00000000000..f9e8fb1eea9
--- /dev/null
+++ b/xs/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XS Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:08Z
+ Weekly Trending of XS in GitHub
+
+
\ No newline at end of file
diff --git a/xslt/daily/index.xml b/xslt/daily/index.xml
index 75d4573bee7..a12a05d2078 100644
--- a/xslt/daily/index.xml
+++ b/xslt/daily/index.xml
@@ -1,21 +1,7 @@
GitHub XSLT Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:01Z
+ 2023-12-24T01:44:44Z
Daily Trending of XSLT in GitHub
-
- donald-ngo/donald
- 2023-12-23T01:42:01Z
- tag:github.com,2023-12-23:/donald-ngo/donald
-
- <p>Donald's Training Repo</p><hr><p>This repo will store my test code.</p>
-
-
- subugoe/Salvador
- 2023-12-23T01:42:01Z
- tag:github.com,2023-12-23:/subugoe/Salvador
-
- <p></p><hr><h1>This Repository isn't used anymore!</h1>
<h1>New URL</h1>
<p>The new Location of this repository is at <a href="https://gitlab.gwdg.de/subugoe/archaeo18/Salvador">GitLab</a>.</p>
<h1>Salvador - SUB Ant Library for Web Development</h1>
<p>#Introduction This is a Library of <a href="http://ant.apache.org/">Apache Ant</a> Tasks that might be useful for Web developers. The main purpose is the management of external tool dependencies, so you don't need to manage them by yourself. It is also able to use a embedded web server, precompile PHP files to static HTML and provides some Ruby tools like SASS and Compass.</p>
<p>#Modules Lockated in the 'modules' sub directory.</p>
<ul>
<li>scm.xml - Tasks for <a href="http://git-scm.com/">Git</a> and <a href="http://subversion.tigris.org/">Subversion</a>.</li>
<li>jetty.xml - Tasks for <a href="http://jetty.codehaus.org/jetty/">Jetty</a></li>
<li>javascript.xml - Several dependencies for JavaScript related development</li>
<li>jruby.xml - <a href="http://jruby.org/">JRuby</a> mainly used by sass.xml and compass.xml</li>
<li>compass.xml - <a href="http://compass-style.org/">Compass</a> CSS tools</li>
<li>sass.xml - <a href="http://sass-lang.com/">SASS</a> CSS tools</li>
<li>php.xml - Integrated <a href="http://quercus.caucho.com/">PHP</a> compiler</li>
<li>exist.xml - integration of <a href="http://www.exist-db.org/exist/apps/homepage/index.html">eXist</a> related tasks</li>
<li>tinypng.xml - integration of the <a href="http://tinypng.org/">TinyPNG</a> web service (you need a API key to use this)</li>
<li>jtidy.xml - integration of <a href="http://jtidy.sourceforge.net/">JTidy</a></li>
<li>groovy.xml - integration of <a href="http://groovy.codehaus.org/">Groovy</a></li>
<li>basex.xml - integration of <a href="http://basex.org/">BaseX</a></li>
</ul>
<p>##Unfinished modules</p>
<ul>
<li>envjs.xml - <a href="https://github.com/envjs/env-js">EnvJS</a> integration (not finished).</li>
<li>jekyll.xml - <a href="https://github.com/mojombo/jekyll">Jekyll</a> integration (doesn't work since stupid Jekyll relies on native crap)</li>
<li>webjar.xml - <a href="http://www.webjars.org/">Webjar</a> integration (not finished).</li>
</ul>
<p>#Usage ##Basics To use the libraries import the desired module in your Ant project:</p>
<blockquote>
<p><import file="./build/modules/jetty.xml"/></p>
</blockquote>
<p>Add the requested task as a dependency of your task:</p>
<blockquote>
<p><target name="war.run" depends="salvador.jetty.install"/></p>
</blockquote>
<p>Then either use the dependency declarations of your Ant tasks to get the functionality of the required tools and libraries (for dependency related tasks) or use the supplied macros for specific functionality. ##Naming of tasks</p>
<ul>
<li>Tasks containing "download" in their name, get the libraries and set up the classpath accordingly, you can use them to create your own macros.</li>
<li>Tasks containing "install" in their name rely on the download and set up macro definitions.</li>
</ul>
<p>##build.xml This is the base package of Salvador, it provides Maven tasks and Ant enhancements. ###Additional Tasks</p>
<ul>
<li>The target <strong>salvador.base.ant.httptask.install</strong> provides the <a href="http://code.google.com/p/missing-link/">Missing Link Ant HTTP Tasks</a></li>
<li>The target <strong>salvador.base.ant.contrib.install</strong> provides the <a href="http://ant-contrib.sourceforge.net/">Ant Contrib Tasks</a></li>
<li>The target <strong>salvador.base.maven.install</strong> provides the <a href="http://maven.apache.org/ant-tasks/">Maven Ant Tasks</a></li>
</ul>
<p>##scm.xml This file provides <a href="http://git-scm.com/">Git</a> and <a href="http://subversion.tigris.org/">Subversion</a> integration. ###Additional Tasks</p>
<ul>
<li>User the target <strong>salvador.scm.jgit.install</strong> to get the <a href="http://wiki.eclipse.org/JGit/User_Guide#Ant_Tasks">JGIT Ant Tasks</a></li>
</ul>
<p>###Macros</p>
<ul>
<li><strong>salvador.scm.svn.co</strong>, part of the target <strong>salvador.scm.svn.install</strong>, takes the attributes '<em>url</em>' and '<em>todir</em>' to check out the latest revision of a subersion retository.</li>
</ul>
<p>##jetty.xml This file provides <a href="http://jetty.codehaus.org/jetty/">Jetty</a> integration. ###Additional Tasks</p>
<ul>
<li>The target <strong>salvador.jetty.install</strong> provides the <a href="http://www.eclipse.org/jetty/documentation/current/jetty-ant.html">Jetty 9 Ant Tasks</a></li>
</ul>
<p>###Macros</p>
<ul>
<li>The target <strong>salvador.jetty.install</strong> also provides the macro <strong>salvador.jetty.run</strong>: It takes the attributes '<em>path</em>', '<em>webxml</em>' (might be empty), '<em>port</em>' (default: 8080) and '<em>contextpath</em>' (default: /ant). This is a wrapper around the <jetty> task, it will scan for changes ever 5 seconds.</li>
</ul>
<p>##javascript.xml This file provides several JavaScript tools. ###Additional Tasks</p>
<ul>
<li>The target <strong>salvador.js.jsdoctoolkit.install</strong> provides the <a href="https://github.com/ironsidevsquincy/jsdoc-toolkit-ant-task">JSDoc Ant Tasks</a></li>
</ul>
<p>###Macros The target <strong>salvador.js.yui.install</strong> provides the following <a href="http://yuilibrary.com/">YUI</a> tasks:</p>
<ul>
<li><strong>salvador.js.yui.compress.js</strong>: Takes a '<em>src</em>' and '<em>destfile</em>' attribute and compress a JS file.</li>
<li><strong>salvador.js.yui.compress.css</strong>: Takes a '<em>src</em>' and '<em>destfile</em>' attribute and compress a CSS file.</li>
</ul>
<p>##jruby.xml This file provides <a href="http://jruby.org/">JRuby</a>. I's mainly used by SASS and Compass, but can also be used to get access to other Ruby Gems. It operate on an internal JRuby distribution, not the one provided by your system. ###Macros The target <strong>salvador.jruby.gems</strong> provides two macros:</p>
<ul>
<li><strong>salvador.jruby.gem.check</strong> checks if the ruby Gem given by the attribute '<em>gem</em>' is installed. Check the property <strong>salvador.jruby.gem.check.return.code</strong> for the value '<em>0</em>' (zero).</li>
<li><strong>salvador.jruby.gem.install</strong> installs the ruby Gem given by the attribute '<em>gem</em>'</li>
</ul>
<p>##compass.xml This file provides <a href="http://compass-style.org/">Compass</a> related tasks. ###Macros</p>
<ul>
<li>The target <strong>salvador.sass.install</strong> provides the macro <strong>salvador.sass.compile.watch</strong>. It takes two attributes '<em>src</em>' and '<em>dest</em>'. It watches the '<em>src</em>' directory and writes changes to the '<em>dest</em>' directory using the poll method.</li>
</ul>
<p>##sass.xml This file provides <a href="http://sass-lang.com/">SASS</a> related tasks. ###Macros The target <strong>salvador.sass.macros</strong> provides the following macros:</p>
<ul>
<li><strong>salvador.sass.convert.watch</strong>: It takes two attributes '<em>src</em>' and '<em>dest</em>'. It watches the '<em>src</em>' directory and writes changes to the '<em>dest</em>' directory using the poll method.</li>
<li><strong>salvador.sass.convert</strong>: It takes two attributes '<em>src</em>' and '<em>destfile</em>'. It converts the '<em>src</em>' file and writes the result to '<em>destfile</em>'.</li>
<li><strong>salvador.sass.convert.dir</strong>: It takes two attributes '<em>refid</em>' and '<em>todir</em>'. It converts the fileSet given by the reference '<em>refid</em>' file and writes the result to '<em>todir</em>' using <strong>salvador.sass.convert</strong>.</li>
</ul>
<p>##php.xml This file provides an <a href="http://php.net/">PHP</a> <a href="http://quercus.caucho.com/">compiler</a>. ###Macros</p>
<ul>
<li>The target <strong>salvador.tinypng.macros</strong> provides the macros:</li>
<li><strong>salvador.php.compile</strong>: Takes a '<em>src</em>' and '<em>destfile</em>' attribute, compiles PHP files to static HTML (or whatever the PHP file emits)</li>
<li><strong>salvador.php.compile.dir</strong>: It takes three attributes '<em>refid</em>', '<em>todir</em>' and suffix (default ".html"). It converts the fileSet given by the reference '<em>refid</em>' file and writes the result to '<em>todir</em>' using <strong>salvador.php.compile</strong>, use another '<em>suffix</em>' if the results shouldn't end with html.</li>
</ul>
<p>##exist.xml This file provides integration of <a href="http://www.exist-db.org/exist/apps/homepage/index.html">eXist</a>.</p>
<p><strong>Warning</strong>: this takes some time on the first usage, since it needs to fetch a complete eXist distribution. ###Additional Tasks</p>
<ul>
<li>The target <strong>salvador.exist.install</strong> provides the <a href="http://www.exist-db.org/exist/apps/doc/ant-tasks.xml">eXist Ant Tasks</a></li>
</ul>
<p>##tinypng.xml This file provides integration of the <a href="http://tinypng.org/">TinyPNG</a> web service.</p>
<p><strong>Note</strong>: You need a API key to use this ###Macros</p>
<ul>
<li>The target <strong>salvador.tinypng.macros</strong> provides the macros:</li>
<li><strong>salvador.tinypng.compress</strong>: It takes a '<em>src</em>' and '<em>destfile</em>' attribute, sends the provided image to TinyPNG and saves the result. Make sure you set the property <strong>salvador.tinypng.apikey</strong>, containing your API key.</li>
<li><strong>salvador.tinypng.compress.dir</strong>: It takes two attributes '<em>refid</em>' and '<em>todir</em>'. It converts the fileSet given by the reference '<em>refid</em>' file and writes the result to '<em>todir</em>' using <strong>salvador.tinypng.compress</strong>.</li>
</ul>
<p>##jtidy.xml This file provides integration of <a href="http://jtidy.sourceforge.net/">JTidy</a>. ###Additional Tasks</p>
<ul>
<li>The target <strong>salvador.jtidy.install</strong> provides the <a href="http://jtidy.sourceforge.net/apidocs/org/w3c/tidy/ant/JTidyTask.html">JTidy Ant Tasks</a>.</li>
</ul>
<p>##groovy.xml This file provides integration of of <a href="http://groovy.codehaus.org/">Groovy</a>. ###Additional Tasks</p>
<ul>
<li>The target <strong>salvador.groovy.install</strong> provides the <a href="http://groovy.codehaus.org/The+groovy+Ant+Task">Groovy Ant Tasks</a></li>
</ul>
<p>##basex.xml This file provides integration of <a href="http://basex.org/">BaseX</a>. ###Macros</p>
<ul>
<li>The macro <strong>salvador.basex.download</strong> downloads BaseX and sets a classpath for integration.</li>
</ul>
<p>#Examples This section provides some examples.</p>
<h2>Running a web application with Jetty and Compass</h2>
<p>Make sure you import the required modules:</p>
<blockquote>
<p><import file="./build/modules/jetty.xml"/></p>
</blockquote>
<blockquote>
<p><import file="./build/modules/compass.xml"/></p>
</blockquote>
<p>#Development In the test directory is a test.xml which can by run by</p>
<blockquote>
<p>ant -f test/test.xml</p>
</blockquote>
<p>It calls every target configured, if you add a module create a target for it in test.xml, to be sure that every target works without any arguments.</p>
-
\ No newline at end of file
diff --git a/xslt/weekly/index.xml b/xslt/weekly/index.xml
new file mode 100644
index 00000000000..44bfd134215
--- /dev/null
+++ b/xslt/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub XSLT Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:10Z
+ Weekly Trending of XSLT in GitHub
+
+
\ No newline at end of file
diff --git a/xtend/daily/index.xml b/xtend/daily/index.xml
index a4e2b523dfa..c49715dc3be 100644
--- a/xtend/daily/index.xml
+++ b/xtend/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Xtend Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:00Z
+ 2023-12-24T01:44:42Z
Daily Trending of Xtend in GitHub
\ No newline at end of file
diff --git a/xtend/weekly/index.xml b/xtend/weekly/index.xml
new file mode 100644
index 00000000000..e7b0cf96337
--- /dev/null
+++ b/xtend/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Xtend Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:07Z
+ Weekly Trending of Xtend in GitHub
+
+
\ No newline at end of file
diff --git a/yacc/daily/index.xml b/yacc/daily/index.xml
index 4b6750f2f35..8b46bbf36ca 100644
--- a/yacc/daily/index.xml
+++ b/yacc/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Yacc Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:05Z
+ 2023-12-24T01:44:46Z
Daily Trending of Yacc in GitHub
\ No newline at end of file
diff --git a/yacc/weekly/index.xml b/yacc/weekly/index.xml
new file mode 100644
index 00000000000..81fc078a1ce
--- /dev/null
+++ b/yacc/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Yacc Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:11Z
+ Weekly Trending of Yacc in GitHub
+
+
\ No newline at end of file
diff --git a/yaml/daily/index.xml b/yaml/daily/index.xml
index f001289c2d0..ead417c7977 100644
--- a/yaml/daily/index.xml
+++ b/yaml/daily/index.xml
@@ -1,7 +1,7 @@
GitHub YAML Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:06Z
+ 2023-12-24T01:44:48Z
Daily Trending of YAML in GitHub
\ No newline at end of file
diff --git a/yaml/weekly/index.xml b/yaml/weekly/index.xml
new file mode 100644
index 00000000000..f9826885285
--- /dev/null
+++ b/yaml/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub YAML Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:12Z
+ Weekly Trending of YAML in GitHub
+
+
\ No newline at end of file
diff --git a/yang/daily/index.xml b/yang/daily/index.xml
index 4e754985a83..d847990b773 100644
--- a/yang/daily/index.xml
+++ b/yang/daily/index.xml
@@ -1,7 +1,7 @@
GitHub YANG Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:03Z
+ 2023-12-24T01:44:46Z
Daily Trending of YANG in GitHub
\ No newline at end of file
diff --git a/yang/weekly/index.xml b/yang/weekly/index.xml
new file mode 100644
index 00000000000..4b8a5b072d7
--- /dev/null
+++ b/yang/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub YANG Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:13Z
+ Weekly Trending of YANG in GitHub
+
+
\ No newline at end of file
diff --git a/yara/daily/index.xml b/yara/daily/index.xml
index 05e31a9eaf5..cd6344e4496 100644
--- a/yara/daily/index.xml
+++ b/yara/daily/index.xml
@@ -1,7 +1,7 @@
GitHub YARA Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:04Z
+ 2023-12-24T01:44:47Z
Daily Trending of YARA in GitHub
\ No newline at end of file
diff --git a/yara/weekly/index.xml b/yara/weekly/index.xml
new file mode 100644
index 00000000000..c58565e26d3
--- /dev/null
+++ b/yara/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub YARA Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:14Z
+ Weekly Trending of YARA in GitHub
+
+
\ No newline at end of file
diff --git a/yasnippet/daily/index.xml b/yasnippet/daily/index.xml
index 10d740803b8..622e4ffb20d 100644
--- a/yasnippet/daily/index.xml
+++ b/yasnippet/daily/index.xml
@@ -1,7 +1,7 @@
GitHub YASnippet Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:07Z
+ 2023-12-24T01:44:51Z
Daily Trending of YASnippet in GitHub
\ No newline at end of file
diff --git a/yasnippet/weekly/index.xml b/yasnippet/weekly/index.xml
new file mode 100644
index 00000000000..d065c11fcc5
--- /dev/null
+++ b/yasnippet/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub YASnippet Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:15Z
+ Weekly Trending of YASnippet in GitHub
+
+
\ No newline at end of file
diff --git a/zap/daily/index.xml b/zap/daily/index.xml
index 03a4f431051..73eed881d4b 100644
--- a/zap/daily/index.xml
+++ b/zap/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ZAP Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:08Z
+ 2023-12-24T01:44:50Z
Daily Trending of ZAP in GitHub
\ No newline at end of file
diff --git a/zap/weekly/index.xml b/zap/weekly/index.xml
new file mode 100644
index 00000000000..bd8ea59b05b
--- /dev/null
+++ b/zap/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ZAP Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:16Z
+ Weekly Trending of ZAP in GitHub
+
+
\ No newline at end of file
diff --git a/zeek/daily/index.xml b/zeek/daily/index.xml
index 9e46436c70b..0485164eb6b 100644
--- a/zeek/daily/index.xml
+++ b/zeek/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Zeek Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:09Z
+ 2023-12-24T01:44:52Z
Daily Trending of Zeek in GitHub
\ No newline at end of file
diff --git a/zeek/weekly/index.xml b/zeek/weekly/index.xml
new file mode 100644
index 00000000000..339fb103a2a
--- /dev/null
+++ b/zeek/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Zeek Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:17Z
+ Weekly Trending of Zeek in GitHub
+
+
\ No newline at end of file
diff --git a/zenscript/daily/index.xml b/zenscript/daily/index.xml
index 4d4e94932c8..31fc929eec8 100644
--- a/zenscript/daily/index.xml
+++ b/zenscript/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ZenScript Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:12Z
+ 2023-12-24T01:44:55Z
Daily Trending of ZenScript in GitHub
\ No newline at end of file
diff --git a/zenscript/weekly/index.xml b/zenscript/weekly/index.xml
new file mode 100644
index 00000000000..1ee1a45cfbb
--- /dev/null
+++ b/zenscript/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ZenScript Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:20Z
+ Weekly Trending of ZenScript in GitHub
+
+
\ No newline at end of file
diff --git a/zephir/daily/index.xml b/zephir/daily/index.xml
index 91ba8c21056..30d34f978ab 100644
--- a/zephir/daily/index.xml
+++ b/zephir/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Zephir Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:11Z
+ 2023-12-24T01:44:53Z
Daily Trending of Zephir in GitHub
\ No newline at end of file
diff --git a/zephir/weekly/index.xml b/zephir/weekly/index.xml
new file mode 100644
index 00000000000..c5df1a5b0d9
--- /dev/null
+++ b/zephir/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Zephir Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:18Z
+ Weekly Trending of Zephir in GitHub
+
+
\ No newline at end of file
diff --git a/zig/daily/index.xml b/zig/daily/index.xml
index 58b369db479..856f92edc81 100644
--- a/zig/daily/index.xml
+++ b/zig/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Zig Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:13Z
+ 2023-12-24T01:44:55Z
Daily Trending of Zig in GitHub
\ No newline at end of file
diff --git a/zig/weekly/index.xml b/zig/weekly/index.xml
new file mode 100644
index 00000000000..b3c5fbcd657
--- /dev/null
+++ b/zig/weekly/index.xml
@@ -0,0 +1,14 @@
+
+ GitHub Zig Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:21Z
+ Weekly Trending of Zig in GitHub
+
+
+ kristoff-it/zine
+ 2023-12-24T02:02:21Z
+ tag:github.com,2023-12-24:/kristoff-it/zine
+
+ <p>A static website generator built on top of `zig build`</p><hr>
+
+
\ No newline at end of file
diff --git a/zil/daily/index.xml b/zil/daily/index.xml
index 7bc5a9c6d35..8d24399329e 100644
--- a/zil/daily/index.xml
+++ b/zil/daily/index.xml
@@ -1,7 +1,7 @@
GitHub ZIL Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:14Z
+ 2023-12-24T01:44:53Z
Daily Trending of ZIL in GitHub
\ No newline at end of file
diff --git a/zil/weekly/index.xml b/zil/weekly/index.xml
new file mode 100644
index 00000000000..644c6597c17
--- /dev/null
+++ b/zil/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub ZIL Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:19Z
+ Weekly Trending of ZIL in GitHub
+
+
\ No newline at end of file
diff --git a/zimpl/daily/index.xml b/zimpl/daily/index.xml
index 8c18f364dd0..aa47ec9fd23 100644
--- a/zimpl/daily/index.xml
+++ b/zimpl/daily/index.xml
@@ -1,7 +1,7 @@
GitHub Zimpl Daily Trending
http://mshibanami.github.io/GitHubTrendingRSS
- 2023-12-23T01:42:15Z
+ 2023-12-24T01:44:57Z
Daily Trending of Zimpl in GitHub
\ No newline at end of file
diff --git a/zimpl/weekly/index.xml b/zimpl/weekly/index.xml
new file mode 100644
index 00000000000..de36ac51df9
--- /dev/null
+++ b/zimpl/weekly/index.xml
@@ -0,0 +1,7 @@
+
+ GitHub Zimpl Weekly Trending
+ http://mshibanami.github.io/GitHubTrendingRSS
+ 2023-12-24T02:02:22Z
+ Weekly Trending of Zimpl in GitHub
+
+
\ No newline at end of file