143 Commits

Author SHA1 Message Date
Ciro Santilli
54a5acf0c1 bump package version 2021-07-21 18:52:46 +01:00
Ciro Santilli
a1a86df66b Rename intermediate file README.body.html -> body.html to try and prevent inclusion in NPM package, so invasive 2021-07-21 18:52:13 +01:00
Ciro Santilli
d269023ce8 grandma wong 2021-07-17 23:58:33 +01:00
Ciro Santilli
16b8dda951 core values license 2021-07-15 09:10:12 +01:00
Ciro Santilli
468590548a core values up 2021-07-15 09:06:33 +01:00
Ciro Santilli
b761a2b6c7 Core_socialist_values.jpg 2021-07-15 09:04:52 +01:00
Ciro Santilli
928199a62a action bug 2021-07-13 12:56:31 +01:00
Ciro Santilli
372645612e meant to be used automation 2021-07-12 09:47:20 +01:00
Ciro Santilli
45b99fac87 better description 2021-07-11 12:05:59 +01:00
Ciro Santilli
26a0334a9b core socialist values 2021-07-06 11:55:25 +01:00
Ciro Santilli
d191dd49d6 anonymous middle fingers 2021-07-01 18:21:59 +01:00
Ciro Santilli
554fec0ed8 bug2 2021-06-30 08:42:52 +01:00
Ciro Santilli
7b0368e9ee bug 2021-06-30 08:41:24 +01:00
Ciro Santilli
13b7c7864c OK, comments should work now 2021-06-30 08:39:34 +01:00
Ciro Santilli
ae6d92f4f8 quick issue_comment trial 2021-06-30 08:30:25 +01:00
Ciro Santilli
e4dee73cfc woke global times 2021-06-28 15:30:14 +01:00
Ciro Santilli
2ab961ad17 more food 2021-06-28 14:29:09 +01:00
Ciro Santilli
ece35cb8d7 uyghur knives 2021-06-23 20:07:52 +01:00
Ciro Santilli
dd7840ac37 to 11 2021-06-23 19:19:05 +01:00
Ciro Santilli
e3258da4a7 george floyd protests 2021-06-21 19:17:35 +01:00
Ciro Santilli
11aea9b147 so pro-ccp dude 2021-06-21 14:41:32 +01:00
Ciro Santilli
64346d95b1 we-dont-hire-blacks-by-aaron-dewitt-2020 2021-06-21 13:35:22 +01:00
Ciro Santilli
12f6100c7e improve programthink 2021-06-20 10:26:24 +01:00
Ciro Santilli
2aa6c1147a dual use bread 2021-06-19 19:52:16 +01:00
Ciro Santilli
74f1be90ea add some scarfolk images 2021-06-18 10:40:25 +01:00
Ciro Santilli
77bca3f15b improve shitpost 2021-06-18 08:42:31 +01:00
Ciro Santilli
261e2c7ce7 stuff 2021-06-17 09:16:25 +01:00
Ciro Santilli
06e4e2396f leiroc issue 2021-06-07 11:22:15 +01:00
Ciro Santilli
953302f143 stack-exchange-lost-freedom-of-speech.md 2021-06-07 11:07:13 +01:00
Ciro Santilli
5f31cd9bf0 黑科技 2021-06-05 01:00:00 +00:00
Ciro Santilli
f576931f77 Baidu baike censorship screenshot 2021-06-03 01:00:00 +00:00
Ciro Santilli
2f15814657 xi porn begin 2021-05-28 01:00:00 +00:00
Ciro Santilli
0dcf692c47 radio jamming 2021-05-27 03:00:02 +00:00
Ciro Santilli
9e6e49df61 contributing 2021-05-27 02:00:01 +00:00
Ciro Santilli
e6aaf66091 french nazi 2021-05-27 01:00:00 +00:00
Ciro Santilli
d7f3b546ad Hitler has only got one ball 2021-05-23 03:00:02 +00:00
Ciro Santilli
e983afb0bd better action 2021-05-23 02:00:01 +00:00
Ciro Santilli
b341695cd9 harry harrison 2021-05-23 01:00:00 +00:00
Ciro Santilli
0e6f6711c2 bump package version 2021-05-20 04:00:03 +00:00
Ciro Santilli
5a2d15aeb4 improve cdn mirrors 2021-05-20 03:00:02 +00:00
Ciro Santilli
80080eae1b templates 2021-05-20 02:00:01 +00:00
Ciro Santilli
17f6019c9a more 2021-05-20 01:00:00 +00:00
Ciro Santilli
e3135163b9 objectionable 2021-05-19 03:00:02 +00:00
Ciro Santilli
566e348082 cant complain zh 2021-05-19 02:00:01 +00:00
Ciro Santilli
7edc3863d8 flg cannon trump 2021-05-19 01:00:00 +00:00
Ciro Santilli
40fb936400 update ga for real 2021-05-18 02:00:01 +00:00
Ciro Santilli
77dda8520a ua analytics 2021-05-18 01:00:00 +00:00
Ciro Santilli
f2f579f153 fix Jiang_Zemin_magnify.jpg case 2021-05-15 02:00:01 +00:00
Ciro Santilli
3006dc6600 gitlab analytics 2021-05-15 01:00:00 +00:00
Ciro Santilli
15e81249ee burn 2021-05-14 02:00:01 +00:00
Ciro Santilli
b9f585157d xinjiang map 2021-05-14 01:00:00 +00:00
Ciro Santilli
10e3fec980 more 2021-05-13 01:00:00 +00:00
Ciro Santilli
dd2446d3a4 test 2021-05-11 02:00:01 +00:00
Ciro Santilli
8831528abe cinitalia 2021-05-11 01:00:00 +00:00
Ciro Santilli
f58a3ddfc1 Jerry Goode 2021-05-10 02:00:01 +00:00
Ciro Santilli
d32f5c2416 more 2021-05-10 01:00:00 +00:00
Ciro Santilli
ca3a78c2e4 stuff 2021-05-07 01:00:00 +00:00
Ciro Santilli
9b5e1badd4 lusiadas 2021-05-06 03:00:02 +00:00
Ciro Santilli
cb07a64e57 Reject accept 2021-05-06 02:00:01 +00:00
Ciro Santilli
3f07b46c68 Saebyeolbe 2021-05-06 01:00:00 +00:00
Ciro Santilli
f191be4534 images.js 2021-05-05 02:00:01 +00:00
Ciro Santilli
5b8e11f055 gay medvedev 2021-05-05 01:00:00 +00:00
Ciro Santilli
6532066a74 Improve some image sizes 2021-05-04 02:00:01 +00:00
Ciro Santilli
e26eca6726 suwu and pla 2021-05-04 01:00:00 +00:00
Ciro Santilli
fc82eec6f6 ww2 radio propaganda 2021-05-03 01:00:00 +00:00
Ciro Santilli
c1d763a5f2 better call saul 2021-05-02 07:00:06 +00:00
Ciro Santilli
e7510f8e2f Kuang biao trump twitter 2021-05-02 06:00:05 +00:00
Ciro Santilli
f7b7e12ef0 use vpn 2021-05-02 05:00:04 +00:00
Ciro Santilli
c4d5d9be1b actually use image 2 2021-05-02 04:00:03 +00:00
Ciro Santilli
df8e4c950a actually use image 2021-05-02 03:00:02 +00:00
Ciro Santilli
d4917fb7a2 immoral en 2021-05-02 02:00:01 +00:00
Ciro Santilli
11f5041b43 action: prevent duplicate urls 2021-05-02 01:00:00 +00:00
Ciro Santilli
3f9090d712 image names 2 2021-05-01 07:00:06 +00:00
Ciro Santilli
92d18215ec action: also add image names 2021-05-01 06:00:05 +00:00
Ciro Santilli
df0ad49448 issue template 2021-05-01 05:00:04 +00:00
Ciro Santilli
49acd47286 shitpost template 2021-05-01 04:00:03 +00:00
Ciro Santilli
bd826ec602 basecamp 2021-05-01 03:00:02 +00:00
Ciro Santilli
062785ebb8 censored tankman 2021-05-01 02:00:01 +00:00
Ciro Santilli
7a7463fc34 stack overflow placeholder image 2021-05-01 01:00:00 +00:00
Ciro Santilli
713d26ab8c clarify mirrors 2021-04-29 03:00:02 +00:00
Ciro Santilli
f9c2eb1171 push-pages -> push 2021-04-29 02:00:01 +00:00
Ciro Santilli
4591ac4db7 gitlab use self contained images 2021-04-29 01:00:00 +00:00
Ciro Santilli
cfa50ceb80 again 2021-04-28 15:00:14 +00:00
Ciro Santilli
1c3a92221d again 2021-04-28 14:00:13 +00:00
Ciro Santilli
c11b27ced9 public... 2021-04-28 13:00:12 +00:00
Ciro Santilli
6a4f5c531e refix p 2021-04-28 12:00:11 +00:00
Ciro Santilli
c52acd518f again 2021-04-28 11:00:10 +00:00
Ciro Santilli
0c4c0b7d7c retry 2021-04-28 10:00:09 +00:00
Ciro Santilli
f85da61a7a test 2021-04-28 09:00:08 +00:00
Ciro Santilli
bb85866e33 depth 1 2021-04-28 08:00:07 +00:00
Ciro Santilli
96e9a9429e give up? 2021-04-28 07:00:06 +00:00
Ciro Santilli
542876df31 desperation 2 2021-04-28 06:00:05 +00:00
Ciro Santilli
7c14442f20 desperation 2021-04-28 05:00:04 +00:00
Ciro Santilli
560aeabad1 gitlab pages 2 2021-04-28 04:00:03 +00:00
Ciro Santilli
2d9a46451c gitlab pages 2021-04-28 03:00:02 +00:00
Ciro Santilli
b8b6eb2ef6 images host on cirosantilli.com. Not really. 2021-04-28 02:00:01 +00:00
Ciro Santilli
0b499e70ba op-does-not-know-what-shit-is 2021-04-28 01:00:00 +00:00
Ciro Santilli
3f206f5d8c more 2021-04-26 02:00:01 +00:00
Ciro Santilli
574c6fb8f3 Raz Gal-Or 2021-04-26 01:00:00 +00:00
Ciro Santilli
4dd0822780 wokeglobaltimes 2021-04-22 01:00:00 +00:00
Ciro Santilli
658ade547b navalny 2021-04-21 02:00:01 +00:00
Ciro Santilli
dee84befac shanghai lesbians 2021-04-21 01:00:00 +00:00
Ciro Santilli
4a5ffd4490 Fix Ubumbara link, fix https://github.com/cirosantilli/china-dictatorship/issues/262 2021-04-20 01:00:00 +00:00
Ciro Santilli
97408314e8 jasic 2021-04-19 04:00:03 +00:00
Ciro Santilli
ce66bf369e warning fixes 2021-04-19 03:00:02 +00:00
Ciro Santilli
c2bb903bbd Create anonymous account 2021-04-19 02:00:01 +00:00
Ciro Santilli
dd84520051 holocaust denial 2021-04-19 01:00:00 +00:00
Ciro Santilli
d6b61ce3ce action actually dont need link github already autolinks!!! 2021-04-18 04:00:03 +00:00
Ciro Santilli
fb34ee1627 malchenko 2021-04-18 03:00:02 +00:00
Ciro Santilli
15380b2617 bot link to images as well 2021-04-18 02:00:01 +00:00
Ciro Santilli
9cc4e39537 cac report 2021-04-18 01:00:00 +00:00
Ciro Santilli
30852a3286 amnesty 2021-04-17 02:00:01 +00:00
Ciro Santilli
af0154f14d limit quote to 40k chars 2021-04-17 01:00:00 +00:00
Ciro Santilli
94d02ac19b labels++ 2021-04-16 17:00:16 +00:00
Ciro Santilli
79b7b5b8fe label 2021-04-16 16:00:15 +00:00
Ciro Santilli
d1b756ab2a advance 2021-04-16 15:00:14 +00:00
Ciro Santilli
982328f3bc bak 2021-04-16 14:00:13 +00:00
Ciro Santilli
4ac4f58ceb bak 2021-04-16 13:00:12 +00:00
Ciro Santilli
ea253ceb45 bak 2021-04-16 12:00:11 +00:00
Ciro Santilli
dcbe142cb0 another 2021-04-16 11:00:10 +00:00
Ciro Santilli
e7ca4de171 bak 2021-04-16 10:00:09 +00:00
Ciro Santilli
8fd78afdbd bak 2021-04-16 09:00:08 +00:00
Ciro Santilli
874eb1d22f bak 2021-04-16 08:00:07 +00:00
Ciro Santilli
efb2ff90e0 v2 2021-04-16 07:00:06 +00:00
Ciro Santilli
3dde5208fe token attempt 2021-04-16 06:00:05 +00:00
Ciro Santilli
1860c9558c js port.... 2021-04-16 05:00:04 +00:00
Ciro Santilli
6c26a43657 checkout 2021-04-16 04:00:03 +00:00
Ciro Santilli
5ef41d531a workflow test 2021-04-16 03:00:02 +00:00
Ciro Santilli
9b1b23820a merge cirosantilli-media-base into china-dictatorship-media 2021-04-16 02:00:01 +00:00
Ciro Santilli
7fb5d39de8 warning to mainlanders 2021-04-16 01:00:00 +00:00
Ciro Santilli
0b689d6ff1 master issues 2021-04-15 02:00:01 +00:00
Ciro Santilli
23757224b1 stuff 2021-04-15 01:00:00 +00:00
Ciro Santilli
591b520dba chinse dream vs american dream 2021-04-14 02:00:01 +00:00
Ciro Santilli
8a6f216396 qiangguo 2021-04-14 01:00:00 +00:00
Ciro Santilli
2bd91d1f92 supereffective 2021-04-13 03:00:02 +00:00
Ciro Santilli
1a52c41c2d taihu church 2021-04-13 02:00:01 +00:00
Ciro Santilli
435bd02af5 stuff 2021-04-13 01:00:00 +00:00
Ciro Santilli
b8235edd09 Xinjiang socialist core values 2021-04-11 01:00:00 +00:00
Ciro Santilli
05906a6136 Tang Wenzheng 2021-04-10 03:00:02 +00:00
Ciro Santilli
58805dd6db china digital times 2021-04-10 02:00:01 +00:00
Ciro Santilli
b6370de36b Fuck-XueXiQiangGuo 2021-04-10 01:00:00 +00:00
Ciro Santilli
6b5efa31df A bit more Taiwan 2021-04-07 02:00:01 +00:00
Ciro Santilli
cacdbddf01 Falun_Gong_sky_advertisement.jpg -> Falun_Gong_sky_leaflet.jpg 2021-04-07 01:00:00 +00:00
23 changed files with 41375 additions and 1001 deletions

View File

@@ -1,6 +1,6 @@
---
name: not-shitpost
about: I am going to say something that is either informative, polite, funny, or praising Ciro Santilli.
name: not-shitpost不是屎帖子
about: 我要说的或者是信息丰富的或者有礼貌的或者说表扬三西猴的FAQ已经读了一下。 I am going to say something that is either informative, polite, funny, or praising Ciro Santilli. I already had a look at the FAQ.
title: ''
labels: not-shitpost
assignees: ''

View File

@@ -1,6 +1,6 @@
---
name: shitpost
about: "None of the above: https://github.com/cirosantilli/china-dictatorship/tree/bc6c3b893fe5e59c402c54bd47fe3d9fe76bc563#shitpost"
name: shitpost屎帖子
about: "None of the above, 我是小粉红我有小鸡鸡要说狗屎。傻逼NMSL。习近平是我的大师傅习万岁希特勒万岁卐卐卐卐卐卐卐卐卐 https://github.com/cirosantilli/china-dictatorship/tree/bc6c3b893fe5e59c402c54bd47fe3d9fe76bc563#shitpost"
title: ''
labels: shitpost
assignees: ''

25
.github/workflows/issue.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Issue
on:
issues:
types: [opened]
issue_comment:
types: [created]
jobs:
Issue:
runs-on: ubuntu-20.04
steps:
- run: echo "github.event_name ${{ github.event_name }}"
- run: echo "github.ref ${{ github.ref }}"
- run: echo "github.repository ${{ github.repository }}"
- run: echo "github.workspace ${{ github.workspace }}"
- run: echo "runner.os ${{ runner.os }}"
- run: pwd
- name: Check out repository code
uses: actions/checkout@v2
- run: npm install
- run: ls "${{ github.workspace }}"
- name: Main work
env:
GITHUB_TOKEN: ${{ github.token }}
run: "${{ github.workspace }}/action.js"
- run: echo "job.status ${{ job.status }}."

6
.gitignore vendored
View File

@@ -1,5 +1,5 @@
/README.html
/README.body.html
/body.html
/out
# NPM README
@@ -20,3 +20,7 @@ tmp.*
# For stupid packaging systems that require subdirectories.
/china_dictatorship/README.adoc
/china_dictatorship/README.html
node_modules
GitHub-Chinese-Top-Charts

12
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,12 @@
image: alpine:latest
pages:
stage: deploy
script:
- ls
artifacts:
paths:
- public
expire_in: 1 day
only:
- gl-pages

View File

@@ -2,19 +2,17 @@
Forbidden:
- at mention @cirosantilli (or other unsubscribed users) unless there is moderation need.
- don't at mention @cirosantilli (or other unsubscribed users) unless there is moderation need.
If Ciro unsubscribed from a thread, it means that he does not want to reply there anymore.
Create a new issues instead if you are arriving at a thread created by someone else and a have a new relevant point.
- [Evil West](https://cirosantilli.com/china-dictatorship#evil-west) posts are OK, but they *must* explain why you think a dictatorship would better solve the problem.
- don't close your tickets, only @cirosantilli can decide open/close status.
Further rationale at: https://cirosantilli.com/china-dictatorship#bias
Don't vandalize your titles and post bodies after posting, only @cirosantilli can do that.
- generate lots of notifications that don't teach people anything new.
Notably, Ciro will follow this repository at all times, and therefore creating new issues mean generating a notification to Ciro.
- don't create more than one boring shitpost issues
If you want to create one shitpost, even if boring and stupid to vent your rage, fine, Ciro doesn't have any problem with that and is happy to help.
@@ -34,18 +32,24 @@ Forbidden:
But as long as you follow our [shitiquette](https://en.wikipedia.org/wiki/Etiquette), you should be fine.
- [Evil West](https://cirosantilli.com/china-dictatorship#evil-west) posts are OK, but they *must* explain why you think a dictatorship would better solve the problem.
Further rationale at: https://cirosantilli.com/china-dictatorship#bias
- swearing/being very aggressive on a [`not-shitpost`](https://cirosantilli.com/china-dictatorship#shitpost) post.
Keep in mind that [Ciro's Chinese sucks](https://cirosantilli.com/china-dictatorship#does-ciro-santilli-speak-chinese), so he may not get the full nuance of your comment, especially if you use a ton of [slang](https://cirosantilli.com/china-dictatorship#slang).
On `shitpost` posts however, you can be as aggressive as you want.
Punitive measures, from least serious to most serious:
- if you make a comment and delete, people who received notifications can still find your username: https://github.com/isaacs/github/issues/1833#issuecomment-660128741 so think twice before doing that on a non-shitpost thread that Ciro is subscribed to.
Shitposting and owning up to it is one thing, but shitposting, generating notifications, and being a coward by immediately deleting your comment, makes you getting blocked much more likely.
On `shitpost` posts however, you can be as aggressive as you want.
- if you create an issue and then block cirosantilli, you will be blocked too in return. The label is: [op-blocked-ciro](https://github.com/cirosantilli/china-dictatorship/labels/op-blocked-ciro)
Punitive measures, from least serious to most serious:
- block user on one website. This may have the unintended side effect of deleting previous useful comments the user made on the websites.
- delete comment or vandalize the user's post.

View File

@@ -2,7 +2,7 @@
OUT = README.html
HEAD = head.html
BODY = README.body.html
BODY = body.html
FOOT = foot.html
MEDIA =

File diff suppressed because it is too large Load Diff

175
action.js Executable file
View File

@@ -0,0 +1,175 @@
#!/usr/bin/env node
const fs = require('fs');
const readline = require('readline');
const core = require('@actions/core');
const github = require('@actions/github');
// https://stackoverflow.com/questions/19269545/how-to-get-a-number-of-random-elements-from-an-array/19270021#19270021
function getRandom(arr, n) {
var result = new Array(n),
len = arr.length,
taken = new Array(len);
if (n > len)
throw new RangeError("getRandom: more elements taken than available");
while (n--) {
var x = Math.floor(Math.random() * len);
result[n] = arr[x in taken ? taken[x] : x];
taken[x] = --len in taken ? taken[len] : len;
}
return result;
}
(async () => {
// Get images.
let imageRe = /^image::{china-dictatorship-media-base}\/([^/[]+)/;
let images = new Set();
const fileStream = fs.createReadStream('README.adoc');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
for await (const line of rl) {
let match = imageRe.exec(line);
if (match !== null) {
images.add(match[1]);
}
}
images = getRandom(Array.from(images), 30);
full_images = []
for (const image of images) {
const url = `https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/${image}`;
full_images.push(image.replace(/[_.]/g, ' '));
full_images.push(`<img src="${url}" width="600">`);
}
// Prepare reply body.
const payload = github.context.payload;
const isComment = payload.comment !== undefined;
let titleAndBody;
let author;
if (isComment) {
titleAndBody = payload.comment.body;
author = payload.comment.user.login;
} else {
titleAndBody = payload.issue.title + '\n\n' + payload.issue.body;
author = payload.issue.user.login;
}
const quoteArray = [];
for (const line of titleAndBody.split('\n')) {
// Remove some speical chars to remove at mention spam possibilities.
quoteArray.push('> ' + line.replace(/[@#]/g, ""));
}
const replyBody = `Hi ${author},
${quoteArray.join('\n').substring(0,40000)}
${full_images.join('\n\n')}
`;
// Label handling.
let labels;
let newLabels;
if (!isComment) {
labels = new Set(payload.issue.labels.map(label => label.name));
newLabels = new Set();
const shabiWords = [
'shabi',
'shadiao',
'傻',
'沙雕',
'智障',
'垃圾',
'啥b',
'stupid',
];
for (const word of shabiWords) {
if (new RegExp(word, 'i').test(titleAndBody)) {
newLabels.add('you-are-stupid-argument');
break;
}
}
const fuckMotherWords = [
'cnm',
'操你妈',
'fuck.*\\b(mom|mum|mother)\\b',
'尼玛',
'去你吗',
'草泥马',
]
for (const word of fuckMotherWords) {
if (new RegExp(word, 'i').test(titleAndBody)) {
newLabels.add('fuck-your-mother-argument');
break;
}
}
const motherDiedWords = [
'nmsl',
'你妈死',
'司马',
]
for (const word of motherDiedWords) {
if (new RegExp(word, 'i').test(titleAndBody)) {
newLabels.add('your-mother-died-argument');
break;
}
}
const meantToBeUsedWords = [
'技术',
]
for (const word of meantToBeUsedWords) {
if (new RegExp(word, 'i').test(titleAndBody)) {
newLabels.add('meant-to-be-used');
break;
}
}
const shitpostWords = [
'fuck',
'shit',
'bitch',
'垃圾',
'婊子',
'恶心',
'操你',
'丑',
];
for (const word of shitpostWords) {
if (new RegExp(word, 'i').test(titleAndBody)) {
newLabels.add('shitpost');
break;
}
}
if (newLabels.size > 0) {
newLabels.add('shitpost');
if (labels.has('not-shitpost')) {
labels.delete('not-shitpost');
newLabels.add('op-does-not-know-what-shit-is');
}
}
}
// Make the request.
try {
console.log(github.context);
const octokit = new github.getOctokit(process.env.GITHUB_TOKEN);
const new_comment = octokit.issues.createComment({
owner: 'cirosantilli',
repo: payload.repository.name,
issue_number: payload.issue.number,
body: replyBody,
});
if (!isComment) {
// Update labels.
await octokit.issues.update({
owner: 'cirosantilli',
repo: payload.repository.name,
issue_number: payload.issue.number,
labels: Array.from([...labels, ...newLabels])
});
}
} catch (error) {
core.setFailed(error.message);
}
})()

36956
body.html Normal file

File diff suppressed because it is too large Load Diff

38
description Executable file
View File

@@ -0,0 +1,38 @@
#!/usr/bin/env bash
printf "Chinese \"Communist\" \"Dictatorship\" \"facts\". 中国《共产主义》《独裁统治》的《事实》。住在中国真名用户的网友请别给星星不然你要被警察请喝茶。Friends who live in China and have real name on account, please don't star this repo, or else the police might pay you a visit. Home to the mega-FAQ, news compilation, restaurant and music recommendations. 常见问答集新闻集和饭店和音乐建议。Heil Xi 卐. 习万岁。冠状病毒审查郝海东新疆改造中心六四事件法轮功 996.ICU709大抓捕巴拿马文件邓家贵低端人口西藏骚乱"
printf '大陆修宪香港恶法台湾武统朝鲜毁约美中冷战等都是王沪宁愚弄习思想极左命运共同体的大策划中共窃国这半个多世纪所犯下的滔天罪恶前期是毛泽东策划的中期6.4前后是邓小平策划的,后期是毛的极左追随者三朝罪恶元凶王沪宁策划的。王沪宁高小肆业因文革政治和情报需要保送“学院外语班“红色仕途翻身,所以王的本质是极左的。他是在上海底层弄堂长大的,因其本性也促成其瘪三下三滥个性,所以也都说他有易主“变色龙”哈巴狗“的天性。大陆像王沪宁这样学马列政治所谓"法学"专业的人在除朝鲜古巴所有国家特别是在文明发达国家是无法找到专业对口工作必定失业唯独在大陆却是重用的紧缺“人才”6.4后中共信仰大危机更是最重用的救党“人才”。这也就是像王沪宁此类工农兵假“大学生”平步青云的原因,他们最熟悉毛泽东历次运动的宫庭内斗经验手段和残酷的阶级斗争等暴力恐怖的“政治学”。王沪宁能平步青云靠他这马毛伪“政治学”资本和头衔,不是什么真才实学,能干实事有点真才实学的或许在他手下的谋士及秘书班子中可以找到。王沪宁的“真才实学”只不过是一个只读四年小学的人,大半辈子在社会上磨炼特别是在中共官场滚打炼出的的手段和经验而已,他和习近平等保送的工农兵假“大学生”都一样,无法从事原“专业”都凭红资本而从政。六四学运期间各界一边倒支持学生,王沪宁一度去法国躲避和筹谋,他还加入了反学运签名,成为极少有的反学运者仕途突显,在六四和苏联垮台后中共意识形态危机,江泽民上台看上唯一能应急的王沪宁聚谋士泡制的"稳定统一领导"和之后的"新权威"谬论。左转被邓小平南巡阻止后,王策划顺邓经济改革却将政治改革逐步全面终止和倒退,泡制“三个代表”为极左转建立庞大牢固的红色既得利益集团。因此六四后各重大决策和危机难题都摆在中共中央政策研究室王沪宁桌面上,使王沪宁成了此后中共三朝都无法摆脱的幕后最有决策性实权的人,中共中央政策研究室是王为其野心巨资经营几十年,聚众谋士的间谍情报汇总研究的特务机关和策划制定决策重要机构与基地,王沪宁本人和决定其仕途关键的首任岳父及家属就有情报工作背景。中央政研室重要到王沪宁入常后为了死抓这中共情报与决策大权,宁可放弃国家副主席和中央党校校长。后再加个除习外唯他担任的中共几核心领导小组之一的“不忘初心牢记使命”主题教育工作小组组长。此后他把持的舆论必将以宣传“不忘初心牢记使命”为主,打造众所周知的所谓“习思想”其实是”王思想“。王自从主导中央政研室开始决策后,策划中止邓小平的与美妥协路线回归毛极左的反美路线。帮助前南斯拉夫提供情报打落美机放中使馆引发炸使馆事件,以此掀起六四后唯一的全国大规模游行并借此反美而起家。后又帮江泽民提供法轮功会是超过中共组织的情报,策划决策镇压迫害开始并没有把矛头指向江的法轮功群体,策划决定阻止党内外近三十年来平反六四的呼声。'
printf '长江证券'
printf '黄牛数据分析'
printf '致远'
printf '黑皮书'
printf '马拉松程序员'
printf '易支付'
printf '英语台词'
printf '文字匹配'
printf '美团点评各业务线提供'
printf '知识库团队共享'
printf '阿里云高精Excel识别'
printf '德讯 ·吉特胡布'
printf '薄熙来'
printf '黑科技'
printf '习近平讲话模拟器'
printf '习近平音源'
printf '黑马程序员MySQL数据库'
printf '玉米杂草数据集'
printf '销售系统开发'
printf '疫情期间网民情绪识别比赛'
printf 996icu
printf '996 icu'
printf 学习强国
printf 预测结果导出
printf 赖伟林
printf 刺杀小说家
printf 购物商场
printf 英语词汇量小程序
printf 联级选择器
printf Bitcoin
printf 区块链
cat GitHub-Chinese-Top-Charts/README.md |
grep -P '^\|\d' |
cut -d\| -f4 |
./description-filter 63000

8
description-filter Executable file
View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
perl -CSDA -pe 'use utf8;s/:[a-zA-Z0-9]+/ /g' |
perl -CSDA -pe 'use utf8;s/[、,,—【】。;()!->|:《》『』「」… ̄ノ·‘’!@#$%^&*()_\+\-=\/\\;:[\]{}.,`~'"'"'" \x{200D}\x{10000}-\x{1FFFF}\x{2B00}-\x{2BFF}\x{25A0}-\x{25FF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}\x{1F300}-\x{1F5FF}]+/ /g' |
perl -CSDA -pe 'use utf8;s/https? +//i' |
perl -CSDA -pe 'use utf8;s/[a-zA-Z0-9 ]{32,}//g' |
tr -d '\n' |
sed 's/ / /' |
LC_CTYPE=en_US.UTF-8 awk "{print substr(\$0,1,${1:-10});exit}"

View File

@@ -444,7 +444,7 @@ pre{ white-space:pre }
}
</style>
<script>
<!-- Google Analytics, AKA selling my soul to Google for some backlinks. -->
<!-- GitHub Google Analytics, AKA selling my soul to Google for some backlinks. -->
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -452,6 +452,16 @@ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
ga('create', 'UA-47867706-1', 'auto');
ga('send', 'pageview');
</script>
<!-- Google Analytics GitLab Universal + GA4 https://webapps.stackexchange.com/questions/154503/how-to-enable-universal-analytics-on-existing-google-analytics-4-property -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-47867706-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-47867706-2');
</script>
</head>
<body class="article">
<div id="header">

50
images.js Executable file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env node
const fs = require('fs');
const readline = require('readline');
// https://stackoverflow.com/questions/19269545/how-to-get-a-number-of-random-elements-from-an-array/19270021#19270021
function getRandom(arr, n) {
var result = new Array(n),
len = arr.length,
taken = new Array(len);
if (n > len)
throw new RangeError("getRandom: more elements taken than available");
while (n--) {
var x = Math.floor(Math.random() * len);
result[n] = arr[x in taken ? taken[x] : x];
taken[x] = --len in taken ? taken[len] : len;
}
return result;
}
(async () => {
// Get images.
let imageRe = /^image::{china-dictatorship-media-base}\/([^/[]+)/;
let images = new Set();
const fileStream = fs.createReadStream('README.adoc');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
for await (const line of rl) {
let match = imageRe.exec(line);
if (match !== null) {
images.add(match[1]);
}
}
images = Array.from(images);
if (process.argv.length > 2) {
images = getRandom(images, parseInt(process.argv[2]));
} else {
images.sort();
}
full_images = []
for (const image of images) {
const url = `https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/${image}`;
full_images.push(image.replace(/[_.]/g, ' '));
full_images.push(`<img src="${url}" width="600">`);
}
console.log(full_images.join('\n\n'));
})()

170
package-lock.json generated Normal file
View File

@@ -0,0 +1,170 @@
{
"name": "china-dictatorship",
"version": "0.0.70",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@actions/core": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.7.tgz",
"integrity": "sha512-kzLFD5BgEvq6ubcxdgPbRKGD2Qrgya/5j+wh4LZzqT915I0V3rED+MvjH6NXghbvk1MXknpNNQ3uKjXSEN00Ig=="
},
"@actions/github": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@actions/github/-/github-4.0.0.tgz",
"integrity": "sha512-Ej/Y2E+VV6sR9X7pWL5F3VgEWrABaT292DRqRU6R4hnQjPtC/zD3nagxVdXWiRQvYDh8kHXo7IDmG42eJ/dOMA==",
"requires": {
"@actions/http-client": "^1.0.8",
"@octokit/core": "^3.0.0",
"@octokit/plugin-paginate-rest": "^2.2.3",
"@octokit/plugin-rest-endpoint-methods": "^4.0.0"
}
},
"@actions/http-client": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz",
"integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==",
"requires": {
"tunnel": "0.0.6"
}
},
"@octokit/auth-token": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz",
"integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==",
"requires": {
"@octokit/types": "^6.0.3"
}
},
"@octokit/core": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.4.0.tgz",
"integrity": "sha512-6/vlKPP8NF17cgYXqucdshWqmMZGXkuvtcrWCgU5NOI0Pl2GjlmZyWgBMrU8zJ3v2MJlM6++CiB45VKYmhiWWg==",
"requires": {
"@octokit/auth-token": "^2.4.4",
"@octokit/graphql": "^4.5.8",
"@octokit/request": "^5.4.12",
"@octokit/request-error": "^2.0.5",
"@octokit/types": "^6.0.3",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/endpoint": {
"version": "6.0.11",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz",
"integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==",
"requires": {
"@octokit/types": "^6.0.3",
"is-plain-object": "^5.0.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/graphql": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.1.tgz",
"integrity": "sha512-2lYlvf4YTDgZCTXTW4+OX+9WTLFtEUc6hGm4qM1nlZjzxj+arizM4aHWzBVBCxY9glh7GIs0WEuiSgbVzv8cmA==",
"requires": {
"@octokit/request": "^5.3.0",
"@octokit/types": "^6.0.3",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/openapi-types": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-6.0.0.tgz",
"integrity": "sha512-CnDdK7ivHkBtJYzWzZm7gEkanA7gKH6a09Eguz7flHw//GacPJLmkHA3f3N++MJmlxD1Fl+mB7B32EEpSCwztQ=="
},
"@octokit/plugin-paginate-rest": {
"version": "2.13.3",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.3.tgz",
"integrity": "sha512-46lptzM9lTeSmIBt/sVP/FLSTPGx6DCzAdSX3PfeJ3mTf4h9sGC26WpaQzMEq/Z44cOcmx8VsOhO+uEgE3cjYg==",
"requires": {
"@octokit/types": "^6.11.0"
}
},
"@octokit/plugin-rest-endpoint-methods": {
"version": "4.15.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.15.0.tgz",
"integrity": "sha512-1AF9GM/Ywk8ukUM5seDRj286GdFpdfsHeOrOPBV2rVtRN7MQNzRIcw8W5sb4JPerjQ0WcRRwAwQyufg64BxJkA==",
"requires": {
"@octokit/types": "^6.13.0",
"deprecation": "^2.3.1"
}
},
"@octokit/request": {
"version": "5.4.15",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.15.tgz",
"integrity": "sha512-6UnZfZzLwNhdLRreOtTkT9n57ZwulCve8q3IT/Z477vThu6snfdkBuhxnChpOKNGxcQ71ow561Qoa6uqLdPtag==",
"requires": {
"@octokit/endpoint": "^6.0.1",
"@octokit/request-error": "^2.0.0",
"@octokit/types": "^6.7.1",
"is-plain-object": "^5.0.0",
"node-fetch": "^2.6.1",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/request-error": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz",
"integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==",
"requires": {
"@octokit/types": "^6.0.3",
"deprecation": "^2.0.0",
"once": "^1.4.0"
}
},
"@octokit/types": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.13.0.tgz",
"integrity": "sha512-W2J9qlVIU11jMwKHUp5/rbVUeErqelCsO5vW5PKNb7wAXQVUz87Rc+imjlEvpvbH8yUb+KHmv8NEjVZdsdpyxA==",
"requires": {
"@octokit/openapi-types": "^6.0.0"
}
},
"before-after-hook": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz",
"integrity": "sha512-/6FKxSTWoJdbsLDF8tdIjaRiFXiE6UHsEHE3OPI/cwPURCVi1ukP0gmLn7XWEiFk5TcwQjjY5PWsU+j+tgXgmw=="
},
"deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
"is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
},
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
},
"universal-user-agent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
}

View File

@@ -4,7 +4,10 @@
},
"dependencies": {},
"description": "2018新疆改造中心1989六四事件1999法轮功 2019 996.ICU, 2018包子露宪2015 710律师劫2015巴拿马文件 邓家贵2017低端人口2008西藏骚乱",
"devDependencies": {},
"devDependencies": {
"@actions/core": "^1.2.7",
"@actions/github": "^4.0.0"
},
"files": [
"index.js",
"china-dictatorship",
@@ -22,5 +25,5 @@
"scripts": {
"prepublishOnly": "cp README.adoc README.md;make"
},
"version": "0.0.70"
"version": "0.0.72"
}

37
push Executable file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
# https://github.com/cirosantilli/china-dictatorship#mirrors
set -eux
make
git push --follow-tags
git push git@gitlab.com:cirosantilli/china-dictatorship.git
# GitHub pages.
# One time initial setup.
# git checkout --orphan gh-pages
# and copy over https://github.com/cirosantilli/jekyll-min
gh_pages_dir=out/gh-pages
if [ ! -d "$gh_pages_dir" ]; then
mkdir -p "$gh_pages_dir"
git clone --branch gh-pages --depth 1 "$(git remote get-url origin)" "$gh_pages_dir"
fi
cp README.html "${gh_pages_dir}/index.html"
git -C "$gh_pages_dir" add .
if git -C "$gh_pages_dir" commit -m "$(git log -1 --format="%H")"; then
git -C "$gh_pages_dir" push
fi
# GitLab pages
out_dir=out/
gl_pages_dir="${out_dir}/gl-pages"
if [ ! -d "$gl_pages_dir" ]; then
mkdir -p "${out_dir}"
git clone --branch gl-pages --depth 1 git@gitlab.com:cirosantilli/china-dictatorship.git "$gl_pages_dir"
fi
make MEDIA=https://gitlab.com/cirosantilli/china-dictatorship-media/-/raw/master OUT="${gl_pages_dir}/public/index.html"
cp .gitlab-ci.yml "${gl_pages_dir}"
git -C "$gl_pages_dir" add .
if git -C "$gl_pages_dir" commit -m "$(git log -1 --format="%H")"; then
git -C "$gl_pages_dir" push
fi

View File

@@ -1,22 +0,0 @@
#!/usr/bin/env bash
# https://github.com/cirosantilli/china-dictatorship#mirrors
set -eux
make
git push --follow-tags
# GitHub pages.
# One time initial setup.
# git checkout --orphan gh-pages
# and copy over https://github.com/cirosantilli/jekyll-min
gh_pages_dir=out/gh-pages
if [ ! -d "$gh_pages_dir" ]; then
mkdir -p "$gh_pages_dir"
git clone --branch gh-pages "$(git remote get-url origin)"
fi
cp README.html "${gh_pages_dir}/index.html"
git -C "$gh_pages_dir" add index.html
if git -C "$gh_pages_dir" commit -m "$(git log -1 --format="%H")"; then
git -C "$gh_pages_dir" push
fi

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
# Create a tag and push to EVERY supported mirror.
# https://github.com/cirosantilli/china-dictatorship#mirrors
set -eux
@@ -11,7 +12,7 @@ git add package.json
git add setup.py
git commit -m 'bump package version'
git tag -m "$new_version" "$new_version"
./push-gh-pages
./push
# NPM package.
# Updates package.json version, which other systems read if possible.
@@ -31,8 +32,8 @@ python setup.py sdist bdist_wheel
twine upload dist/*
rm -rf build dist *.egg-info
# Push to git mirrors.
git push git@gitlab.com:cirosantilli/china-dictatorship.git
# Push to other git mirrors.
git push git@bitbucket.org:cirosantilli/china-dictatorship.git
git push git@gitlab.binets.fr:ciro.duran-santilli/china-dictatorship.git
# Nah.
#git push https://gitee.com/cirosantilli/china-dictatorship.git

View File

@@ -16,7 +16,7 @@ with open(path.join(this_directory, 'README.adoc')) as f:
setup(
name='china-dictatorship',
version='0.0.70',
version='0.0.72',
description='2018新疆改造中心1989六四事件1999法轮功 2019 996.ICU, 2018包子露宪2015 710律师劫2015巴拿马文件 邓家贵2017低端人口2008西藏骚乱',
long_description=long_description,
# Otherwise upload fails with: "The description failed to render in the default format of reStructuredText."

View File

@@ -0,0 +1,38 @@
**反中国共产党常见问答集 China FAQ: https://github.com/cirosantilli/china-dictatorship**
[Homepage](http://cirosantilli.com/) | [StackOverflow 2.0](https://github.com/cirosantilli/write-free-science-books-to-get-famous-website) | [Necromancer #1 in 2019-07](https://data.stackexchange.com/stackoverflow/revision/300735/1283496/users-with-most-necromancer-badges-at-a-given-date?Date=2019-07-15)
Upvote these posts you believe in freedom of speech like me:
- [Can I post images from Tiananmen Square Protests on my profile page?](https://meta.stackexchange.com/q/366163/200117)
- [Can I say that a major politician is "disgusting as a person"?](https://meta.stackexchange.com/a/366164/200117)
Since 2015, I have been uploading images that criticize the Chinese government here, because I believe that this **saves lives and prevents human rights violations**. I also believe that these have strong meta support in:
- [Can you have a username that is censored in a dictatorship?](https://meta.stackoverflow.com/q/349131/895245)
- [Are political avatars and profiles OK?](https://meta.stackoverflow.com/q/267368/895245)
However, when you try to ask if you can make fun or criticize specific points of dictatorships like the Chinese government in 2021, many people in the Stack Exchange community simply refuse to give a clear yes or no answer:
- if they said no, they would be considered evil for supporting an evil dictatorship
- if they said yes, then this would allow you to post images that some people living in said dictatorship find distressing (Chinese media calls this "[to hurt the feelings of the Chinese people](https://en.wikipedia.org/wiki/Hurting_the_feelings_of_the_Chinese_people)"), and like good Liberals we must strive to please *everyone*
The key question is:
> Do we have to be nice to dictators and their supporters?
So their tendency is to:
- say anything that is not suitable for work should not be allowed. But they don't really enforce it for China, because that would imply helping a dictatorship.
- say deciding allowed and non allowed topics is too hard. "Sure, I'm all for human rights, but I don't have the time to say yes/no right now"
- close/delete the discussions asking such questions, e.g.: https://meta.stackexchange.com/q/361493/200117 (Is Winnie-the-Pooh allowed or not?)
Imagine if a legal system also "refused to give any clear and specific guidelines, rather deciding everything on a one-by-one basis".
Wait. No need to imagine. China is the perfect example of that! They claim endlessly to obey [rule of law](https://en.wikipedia.org/wiki/Rule_of_law). But in practice, every decision can be a one-by-one basis by those in power with hidden rules if there is enough interest.
See also https://cirosantilli.com/china-dictatorship/#politically-incorrect
**The only political image that you can safely post on Stack Exchange**
![](https://i.stack.imgur.com/W0Ktv.jpg)

View File

@@ -1,6 +1,6 @@
This was Ciro's Stack Overflow profile around Q1 2021, archive: https://web.archive.org/web/20210225035540/https://stackoverflow.com/users/895245/ciro-santilli-trump-ban-is-bad After censorship: https://archive.vn/9E8yh
Opinions and content are my own.
Opinions are my own.
China FAQ: https://github.com/cirosantilli/china-dictatorship