Paper.wf

Reader

Read the latest posts from Paper.wf.

from Disland

You've stumbled upon the new Disland blog! (There's a 99% chance you came here from Andrew's World)

This place is gonna be for general blog stuff like changelogs, code stuff idk how to describe this.

Yeah, I suppose?

 
Read more...

from Andrew's Blog

Hello person, this is my first ever post, hope you'll like my blog, I suppose?

This place might seem empty at the time you're reading this post, But I'll post a bunch of interesting stuff about programming, like my project (Disland).

I primarily code in typescript, so 90% of what is gonna be on this blog (that is also related to programming) is gonna be having at least a smidge of typescript (stuff such as full code, or snippets and even interfaces from low-level stuff sometimes)

:)

 
Read more...

from CClaude

J'ai une IRM tard cet après-midi.
Ça veut dire Imagerie à Résonance Magnétique. J'ai appris ça.
Je vais entrer en résonnance avec mon moi sidéral et quand je sortirai de là j'aurai un magnétisme fou.
Les gens vont se retourner sur mon passage et je marcherai comme une célébrité.
Peut-être que je pourrai gratter un peu de radioactivité et alors je scintillerai dans l'obscurité du soir.
Je serai vraiment pas comme les autres !
Un homme scintillant

Qui sait ? Mon cerveau va se débloquer et j'aurai accès à la totalité de sa capacité phénoménale.
Vrai ! Je vais pouvoir créer des choses que même les plus téméraires n'ont pas osées.
Je sais pas moi... me télétransporter à des milliers de kilomètres et visiter tous les endroits au bout du monde qui sont sur les prospectus des agences de voyage et aller dans les plus beaux hôtels.
Car je me serai devenu riche avant évidemment.

Bon ça y est, je suis dans la salle où on attend l'irm.
J'ai un peu le trac ! Il parait que c'est une grosse machine comme dans Stargate. Une porte spatio-temporelle. Mais je suis excité aussi.

  • Monsieur C ? Une scientifique en blouse blanche s'approche.
  • Oui C c'est moi.
  • Veuillez me suivre s'il vous plait. C'est à vous.

Je me lève et je la suis. Elle est mystérieuse et réservée.
On dirait que je me dirige vers un temple sacré. Celui de la science.
Tout ça pour moi. C'est MON TOUR !

Elle m'invite à entrer dans une petite salle.

  • Veuillez vous déshabiller s'il vous plait. Ne gardez que le slip et les chaussettes. Ensuite vous passerez cette tunique à usage unique.

Puis elle me pose des questions que je n'ai pas toutes retenues, si j'avais été opéré du cœur, si j'avais du métal dans mon corps, si j'étais allergique... C'est tout je crois.

  • Je vais vous faire une petite injection intraveineuse pour vous préparer à l'irm.
  • Ça ne fait pas mal ?
  • Pas du tout quand c'est moi qui pique elle répond en souriant.

Elle est vraiment sûre d'elle. Tant mieux pour moi.

  • À présent, enlevez lunettes, montre et bijoux. Restez assis et attendez ici que je vienne vous chercher.

Je suis un peu impressionné, mais c'est super !

Ça y est elle revient me chercher et me demande de m'allonger sur un chariot.

La Stargate est plus petite que je l'imaginais. Je devrai être couché.
Ah...je comprend...je vais être propulsé comme un obus à travers la porte des étoiles !

Je suis installé et attaché par endroits. Hum il va y avoir de l'accélération dans l'air...
Un casque sur les oreilles pour communiquer avec la base. Allô Cap Carnaveral, vous me recevez ? On place dans ma main un bouton d'urgence pour annuler la mission si nécessaire.

  • Ça va commencer. Ne bougez pas s'il vous plait.

Ça y est. Je ferme les yeux. Le bruit est assourdissant. Je n'entends plus personne. Plus de voix.
Elles sont parties ou c'est moi qui suis parti ? Mon cœur bat la chamade tellement je suis excité.
Le temps s'écoule et puis à un certain moment, le bruit s'arrête.
J'ouvre les yeux. La scientifique est revenue vers moi.
Peut-être que je suis parti et revenu? Je n'aurais pas dû fermer les yeux. Quand même elle me regarde d'un air bizarre, comme si je n'étais plus le même.
Ça y est ! J'ai compris ! Je suis bien parti et revenu ! Mon magnétisme est différent. Je dois être chargé à bloc et peut-être que je scintille.
Je me sens différent.
Je peux retourner à la petite salle et me rhabiller.

Enfin je suis à l'extérieur. Je suis le nouvel homme. Celui qui a traversé le temps, la voie lactée, et qui est REVENU !
Je suis prêt pour l'aventure, je vous dis pas...

 
Lire la suite...

from technopower

本文是 peertube 上的中文视频博主 Metternich&Guizot 的同名视频的文案。

大家好,今天我来给大家介绍一下 peertube 。Peertube 是一个去中心化的视频网站,用户们可以在上面观看视频、写评论、上传自己的视频,就像油管或者抖音一样,但是 peertube 与这些网站的根本区别之一就在于,peertube 是一个自由的视频平台。

展开全文

自由软件

自由软件(英语:free software),是一类可以不受限制地自由使用、复制、研究、修改和分发的,尊重用户自由的软件。这意味着自由软件一定是公开源代码的,也就是开源软件。但是开源软件不意味着自由软件,因为有的软件公司选择开源,只是为了想找用户帮它调试、吸收社区贡献的功能,这样子会破坏了自由软件的原意。值得注意的是,自由软件不意味着免费(虽然大部分自由软件是免费的),自由软件也不拒绝提供商业服务。

与自由软件相对的是私有软件(英语:proprietary software),也被称为专有软件、封闭软件,这些软件出于盈利目的限制人们对其自由使用的权力,典型的如 Windows、Photoshop 等。

而知名的自由软件有:GNU/Linux、MySQL、Notepad++、Firefox、OpenCV、等。 事实上,与大部分人想象的不同,peertube 实际上并不是一个网站,Peertube 是一套自由的视频服务器系统,因此所有人都可以使用 peertube 的源代码去构建自己的 peertube 网站。比如说我就可以去建立一个自己的 peertube 网站(知乎上有教程),而我建立的这个新视频网站就被称为一个 peertube 的实例(instance)。在这个 peertube 的新实例当中,我可以自己设定各种权限和事项,比如在这个实例中,用户上传的视频是否需要审核等等。虽然有很多 peertube 的实例的域名包含 peertube 字样(如 peertube.su),但事实上并非所有的 peertube 实例都如此。比如我来到了peertube的官网https://joinpeertube.org,我们可以选择这个 “See the instances list” 选项,这样就可以看到许多peertube的实例了。如果我们选择中文的筛选项,就可以看到中文的 peertube 实例了。我们也可以来到这个网址https://instances.joinpeertube.org,在这里我们可以看到各种 peertube 实例的统计结果,很显然绝大多数 peertube 实例的域名和 peertube 这个字段没有什么关系。我们可以看到列表一共有890页,这说明目前所有的 peertube 实例有接近九千个,而 peertube 的第一个稳定版本则是2018年10月才发布的。

这里不得不提一点,那就是 peertube 主要是由法国人开发的。虽然某国媒体喜欢渲染所谓“世界著名科技公司只在中美两国”的论调,但这很显然只是某种价值观判断下的产物。

如果我们把本地视频数从高到低进行排列,可以看到前20大 peertube 实例中,法国有9个,德国有2个,美国有2个。

如果按总视频数排列,则前20大 peertube 实例中,法国有7个,德国有6个,美国有3个。如果按用户数排列,则前20大 peertube 实例中,法国有7个,德国有7个,美国有1个。革命老区不愧是革命老区。

有细心的朋友可能就会问了,本地视频和总视频有什么区别呢?别急,一会我会讲。值得一提的是,我现在使用的 peertube.su 实例,本地视频数排第一,但用户数仅仅第十,另外,su 这个域名后缀,代表的是苏联。

邦联宇宙

邦联宇宙的英语叫做 Fediverse ,是“邦联”(Federation)和“宇宙”(Universe)的混成词。不同的实例相互链接,共同提供网络发布或文件托管功能,比如我在A网站上可以直接看到B网站上的内容,那么这些实例就共同组成了一个邦联宇宙。假如许多 peertube 实例链接在一起,那这就构成了一个邦联宇宙。

任何一个 peertube 实例的管理者都有一个权力,那就是决定自己的实例是否关注(follow)另一个实例,而他们同样也有权力拒绝其它实例的关注(注:这里采用“关注”一词主要考虑到B站用户的习惯)。

通过关注其它实例,一个 peertube 实例的用户便可以在自己的实例上看到其它实例上的视频了。比如我有一个 peertube 实例叫梅特涅.at,这时,我发现还有另外一个 peertube 实例叫<基佐.fr>,如果我向<基佐.fr>申请关注并获得批准的话,那我就可以在梅特涅.at上不只看到本地的梅特涅的视频,而是看到梅特涅和基佐的视频了。这也就是我们刚才提到的本地视频和总视频的区别了。

所以,为什么我们将 peertube 称之为去中心化的视频网站系统呢?虽然每个 peertube 实例的管理者都对自己的网站有足够的权限,但因为任何人都可以创建自己的 peertube 实例,同时可以直接从邦联宇宙中获得大量资源,因此避免了一个超级管理者的存在。接下来的一个问题在于,如何保证邦联宇宙中的各个实例可以很好地链接呢?

这是因为各个实例上运行的软件支持一种或多种遵循开放标准的通信协议(protocol),而其中最主要的通信协议则是 ActivityPub。

ActivityPub

2018年1月,万维网联盟(W3C)发布了 ActivityPub 标准。同样由万维网联盟发布的标准还包括:HTML、XML、CSS 等。ActivityPub 是一个专门用于去中心化社交网络的协议,而 peertube 正是使用的 ActivityPub。在由 ActivityPub 构建起来的邦联宇宙中,不仅有 peertube,还有很多其它好用的成员。比如 Mastodon,它是一个去中心化的社交媒体网站,功能类似于微博或推特;再比如 WriteFreely,这是一个去中心化的可以写长篇文字的平台。事实上几乎所有私有软件和私有平台覆盖的功能,在自由软件和邦联宇宙中都可以找到对应的内容,也许下一步邦联宇宙就该推出去中心化打车、去中心化外卖了。

所有这些 ActivityPub 成员的逻辑和 peertube 都是一样的,自由的服务器系统,没有统一的网址,各个实例相互链接成邦联宇宙。甚至不同 ActivityPub 成员之间也可以再进一步相连,形成更大的邦联宇宙。比如我可以在 Mastodon 上注册一个账号发涩图,用这个账号去 WriteFreely 键政,之后再用这个账号去 Peertube 关注梅特涅和基佐并留下恶意评论。

说起来2018年真的发生了很多未来回看具有历史性意义的事情啊,可惜的是大部分人对此却浑然不觉。 那么今天和大家的分享就到这里,假如朋友们对 Peertube 或 ActivityPub 相关内容有更多兴趣的话,欢迎到其官网和维基上进一步查阅资料。让我们下一期再见。

 
Read more...

from technopower

百度贴吧也曾红极一时,国外的 reddit 也拥有庞大的用户群体。百度贴吧和 reddit 这种在用户讨论的话题的组织模式上相对去中心化的社区,很大程度上允许用户根据自己的需要自行创建讨论社区,于是它们都能吸引各种各样的爱好者,发展出各种各样的社区文化。所以尽管百度贴吧和 reddit 的服务器仍然是私有的集中制的,但却也是用户最为活跃,讨论内容最为丰富的社区(今天百度贴吧的凋敝并非贴吧的模式存在问题,而是国内的言论管制政策排斥去中心化的社区)。

那么话说回来,如果有这么一个讨论社区,不仅和百度贴吧、reddit 一样有着去中心化的用户讨论的组织模式,甚至其底层的服务器之间也是通过邦联制沟通起来的,它又会如何呢?这并不是一个畅想出来的赛博乌托邦,事实上类似的讨论社区已经出现并已获得了很大的发展,只是在国内还不够知名。这个讨论社区就是 lemmy 。

展开全文

邦联制在 lemmy 上的表现

那么我将如何“访问”lemmy 呢?是否需要下载什么 app?它的网址又是什么呢?别着急索要这些,因为你想要的那些东西在 lemmy 这里并不存在,或者说它们不会统一在一个网站或 app 里。

在 lemmy 内没有一个统一的“lemmy 首页”,每一个 lemmy 服务器都能通过浏览器访问,用户可以通过每一个 lemmy 服务器的网站浏览到这个 lemmy 服务器上的,以及其他 lemmy 服务器上的内容。比如目前最大的 lemmy 服务器是 lemmy.ml ,我们可以在浏览器里输入https://lemmy.ml打开它,点击“All”即可看到其他服务器上的内容。其他的服务器也有类似的界面,但具体会表现成什么样则由各个服务器的主人自行决定,比如虽然 lemmy.ml 是一个讨论内容综合的 lemmy 服务器,但规模略小于它的 lemmygrad.ml 就几乎只讨论左派有关的话题。

我们使用浏览器即可访问各 lemmy 社区,但部分开发者也照顾到了那些喜欢使用客户端(它们也通常被习惯性统称为“app”)的用户,在手机上,有lemmurJerboa for Lemmy两款 lemmy 客户端可用,它们均可在f-droid里下载。lemmur 客户端功能较为完善,而 Jearboa for Lemmy 则主打轻量级(安装包大小不足2.5MB)。

lemmy 的邦联制体现为各个服务器虽然能互联互通,但却又都是独立自主的,它们能通过 lemmy 这一个大的平台联系起来,但也能选择保持独立,不与其他服务器互联互认。而访问它们所使用的软件工具也同样不是专用的,用户完全可以选择自己喜欢的浏览器或 app 来访问这些 lemmy 服务器。

找到 lemmy 服务器

没有一个统一的 lemmy 首页是否意味着我们只能道听途说地了解到具体的 lemmy 服务器,而很难高效地得到各个 lemmy 服务器的网址呢?当然不是这样。实际上互联网上有很多邦联制社交媒体的目录网站,其中大多收录了各种各样的邦联制社交媒体项目的各种实例,其中也包括 lemmy 。

在此我们首先推荐的是https://fedidb.org/network,在这个网站里我们可以找到诸如 mastodon、writefreely、peertube 在内的各种邦联制社交媒体的实例,我们只需要在“software”处将要找到的邦联制社交媒体类型由“ALL”改为“Lemmy”,即可精准找寻 lemmy 服务器。此外 lemmy 项目自身也提供了一个 lemmy 服务器的推荐页面https://join-lemmy.org/instances,虽然不如专门的邦联制社交媒体目录页搜集得多,但每一个推荐的服务器都列出了推荐理由,方便大家参考。

lemmy 的访问工具、服务器以及目录页各司其职,各自只负责好自己负责的事务,而不是像私有的社交媒体那样,集访问工具、服务器、目录页于一体,高度垄断不仅限制了它们的专业化水平(当然他们的目的是赚钱不是把服务打磨好),更方便了他们对用户为所欲为。

注册 lemmy 帐号

如果我们不只要“看 lemmy ”,还要“发 lemmy ”,就需要找到一个 lemmy 服务器来注册帐号,遗憾的是虽然大部分 lemmy 服务器都支持注册,但那些用户最多、知名度最高的 lemmy 服务器,比如 lemmy.ml 、 lemmygrad.ml 往往限制新用户注册,用户不仅需要认真回答管理员设置的问题,还要等待管理员审核,审核通过才算注册成功,因此我们要想注册 lemmy 帐号应该首先不去考虑这些服务器。为了找到一个合适的 lemmy 服务器,我们可以利用前文提到的邦联社交媒体目录页和 lemmy 自身的推荐页。在 lemmy 推荐页https://join-lemmy.org/instances中十分简单,仅需选择那些写有“Join”而不是“Apply to Join”的服务器注册。或者在https://fedidb.org/network里仔细挑选 Lemmy 服务器。因为根据实际调查,在https://fedidb.org/network中为“Open Registration”的 lemmy 服务器包含那些注册十分麻烦,审核十分严格的服务器,而开启此选项甚至有可能将部分允许注册的 lemmy 服务器排除在外。但此目录的强项在于列出的 lemmy 服务器更多。

是要快速找到能便捷注册的服务器,还是希望能找到更多服务器。这个就看大家的取舍。

虽然用户必须要找一个特定的 lemmy 服务器注册帐号,但是只要其他 lemmy 服务器与用户注册帐号的服务器之间能互联互认,用户就能关注其他服务器的社区并在在其他 lemmy 服务器的社区里发表内容。

创建和关注 lemmy 的社区

仅仅满足前文所列出的特点,只能说明 Lemmy 是邦联制的社交媒体,而要说到它类似于贴吧、reddit 的地方就得提到 lemmy 的社区。每一个 lemmy 服务器上都有各种各样的社区,除了那些服务器主人不允许用户自行创建社区的除外,用户可根据自己的需要在注册帐号的服务器上创建社区。需要注意的是,用户在哪个服务器上注册了帐号就只能在哪个服务器上创建社区,不能跨服务器创建社区,如用 lemmy.ml 的帐号在 lemmygrad.ml 上创建社区就是办不到的。

虽然跨服务器创建社区无法实现,但跨服务器关注社区、管理社区却没有问题——这一点才是 lemmy 作为自由的邦联制的“贴吧”的核心要点。但就目前来说,仍然不是随意拿出来两个服务器,其上的帐号都能互相关注对方服务器上的社区。这是因为某一服务器上的用户是否能关注另外一服务器上的社区,取决于这两个服务器之间的互联互认程度,如果它们的互认程度不高,就无法关注彼此的社区。

为了关注一个服务器上的社区,最简单粗暴的方法就是在这个社区所在的服务器上注册帐号来关注,但是正如前面所说的,不是所有的 lemmy 服务器都开放注册,也不是所有开放注册的 lemmy 服务器都容易注册,更别提有趣的社区很可能分散在不同的服务器上,为了关注这些社区分别在这些服务器上注册帐号,管理众多的 lemmy 帐号又提高了使用成本。

更为重要的是,如果用户为了关注某一社区就跑到社区所在的服务器上注册,一个两个用户如此,三个四个,乃至几万几十万的用户都如此,邦联制的社交媒体就将不复存在,而这个社区所在的服务器又成了一个集中制的社交媒体。害处从小的方面来说会让单一服务器不堪重负,大的方面来说就是促进新的私有社交媒体诞生。

因此无论是从便利性还是从正确性上来说,我们都不推荐您直接在您想关注的社区所在服务上直接注册帐号。

我们还是应当充分发挥邦联制的特点,把我们各自的帐号分散在不同的服务器上,避免在一个服务器上过度集中。

验证不同 lemmy 服务器之间的互联互认

服务器和服务器之间互认关系的问题我们可以用一些小方法来验证。

比如您想知道某服务器是否能关注我们位于https://exploding-heads.com/上的hackerfederation社区,您可以输入如下的网址格式: 欲测试的服务器的地址/c/我们的社区名称@社区所在服务器,比如,您可以输入https://community.hackliberty.org/c/[email protected]来看看是否能从服务器https://community.hackliberty.org/访问到我们的社区,如果能访问,便可看到我们社区的内容,进而可以选择在这个服务器上注册自己的账号;如果不能访问,就会提示“404: couldntfindcommunity”。比如访问https://lemmy.ml/c/[email protected]的结果就提示“404: couldntfindcommunity”,这说明 lemmy.ml 上的帐号不能关注我们位于 exploding-heads.com 上的社区。

需要注意的是,在您当前的服务器而不是我们社区所在的服务器上输入的我们的社区的名称必须加上后缀 @exploding-heads.com ,此后缀意为我们名为“hackerfederation”的社区位于 exploding-heads.com 服务器上。而如果您不加此后缀,您当前的服务器会默认在当前服务器上找寻是否有名为“hackerfederation”的社区,无论是否能找到,都不可能是我们的社区。其他服务器上的其他社区也是如此,在此不再赘述。

虽然目前 lemmy 还不为中文用户所熟知,但我们相信,未来使用 lemmy 的中文用户会越来越多。由互联网管制所摧毁的整个中文互联网社群将在自由软件平台上重建。

 
Read more...

from CClaude

Viel homme hirsute

Depuis quelques mois, il se laisse pousser la barbe. Elle est presque blanche. Il ne la travaille pas. Elle pousse de manière brute comme de l'herbe sauvage. C'est la même chose pour ses cheveux.
Pourquoi fait-il ça? Il est triste et déprimé.
Il a perdu ses forces et n'a plus d'intérêt pour rien.
Cette barbe, c'est l'expression de son état d'âme. Un deuil en quelque sorte.
Il a l'air bien vieux. Il ressemble à un vieillard et un vagabond.

Il n'a rien contre les vagabonds.
Eux ils sont déjà sortis du système. Ils n'ont plus rien et leur aspect n'a rien pour plaire. Les gens feignent de ne pas les voir. Ils sont devenus invisibles.
Devenir invisible. Disparaître. C'est son désir inconscient. Il est en deuil de lui-même, de ce qu'il a été et qu'il ne sera plus jamais.

Plus de projet, même pas un, si petit soit-il.
Il a vieilli dans sa tête. Il s'est vieilli physiquement. C'est le stigmate de sa fin annoncée. Il se laisse aller sans envisager de retour.

 
Lire la suite...

from رضا حسین‌زاده

بِسْمِ اللَّـهِ الرَّحْمَـٰنِ الرَّحِيم

احتمالا درباره اعجاز عددی قرآن مطالبی شنیدید. مخصوصا اعجاز قرآن درباره عدد ۱۹. در آیات ۳۰ و ۳۱ سوره مدثر خدا میفرماید: > عَلَيْهَا تِسْعَةَ عَشَرَ

وَمَا جَعَلْنَا أَصْحَابَ النَّارِ إِلَّا مَلَائِكَةً ۙ وَمَا جَعَلْنَا عِدَّتَهُمْ إِلَّا فِتْنَةً لِلَّذِينَ كَفَرُوا لِيَسْتَيْقِنَ الَّذِينَ أُوتُوا الْكِتَابَ وَيَزْدَادَ الَّذِينَ آمَنُوا إِيمَانًا ۙ وَلَا يَرْتَابَ الَّذِينَ أُوتُوا الْكِتَابَ وَالْمُؤْمِنُونَ ۙ وَلِيَقُولَ الَّذِينَ فِي قُلُوبِهِمْ مَرَضٌ وَالْكَافِرُونَ مَاذَا أَرَادَ اللَّهُ بِهَٰذَا مَثَلًا ۚ كَذَٰلِكَ يُضِلُّ اللَّهُ مَنْ يَشَاءُ وَيَهْدِي مَنْ يَشَاءُ ۚ وَمَا يَعْلَمُ جُنُودَ رَبِّكَ إِلَّا هُوَ ۚ وَمَا هِيَ إِلَّا ذِكْرَىٰ لِلْبَشَرِ

نوزده فرشته بر آن گماشته‌اند.

موكلان دوزخ را جز از فرشتگان قرارنداديم. و شمار آنها جز براى امتحان كافران نيست. تا اهل كتاب يقين كنند و بر ايمان مؤمنان بيفزايد و اهل كتاب و مؤمنان شك نكنند. و تا آنان كه در دلهاشان مرضى است نگويند: خدا از اين مثَل چه مى‌خواسته است؟ خدا اينچنين هر كس را كه بخواهد گمراه مى‌كند و هر كس را كه بخواهد راه مى‌نمايد. و شمار سپاهيان پروردگارت را جز او نداند. و اين سخن جز اندرزى از براى مردم نيست.

این آیات نشان میدهند که واقعا عدد ۱۹ عددی خاص در #قرآن است زیرا خود قرآن گفته است:«شمار آنها برای افزایش ایمان مومنان است»

در این نوشته قصد داریم صحت این ادعا (اعجاز عددی قرآن) را به وسیله کدهای پایتون بسنجیم. میدانید که محاسبه دستی این مسائل خیلی سخت هستند. همچنین اعجازهای معرفی شده در این دو ویدئو را بررسی میکنیم: ویدئو ۱ویدئو ۲

در این محاسبات از این قرآن حالت Simple (clean) و XML استفاده میکنیم. برای کار کردن با XML من از xml.etree.ElementTree استفاده میکنم.

۱- ۵۷

وقتی شماره سوره و تعداد آیه یک سوره را جمع میکنیم، عددی زوج یا فرد به دست میاید. این اعجاز ادعا میکند که از بین ۱۱۴ سوره قرآن، برای ۵۷ سوره این عدد زوج و برای ۵۷ سوره این عدد فرد است. برویم سراغ محاسبه:

import xml.etree.ElementTree as ET

file = "/path/to/quran-simple-clean.xml"
tree = ET.parse(file)

num = 0

def isEven(num):
    return num % 2 == 0
for i in range(114):
    suranum = int(tree.findall("sura")[i].get("index"))
    suraayanum = len(tree.findall("sura")[i].findall("aya"))
    if isEven(suranum + suraayanum):
        num += 1
        print("num:", num)

در خط اول کتابخانه‌های لازم را صدا میزنیم. این کتابخانه برای همه کدهایمان لازم هستند پس در بقیه کدها آن را نمینویسم. متغیری به نام num میسازیم که تعداد سوره‌ها را ذخیره میکند. تابعی با نام isEven برای بررسی زوج بودن ورودی میسازیم. حلقه‌ای از ۰ تا ۱۱۳ برای بررسی سوره‌های قرآن (۱۱۴ سوره) میسازیم. در حلقه هر بار سوره از پروندهٔ XML که داده‌ایم دریافت میشود و تعداد آیات و شمارهٔ سوره در دو متغیر ذخیره میشوند. در خط بعد، بررسی میکنیم که آیا شماره سوره به علاوه تعداد آیاتش زوج میشوند یا خیر؟ اگر بله، num به علاوه یک میشود. و همچنین در هر حلقه اگر شرط برقرار بود، num چاپ میشود. اگر دوست داشتید میتوانید خط چاپ را در خارج از حلقه قرار دهید. حال وقتی نتیجه چاپ میشود، میبینیم عدد ۵۷ تعداد سوره‌هایی است که این عدد در آنها زوج است. پس تعداد سوره‌هایی که این عدد در آنها فرد است هم ۵۷ میشوند. این از این!

۲- ۳۳۰۳

این ویدئو ادعا میکند که جمع شماره سوره‌هایی که عددی که در بالا اشاره شد در آنها زوج است، برابر جمع تعداد آیات سوره‌هایی است که در آن عدد مذکور فرد است و آن هم برابر ۳۳۰۳ است. ببینیم ویدئو راست میگوید یا خیر. برای اعداد زوج:

num_sum = 0

def isEven(num):
    return num % 2 == 0
for i in range(114):
    suranum = int(tree.findall("sura")[i].get("index"))
    suraayanum = len(tree.findall("sura")[i].findall("aya"))
    if isEven(suranum + suraayanum):
        num_sum += suranum
        print("num_sum:", num_sum)

برای اعداد فرد هم دو تغییر باید در کد ایجاد کنید: ۱- بعد از if یک not بگذارید. ۲- به جای numsum += suranum بنویسید numsum += suraayanum. بیشتر بخش‌های کد مثل بخش ۱ است. مهمترین تفاوتش در خط بالای پرینت است که بجای += 1 چیز دیگری نوشتیم. بله؛ وقتی خروجی بگیریم در نهایت عدد ۳۳۰۳ را در هر دو مورد (زوج و فرد) خواهیم دید.

۳- ۶۲۳۶

ویدئو میگوید که اگر تمام حاصل جمع تمام سوره‌هایی را که جمع عددشان و تعداد آیاتشان زوج است را جمع کنیم، یعنی عدد گفته شده را در تمام آن ۵۷ سوره جمع کنیم، نتیجه میشود ۶۲۳۶ که تعداد آیات قرآن است:

sum = 0

def isEven(num):
    return num % 2 == 0
for i in range(114):
    suranum = int(tree.findall("sura")[i].get("index"))
    suraayanum = len(tree.findall("sura")[i].findall("aya"))
    if isEven(suranum + suraayanum):
        sum += suranum + suraayanum
        print("sum:", sum)

در کد بالا، متغیر ما sum است. دوباره کل سوره‌ها را دور میکنیم و اگر suranum + suraayanum هر سوره‌ای زوج شد، این عدد سوره را به علاوه sum میکنیم. در نهایت میبینیم که نتیجه شد ۶۲۳۶! البته در این بخش بهتر است که تعداد آیات قرآن را هم محاسبه کنیم تا شک و شبهه‌ای باقی نماند:

sum = 0
for sura in tree.findall("sura"):
    sum += len(sura.findall("aya"))
print(sum)

در کد بالا متغیری بنام sum داریم که سوره به سوره میگردیم و تعداد آیاتش را با آن اضافه میکنیم. پس از اجرای برنامه میبینیم که عدد ۶۲۳۶ در نمایشگر ظاهر شد.

۴- ۶۵۵۵

ویدئو میگوید اگر همان کار بخش ۳ را روی ۵۷ سوره دیگر انجام دهیم، نتیجه میشود ۶۵۵۵ که جمع اعداد ۱ تا ۱۱۴ (تعداد سوره‌های قرآن) است. هما کد را امتحان کنید فقط با این تفاوت که بعد از if بنویسید not. نتیجه کاملا صحیح است. برای محاسبه جمع اعداد ۱ تا ۱۱۴ هم میتونیم از ۵۷×۱۱۵ استفاده کنیم که میبینیم میشود ۶۵۵۵.

۵- مدت نبوت

﴿بسم الله الرحمن الرحیم﴾ ۱۹ حرف دارد. ۳ تشدید دارد که به آنها حروف مخفی میگویند. یک «الف» هم در «رحمن» دارد که نوشته نمیشود ولی خوانده میشود. ۱۹+۳+۱ میشود ۲۳ که ویدئو ادعا میکند نشانه ۲۳ سال نبوت پیامبر از که ۳ سال آن مخفی (حروف مشدد) بوده. از طرفی وقتی حروف تکراری را حذف کنیم ۱۰ حرف باقی میماند که نشانه ۱۰ سال نبوت در مدینه است. این محاسبات چون سخت نبودند دستی حساب کردم.

۶- «ب» و «م» در سوره حمد

اولین آیه قرآن با «ب» شروع شده و به «م» ختم شده. جمع تعداد «ب»ها و «م»ها در سوره اول قرآن (حمد) برابر ۱۹ است:

sura = tree.find("sura")
sum = 0
for aya in sura.findall("aya"):
    for char in aya.get("text"):
        if char in "بم":
            num += 1
print(num)

در کد بالا محتوای سوره حمد را در sura ذخیره میکنیم. به ازای هر آیه سوره، متن آیه را بررسی میکنیم. تک به تک حروف را بررسی میکنیم و اگر حرفی داخل رشته “بم” باشد، متغیر sum را که در ابتدا صفر بود، یک واحد افزایش میدهیم. در این صورت در نهایت میبینیم که خروجی ما شد ۱۹.

۷- «ب» در حمد و «س» در ناس

اولین حرف در قرآن «ب» و آخرین آن «س» است. طبق گفته ویدئو مجموع تعداد «ب»ها در اولین سوره و تعداد «س»ها در آخرین سوره میشود ۱۹. ببینیم:

num = 0
sura = tree.findall("sura")[0]
for aya in sura.findall("aya"):
    for char in aya.get("text"):
        if char == "ب":
            num += 1
sura = tree.findall("sura")[-1]
for aya in sura.findall("aya"):
    for char in aya.get("text"):
        if char == "س":
            num += 1
print(num)

ساختار کد بالا مانند کد بخش ۶ است با این تفاوت که ما دو سوره را بررسی کردیم نه یک سوره. وقتی کد بالا را اجرا کنیم در نهایت به عدد ۱۴ میرسیم که با گفته ویدئو منطبق نیست. اگر هم هر دو حرف «ب» و «س» را برای هردو سوره حساب کنیم به عدد ۱۹ میرسیم که عدد مورد نظر است ولی نه به صورتی که در ویدئو گفته شده.

۸- تعداد سوره‌ها با آیات تک رقمی

ویدئو ادعا میکند که تنها ۱۹ سوره داریم که تعداد آیاتشان تک رقمیست:

num = 0
for sura in tree.findall("sura"):
    if len(sura.findall("aya")) < 10:
        num += 1
print(num)

در کد بالا متغیری بنام num داریم که در ابتدا صفر است. کل سوره‌ها را بررسی میکنیم. اگر تعداد آیات سوره‌ای کمتر از ۱۰ بود، num را یک واحد افزایش میدهیم. در نهایت در خروجی عدد ۱۹ را میبینیم. بله درست است.

۹- تعداد حروف «بسم الله الرحمن الرحیم»

طبق گفته ویدئو، اولین آیه قرآن، ۱۹ حرف دارد. بررسی کنیم:

num = 0
for char in tree.find("sura").find("aya").get("text"):
    if char != " ":
        num += 1
print(num)

با find اولین سوره، اولین آیه‌اش و متن آن آیه را پیدا میکنیم؛ سپس در یک حلقه کاراکترهای غیر از فاصله را میشماریم. نتیجه میشود ۱۹؛ درست است. ۱۰- اولین و آخرین آیه ۱۹ حرفی قرآن اولین آیهٔ ۱۹حرفی قرآن که «بِسْمِ ٱللَّهِ ٱلرَّحْمَٰنِ ٱلرَّحِيمِ» است. ویدئو ادعا میکند آخرین آیه ۱۹ حرفی قرآن، آیه دوم سوره مسد است:«مَآ أَغْنَىٰ عَنْهُ مَالُهُۥ وَمَا كَسَبَ». حال کجای این قضیه حائز اهمیت است؟ آیهٔ اول با «بسـ» شروع و به «م» ختم شده است و آیه آخر با «م» شروع و به «سب» ختم شده است. دقیقا عکس هم. بررسی کنیم:

def remove(string):
    return string.replace(" ", "")
for sura in tree.findall("sura"):
    for aya in sura.findall("aya"):
        if len(remove(aya.get("text"))) == 19:
            print(sura.get("name"), aya.get("index"), aya.get("text"))

به ازای هر آیه از هر سوره بررسی میکند که آیا آیه ۱۹ حرفی است یا نه. اگر بود، نام سوره، شمارهٔ آیه و متن آیه را چاپ میکند. میبینیم آخرین خطی که چاپ میکند این است:«المسد 2 ما أغنى عنه ماله وما كسب». درست است آیه ۲ سوره مسد با آن متن. در ضمن تابع remove برای حذف فاصله از متن آیات است تا شمارش دچار خطا نشود.

۱۱- نوزدهمین آیه از آخر

طبق گفته ویدئو، آیه‌ای که به عنوان آخرین آیهٔ ۱۹ حرفی به آن اشاره شد، نوزدهمین آیه از آخر قرآن هم هست.

suras = tree.findall("sura")
suras = suras[::-1]
for sura in suras:
    ayas = sura.findall("aya")
    ayas = ayas[::-1]
    for aya in ayas:
        if len(remove(aya.get("text"))) == 19:
            print(sura.get("name"), aya.get("index"), aya.get("text"))
            exit()

ابتدا فهرست سوره‌ها را در suras ذخیره میکنیم و آن را عکس میکنیم چون میخواهیم از آخر به اول بیاییم. سپس به ازای هر سوره، برای آیه‌ها این کار را میکنیم. به اولین آیهٔ ۱۹ حرفی از آخر که رسیدیم، مثل مرحلهٔ قبل آن را چاپ میکنیم و خارج میشویم. بله؛ همان آیه است.

۱۲- تعداد سوره‌هایی که بدون «الـ» شروع میشوند

این ویدئو میگوید که تنها ۱۹ سوره بدون «الـ» شروع میشوند. سوره‌هایی که از آنها نام برده شده، چندین اشتباه دارند. به عنوان مثال، سوره آل عمران و بقره هر دو با «الم» شروع میشوند. سوره آل عمران در فهرست وجود دارد ولی سوره بقره خیر. به نظرم نیازی به کد برای بررسی صحت این ادعا وجود ندارد و اشتباه بودن آن واضح است.

۱۳- سوره قلم

این ویدئو ادعا میکند که آخرین حرف مقطعه قرآن در اولین آیه سوره قلم (ن) است و این آیه ۱۹مین آیهٔ قرآن است که با حرف «نـ» شروع میشود. اینکه اولین آیهٔ سورهٔ قلم آخرین آیهٔ دارای حروف مقطعه است درست است. ولی ببینیم این آیه چندمین آیه است:

num = 0

for sura in tree.findall("sura"):
    for aya in sura.findall("aya"):
        if aya.get("text")[0] == "ن":
            num += 1
            if num == 19:
                print(sura.get("name"), aya.get("index"), aya.get("text"))
                exit()

به ازای هر آیه از هر سوره بررسی میکنیم که آیا اولین حرف از آیه «ن» است یا خیر. اگر بله num یک واحد افزایش میابد. اگر num نوزده شد، مثل مراحل قبل آیه چاپ میشود و برنامه به اتمام میرسد. میبینیم که گفتهٔ ویدئو درست است.

۱۴ – نام‌های رسول اکرم (ص)

در ویدئو به این اشاره شده که ۱۹مین سورهٔ قرآن سورهٔ «طه» است، بین سوره‌های دارای حروف مقطعه ۱۹مین سوره یس و بین سوره‌های بدون حروف مقطعه ۱۹مین سوره محمد (ص) است؛ و تنها این سه سوره به نام‌های مبارک نبی اکرم (ص) هستند. با توجه به اینکه دستی محاسبه کردن این موارد از نوشتن کد آسانتر است از نوشتن کد صرف نظر میکنم. همهٔ مواردی که گفتم، در صورتی است که سورهٔ فاتحه را در ابتدای قرآن به حساب نیاوریم. اگر آن را به حساب آوریم ۱۹مین سوره در کل و ۱۹مین سورهٔ بدون حروف مقطعه تغییر پیدا میکنند. بعضی‌ها میگویند سورهٔ فاتحه جزو سوره‌ها نیست و مثل مقدمهٔ قرآن است. الله علیم!

۱۵- سورهٔ علق

چند ادعا دربارهٔ این سوره مطرح شده است: * این سوره ۱۹ آیه دارد. * اولین آیهٔ سجده‌دار قرآن آیه ۱۹ این سوره است. * آیه ۱۹ این سوره از آخر قرآن اولین آیهٔ ۱۹م است. * اولین آیاتی که بر نبی اکرم (ص) نازل شدند ۵ آیهٔ اول این سوره بودند که جمعا ۷۶ حرف هستند که این عدد مضربی از ۱۹ است.

مورد اول که واضح است. دربارهٔ مورد دوم منظور ویدئو را نمیفهمم. بدیهی است که در ترتیب قرآن اولین آیهٔ سجده‌دار آیه ۱۹ سورهٔ علق نیست! مورد آخر میگوید که اولین آیات نازل شده بر حضرت نبی (ص) ۵ آیهٔ اول این سوره هستند. دو نظر وجود دارد. یک نظر این را تأیید میکند و نظر دیگر میگوید ۳ آیهٔ اول این سوره اولین آیات بودند. حالا بنا را بگذاریم بر ۵ آیه. برویم مورد سوم را بررسی کنیم:

suras = tree.findall("sura")[::-1]
for sura in suras:
    if len(sura.findall("aya")) >= 19:
        print(sura.get("name"), len(sura.findall("aya")))
        exit()

ابتدا مثل بخش ۱۱ فهرست سوره‌ها را به صورت برعکس ذخیره کردیم. در نهایت به ازای هر سوره اگر تعداد آیات سوره بیشتر یا برابر ۱۹ بود، نام سوره و تعداد آیات آن را چاپ میکنیم و از برنامه خارج میشویم. خروجی میشود:«العلق 19» برای بخش آخر هم:

sum = 0
sura = tree.findall("sura")[95]
ayas = sura.findall("aya")
for i in range(5):
    aya = ayas[i]
    sum += len(remove(aya.get("text")))
print(sum)

سوره علق را با عنوان sura و آیاتش را با عنوان ayas ذخیره کردیم. با همان تابع remove بالا، فاصله‌ها را برداشتیم و طول آیات را با هم جمع کردیم. نتیجه شد ۷۸. دو واحد با گفتهٔ ویدئو متفاوت. فکر نکنم کد ما ایرادی داشته باشد.

۱۶- نوزدهمین «الله»

میگوید ۱۹مین الله از آخر قرآن در آیه ۱۹ سورهٔ انفطار قرار دارد که این سوره ۱۹ آیه دارد. در ضمن بین این الله و آخرین الله قرآن ۳۰ سوره وجود دارد که ۱۹ تای آنها کلا الله ندارند. اول جملهٔ اول را اعتبارسنجی کنیم:

num = 0
suras = tree.findall("sura")[::-1]

for sura in suras:
    ayas = sura.findall("aya")[::-1]
    for aya in ayas:
        words = aya.get("text").split(" ")[::-1]
        for word in words:
            if word in ["الله", "لله", "بالله", "والله"]:
                num += 1
                if num == 19:
                    print(sura.get("name"), aya.get("index"))
                    exit()

باز هم فهرست سوره‌ها و آیه‌ها را معکوس میکنیم. آیه یا کلمه کلمه جدا میکنیم. ترتیب کلمات را هم معکوس میکنیم. به ازای هر کلمه بررسی میکنیم که آیا کلمه، الله است یا نه. در نهایت در ۱۹مین الله نام سوره و شمارهٔ آیه را چاپ میکند. نتیجه میشود:«الإنفطار 19». درست است. حالا برویم سراغ جملهٔ دوم ادعا. اینکه آخرین «الله» قرآن در سورهٔ اخلاص است درست است. نیازی به بررسی با کد نیست. سورهٔ اخلاص سورهٔ ۱۱۲ قرآن است. پس با کد زیر سوره‌های ۸۲ (انفطار) تا ۱۱۲ (اخلاص) را بررسی میکنیم:

withallah = set()
withoutallah = set()
suras = tree.findall("sura")[81:112:]
for sura in suras:
    for aya in sura.findall("aya"):
        words = aya.get("text").split(" ")
        for word in words:
             if word in ["الله", "لله", "بالله", "والله"]:
                 withallah.add(sura.get("name"))
                 break
    if sura.get("name") not in withallah:
        withoutallah.add(sura.get("name"))
print(len(withallah))
print(len(withoutallah))

سوره‌های دارای «الله» را در مجموعهٔ اول و بدون «الله» را در مجموعهٔ دوم ذخیره میکنیم. از مجموعه استفاده میکنیم تا موارد تکراری حذف شوند. در suras سوره‌های ۸۲ تا ۱۱۲ را ذخیره میکنیم. آیه به آیه بررسی میکنیم. اگر آیه‌ای «الله» داشت سورهٔ آن را به مجموعهٔ اول اضافه میکنیم. اگر سوره‌ای در مجموعهٔ اول نبود آن را به مجموعهٔ دوم اضافه میکنیم. در نهایت خروجی را چاپ میکنیم. درست است. تعداد اعضای مجموعهٔ دوم ۱۹ است. ولی تعداد سوره‌های دارای «الله» را ۱۲ نشان میدهد در حالیکه ویدئو گفته ۱۱. چون هدف بررسی آن ۱۹ بود مهم نیست دلیل این قضیه ولی شاید خود سورهٔ انفطار را ویدئو محسوب نکرده.

۱۷- آیه ۱۹ سورهٔ توبه

دربارهٔ آیه ۱۹ سورهٔ توبه این مطالب را میخواهیم بررسی کنیم: این آیه در بین آیه‌های ۱۹ بیشترین «الله» را دارد. ابجد «الله» ضرب در شمارهٔ آیه در سوره (۱۹) میشود ۱۲۵۴ که شمارهٔ آیه از اول قرآن است. در کد زیر هم شمارهٔ آیه در کل قرآن را محاسبه میکنیم هم اینکه آیا این آیه در بین آیه‌های ۱۹م بیشترین الله را دارد یا نه:

num = 0
allahn = 0
ayaname = ""
for sura in tree.findall("sura"):
    for aya in sura.findall("aya"):
        num += 1
        if num == 1254:
            print(sura.get("name"), aya.get("index"))
        if aya.get("index") == "19":
            allahaya = 0
            words = aya.get("text").split(" ")
            for word in words:
                if word in ["الله", "لله", "بالله", "والله"]:
                    allahaya += 1
            if allahaya > allahn:
                allahn = allahaya
                ayaname = sura.get("name") + " " + aya.get("index")
print("Aya name:", ayaname)

متغیر num برای شمارش شمارهٔ آیات از اول قرآن، allahn برای ذخیره تعداد «الله» در آیه‌ای است که بیشترین الله را دارد؛ و ayaname برای ذخیره نام سوره و شمارهٔ آیه است. بخش بررسی اینکه آیه این آیه ۱۲۵۴ است که نیاز به توضیح ندارد. در ادامه، کد بررسی میکند اگر آیه‌ای آیهٔ ۱۹ باشد، تعداد allahaya را که برای هر آیه تعداد «الله»ها را میشمارد را یک واحد افزایش میدهد. در نهایت آن را با allahn مقایسه میکند. اگر بیشتر بود allahn و ayaname را مطابق آیهٔ جدید تغییر میدهد. در نهایت ayaname را چاپ میکند. میبینیم که بله درست است. آیهٔ ۱۹ سورهٔ توبه بیشترین واژهٔ «الله» را دارد.

۱۸- سوره‌ها با اسامی حیوانات

ویدئو میگوید کلا ۵ سوره داریم که نام آنها نام یک حیوان است. اگر تعداد آیات و شمارهٔ این سوره‌ها را جمع کنیم مضرب ۱۹ میشود. چون تعداد این سوره‌ها کم است نیازی به کد نیست و بررسی دستی هم ممکن است. با بررسی متوجه میشویم این ادعا درست است.

۱۹- آیات اول ۱۹ حرفی

میگوید کلا ۴ سوره داریم که آیات اولشان ۱۹ حرفی هستند. اگر شمارهٔ این سوره‌ها را جمع کنیم میشود ۲۶۶ که مضرب ۱۹ است. کاری با تعداد این سوره‌ها نداریم. بیایید شماره‌هایشان را جمع کنیم:

suras = tree.findall("sura")
num = 0
for sura in suras:
if len(remove(sura.find("aya").get("text"))) == 19:
num += int(sura.get("index"))
print(num)

به ازای هر سوره اگر طول آیهٔ اولش ۱۹ باشد (با حذف فاصله‌ها)، num به اندازهٔ شمارهٔ سوره افزایش داده میشود. در نهایت میبینیم num شده ۲۶۶ که درست است.

۲۰- حرف مقطعهٔ «ق»

در ویدئو به این اشاره شده که تنها دو سوره حرف مقطعهٔ قاف را دارند؛ سوره‌های قاف و شوری. حروف مقطعهٔ سورهٔ شوری «ق» نیست؛ «حم عسق» است. ولی اگر منظور ویدئو را این در نظر بگیریم که تنها سوره‌هایی که در حروف مقطعه‌شان حرف قاف وجود دارد بله تنها این دو سوره را داریم. ادعا این است که در هر دوی این سوره‌ها ۵۷ عدد قاف وجود دارد. این عدد از آن جهت جالب است که مضرب ۱۹ است و در هر دو سوره برابر است. و همچنین اینکه جمع تعداد آیات با شمارهٔ سوره در هر دو سوره برابر ۹۵ است. این هم دقیقا به دلایل مشابه جالب است. بررسی کنیم:

suranums = [42, 50]

result = ""

for sura in tree.findall("sura"):
    if int(sura.get("index")) in suranums:
        num = 0
        for aya in sura.findall("aya"):
            for char in aya.get("text"):
                if char == "ق":
                    num += 1
        result += sura.get("name") + " " + str(num)

print(result)

در suranums شماره این دو سوره را داریم. به ازای هر سوره بررسی میکنیم که شمارهٔ سوره آیا برابر یکی از این دو مقدار هست یا نه. اگر بله یکی یکی نویسه‌ها بررسی میشوند که آیا قاف هستند یا نه. اگر بودند num که در هر سوره صفر میشود یک واحد افزایش میابد. در نهایت نام سوره و تعداد قاف هایش در result ذخیره میشوند. پس از چاپ آن «الشورى 57ق 57» را میبینیم که طبق ادعای ویدئوست. مورد دوم (۹۵) هم که ساده‌ست و دستی قابل محاسبه است. این مورد هم درست است.

۲۱- نوزدهمین قاف

باید بررسی کنیم که آیا ۱۹مین «ق» در قرآن در آیه ۱۹ سورهٔ بقره هست یا نه:

num = 0

for sura in tree.findall("sura"):
    for aya in sura.findall("aya"):
        for char in aya.get("text"):
            if char == "ق":
                num += 1
                if num == 19:
                    print(sura.get("name"), aya.get("index"))
                    exit()

در کد به ازای هر نویسه در هر آیه در هر سوره بررسی میکنیم که آیا نویسه برابر «ق» هست یا نه. اگر بود num یکی افزوده میشود و اگر برابر نوزده شد نام سوره و شمارهٔ آیه چاپ میشود. نتیجه شد «البقرة 19» که درست است.

۲۲- آیه‌های شروع شده با «الله»

در ویدئو ادعا شده که فقط ۳۸ آیه با واژهٔ «الله» شروع شده‌اند. ۳۸ هم که مضرب ۱۹ است. ببینیم این ادعا درست است؟

num = 0

for sura in tree.findall("sura"):
    for aya in sura.findall("aya"):
        word = aya.get("text").split(" ")[0]
        if word == "الله":
            num += 1

print(num)

کد که واضح است. نتیجهٔ این کد ۳۴ است. طبق گفتهٔ ویدئو نیست. ولی اگر بگوییم که «لله» هم محاسبه شود، نتیجه میشود ۳۸. ولی اگر «والله» و «بالله» را محاسبه کنیم عدد باز هم تغییر میکند. اصولا باید یا فقط «الله» را محاسبه کنیم یا «والله» و «بالله» را هم محاسبه کنیم که در هر دو صورت عدد اشتباه است.

۲۳- سوره‌های بدون الف

ویدئو میگوید ۶۷ سوره داریم که در نامشان الف وجود ندارد. اگر شمارهٔ این سوره‌ها را جمع کنیم برابر ۳۹۷۱ میشود که مضرب ۱۹ است. فعلا جملهٔ اول را راستی‌آزمایی کنیم:

withalef = 0
num = 0

for sura in tree.findall("sura"):
    num += 1
    for char in sura.get("name"):
        if char == "ا":
            withalef += 1
            break

print(num-withalef)

حرف به حرف نام هر سوره را بررسی میکنیم. چه الف داشته باشد چه نداشته باشد num را یک واحد افزایش میدهیم. البته میتوانستیم همان اول آن را برابر ‍۱۱۴ در نظر بگیریم. و اگر الف داشت، withalef را یک واحد افزایش میدهیم. در نهایت اختلاف این دو را محاسبه میکنیم. میشود ۱۴! خیلی با ۶۷ فاصله دارد. اگر به فهرست موجود در ویدئو و نام سوره‌ها در پروندهٔ XMLمان نگان کنیم، میبینیم خیلی سوره‌ها مثل رعد در فهرست ویدئو بدون الف هستند ولی در پروندهٔ XML با الف (الرعد). حالا اینکه کدام درست است الله اعلم.

۲۴- ۳۱ عدد دو رقمی

اینبار ادعا این است که اگر شمارهٔ هر سوره را با تعداد آیاتش جمع کنیم، این عدد برای ۳۱ سوره دو رقمی است. و اگر شمارهٔ این ۳۱ عدد را جمع کنیم میشود ۱۴۴۴ که مضرب ۱۹ است:

suras = []
sum = 0

for sura in tree.findall("sura"):
    number = int(sura.get("index")) + len(sura.findall("aya"))
    if 10 <= number < 100:
        suras.append(sura)

for sura in suras:
    sum += int(sura.get("index"))

print(sum)

به ازای هر سوره بررسی میکنیم که آیا عددی که گفته شد در بازهٔ دو رقمی هست یا نه. اگر بود سوره را به لیست suras اضافه میکنیم. در نهایت در sum شمارهٔ هر سوره را اضافه میکنیم. در نهایت خروجی میشود ۱۴۴۴. درست است.

۲۵- سورهٔ مریم

میگوید در سورهٔ مریم ۱۰۸۳ واژه به کار رفته و و اگر تکرار حروف واژهٔ «مریم» در ین سوره را جمع بزنیم باز هم میشود ۱۰۸۳. و البته این عدد مضرب ۱۹ است. البته تعداد واژگان موجود در سورهٔ مریم را محاسبه کنیم:

sura = tree.findall("sura")[18]

wordsnum = 0

for aya in sura:
    wordsnum += len(aya.get("text").split(" "))

print(wordsnum)

به ازای هر آیه wordsnum را به اندازهٔ تعداد واژگان آن آیه افزایش میدهیم و در نهایت چاپ میکنیم. نتیجه شد:«۹۷۱». اشتباه است. و ادعای دوم درباره حروف واژهٔ «مریم»:

chars = "مریم"
num = 0

for aya in sura.findall("aya"):
    for char in aya.get("text"):
        if char in chars:
            num += 1

print(num)

به ازای هر نویسه از هر ایه میبینیم اگر نویسه در رشتهٔ «مریم» هست، num یک واحد افزایش پیدا کند و در نهایت num را چاپ میکنیم. نتیجه میشود:«۴۵۴». این هم اشتباه است!

این نوشته را با هدف اثبات یا رد اعجاز عددی قرآن برای خودم نوشتم (یا شروع کردم)؛ با انتشار عمومی آن ان شاء الله رضایت شامل حالم شود :)

 
بیشتر بخوانید...

from alexis

Je ne suis pas encore certain de saisir tout ce qui se cache derrière la satisfaction d'utiliser Linux. Il y a d'une part la satisfaction non avouée d'être un peu plus spécial que les autres et un peu plus “libre”. Il y a ensuite la vidange intérieur de l'amertume et l'anxiété causée par une dépendance à des corporations milliardaires et omnipotentes. La joie et la quiétude de l'émancipation. Ensuite vient le plaisir du jeu, de la découverte et de la nouveauté.

Exploration, enquête, essai et erreur. Et c'est là une spécificité de Linux. Là où Windows et Mac OS sont conçus pour qu'on ait le moins possible à penser à l'écosystème et à l'OS, celui ou celle qui utilise Linux est très conscient de son système d'opération. Et ici une nouvelle satisfaction vient du travail qu'il faut faire pour façonner une interface à son image et son goût. On se découvre la capacité d'élucider des problèmes qui jadis s'imposaient à nous comme une fatalité. Rien, avec Linux, n'est insoluble. Avec un peu de patience, tout est possible. Finalement, et c'est quelque chose à quoi je ne m'attendais pas, c'est le côté humain de l'OS. Parce que qui explore cette voie passe nécessairement par les traces de milliers d'autre avant lui. Il découvre des communautés de passionnés et une myriades d'ingéniosités partagées sur le web. Derrière chaque extension, chaque thème, chaque réponse assidue à des forums nichés se cachent des gens.

Là où pour les grandes corporations l'inhumain est gage de prestige et d'élégance, Linux est un superbe alliage hétérogène d'intentions, de goûts, de gens. Bien entendu payer pour une licence Windows c'est payer pour un produit clé en main qui se tient, d'un bloc pour nous. Qu'on le veuille ou non les artisans, les humains qui l'ont créés resteront pour toujours anonyme parce qu'ils sont accessoire à Windows et Microsoft. Mais avec Linux, à quelque part, la communauté d'artisan est inséparable de ses créations.

Et le plaisir de découvrir ça, c'est quelque chose qui est difficile à expliquer. Difficile d'expliquer à celui ou celle qui a grandi dans l'écosystème léché de Apple pourquoi ça vaut la peine de passer des heures à s'échiner à essayer de faire fonctionner un logiciel, parce qu'on utilise un commun numérique et qu'on fait maintenant parti d'une communauté.

Enfin, je dit tout ça, mais ce n'est peut-être que la lune de miel. Reste à voir si je ne m'en lasse pas.

 
Read more...

from 一号博客

研究蒋介石在北伐过程中对汪精卫、共产党态度的变化。看他如何一部部走向反共。 研究国民党一大前后的广州民国日报

 
阅读更多

from 张发奎

中美洲国家最重要的收入来源是种植、出口咖啡、香蕉等种类有限的经济作物。 因地理、自然资源问题,中美洲各国经济开发总体比较落后。 哥斯达尼加是其中状况较好的一国。 由于哥斯达尼加国内在19、20世纪存在较多中小型种植园,产生了数量较多的中等收入者。这个中间阶层促使该国的政客无法忽略其利益,进而令该国的民主政治在中美洲各国中实施得最好。在20世纪三四十年代,哥斯达尼加是唯一没沦为独裁者统治的国家。 二战后哥斯达尼加也开始实施左翼社会政策。但八九十年代间,这些社会福利造成沉重的政府财政负担,赤字非常严重。随着咖啡价格下跌,政府推行自由主义改革,哥斯达尼加跌入贫困线下者越来越多。

 
阅读更多

from Jazzy Expert

CBD Gummies Unveiled: A Flavorful Journey in to Cannabidiol Pleasures

In the region of cannabis consumption, CBD gummies have surfaced as beautiful and easy goodies that mix the beneficial great things about cannabidiol with the ease of a common, soft format. These gummies , infused with CBD derived from the cannabis place, have grown to be increasingly common as a mainstream wellness solution, offering users a tasty and available way to incorporate the potential great things about CBD to their day-to-day routines.

CBD , or cannabidiol, is a non-psychoactive element within the cannabis plant. Unlike their more popular counterpart, THC (tetrahydrocannabinol), CBD does not cause a “high.” Alternatively, it interacts with the endocannabinoid process in the body, perhaps providing a range of therapeutic results, including stress comfort, anxiety reduction, and pain management.

CBD gummies give a user-friendly access level for those discovering the advantages of CBD. These snacks usually resemble conventional gummy candies, creating them approachable and discreet. The gummies come in various designs, flavors, and levels of CBD , letting customers to pick products that suit their preferences and dose requirements.

Among the crucial features of CBD gummies is their convenience. Unlike other styles of CBD , such as for example tinctures or supplements, gummies require no extra gear or preparation. They're pre-dosed, reducing the necessity for measuring or calculating dosage. This simplicity makes CBD gummies a stylish selection for individuals looking to incorporate CBD into their wellness routines minus the complexity related to various other usage methods.

The appeal of CBD gummies stretches beyond their easy use. The discreet nature of those sweets allows consumers to benefit from the potential benefits of CBD without pulling attention. Whether at the office, in cultural options, or during journey, CBD gummies give you a simple and socially acceptable way to integrate cannabinoids into daily life.

Quality variety is still another significant aspect of CBD gummies. Makers often provide an array of types, from fruity to bitter, catering to various taste preferences. This diversity promotes the entire experience, turning the behave of eating CBD right into a enjoyable and flavorful moment.

CBD gummies also handle the aversion some people might have to the earthy style associated with normal CBD oil. The infusion of CBD to the gummy formula enables users to enjoy the huge benefits without the specific taste that can be a deterrent for some.

Beyond taste and ease, the managed dose given by CBD gummies presents people a degree of predictability. Each gummy usually contains a particular quantity of CBD , which makes it simpler for customers to control and monitor their intake. This precision is particularly useful for many who involve consistent dosing for therapeutic purposes. buudabomb.com

The possible healing effects of CBD keep on to be an area of fascination for researchers and people alike. While individual reactions to CBD can vary, some users report encountering rest from problems such as for example nervousness, insomnia, and chronic pain. The versatile nature of CBD causes it to be a functional supplement that fits into various wellness regimens.

It's essential to observe that rules and directions encompassing CBD services and products range by region. Customers should guarantee they purchase CBD gummies from reliable sources that conform to quality and safety standards. Third-party testing for capability and love is really a frequent training among trustworthy CBD companies, providing consumers with visibility concerning the contents of the merchandise they choose.

Just like any wellness solution, it's sensible for individuals to consult with healthcare specialists before integrating CBD gummies or any CBD solution to their routines, especially if they have current health problems or are using medications.

Basically, CBD gummies symbolize a mix of flavor, comfort, and possible wellness advantages within the world of cannabis-derived products. While the acceptance of CBD continues to grow, these gummies offer a fun and approachable entry point for persons seeking to investigate the possible healing ramifications of cannabinoids. Whether as an everyday complement or an unexpected address, CBD gummies are finding their place in the diverse landscape of wellness items, giving people with a flavorful and accessible way to feel the potential advantages of CBD.

 
Read more...

from bkkslot777

bkkslot สล็อตpg รวมเกมยอดฮิตทุกค่ายเกมดัง มาให้เลือกเล่น

bkkslotรวมเกมทุกค่ายไว้ในที่เดียว bkkslot ที่นี่ได้รับการส่งจาก PG เกมดังครบทุกรูปแบบเล่นได้อิสระ เลือกเล่นเกมสล็อตได้ตามใจชอบ สล็อตเว็บตรงแตกหนัก bkkslot เล่นทุกครั้งไม่มีการบวกเงินเพิ่ม เริ่มต้นทำเงินได้รัวๆ พร้อมทำกำไรได้อย่างอิสระที่สุดในขณะนี้ ปั่นสล็อตในงบเบทขั้นต่ำ 1 บาทก็เล่นเกมฮิตได้ไม่อั้น ทุกเกมในค่ายดังไม่มีความเสี่ยง คัดเกมที่ทันสมัยและระบบน่าสนใจ สล็อตเว็บตรงไม่ผ่านเอเย่นต์ เล่นทุกยอดแตกดี ซึ่งผู้เล่นสามารถใช้งานได้ตามใจชอบ สล็อตเว็บตรง อันดับ 1 หากไม่อยากพลาดเกมเด็ดจากค่ายดังๆ ลองเข้ามาสมัครเล่นที่นี่คุ้มในระยะยาวแน่นอน

สมัครสมาชิก bkkslot กับเรา รับโบนัสสูงที่สุดตอนในตอนนี้

สมัครสมาชิกใช้งานกับ สล็อตเว็บตรง ลงทะเบียนแบบไม่คิดเงินเพิ่ม เมื่อสมัครเสร็จก็รับโบนัส รับโปรโมชั่นสูงที่สุดในตอนนี้ แต่ละโปรโมชั่นไม่ต้องทำเทิร์น สล็อตเว็บตรงแตกง่าย ไม่มีการเก็บเงินย้อนหลัง ถ้าสนใจการสมัครและรับโบนัสสุดคุ้ม เว็บสล็อตที่นี่คืออันดับ 1 ที่ผู้เล่นไม่ควรพลาด เพราะทุกยูสเซอร์รับโบนัสเพิ่มเติมได้สูงสุด 100% สล็อตเว็บตรง pg ไม่ผ่านเอเย่นต์ แตกต่างจากเว็บผ่านเอเย่นต์อย่างแน่นอน เนื่องจากที่นี่ส่งตรงจากค่ายหลัก เว็บสล็อตออนไลน์ ที่ดีที่สุด แค่กดเข้ามาสมัครก็รับโบนัสที่คุ้มหลายเท่าตัวได้เลย เล่นทุกยอดแตกไม่อั้น

bkkslot เล่นกับเรา ได้กำไรชัวร์ แตกหนัก แตกจริง

เล่นกับเราวันนี้ได้กำไรชัวร์ๆ สล็อตเว็บตรง ระบบการเล่นดี อัตราชนะสูงที่สุดและเปอร์เซ็นต์ได้รับรางวัลคุ้ม แตกหนัก แตกจริงและโอนเงินไว ปั่นสล็อต ทุกเกมสล็อตมีโอกาสลุ้นรางวัลสูงถึง 1 ล้านบาท รวมทุกเกมดังและข้อดีต่างๆไว้ในที่เดียว แค่กดเข้ามาสมัครสมาชิกก็มีความคุ้ม ถ้าอยากลุ้นรับรางวัลจากการ SPIN ไม่ว่าจะเล่นด้วยตัวเองหรือระบบออโต้ สล็อตออนไลน์ ได้เงินจริง เว็บนี้ก็ยินดีให้บริการอย่างต่อเนื่อง เพื่อให้ผู้อ่านเห็นถึงภาพรวมและข้อดีต่างๆ โปรโมชั่นสล็อต สามารถเข้ามาดูจุดเด่นจากการเล่นเว็บตรงได้เลย เล่นที่นี่ไม่ผิดหวังและมีข้อดีดังนี้

bkkslotทุกเกมมีอัตราการชนะสูง

ทุกเกมที่ให้บริการอัตราชนะสูง ไม่ว่าจะเป็นสล็อตแบบไหนก็อัตราชนะเกิน 90% ถ้าสนใจการเล่นสล็อตที่แตกหนัก แตกง่ายและได้กำไรอย่างสม่ำเสมอ สล็อตเว็บตรง ฝาก-ถอน true wallet ไม่มี ขั้น ต่ํา การเล่นสล็อตที่นี่ตอบโจทย์อย่างแน่นอน เนื่องด้วยมีอัตราการได้รับรางวัลที่สูงมากๆ ถ้าเปรียบเทียบกับการใช้งานที่อื่นๆ ค่ายสล็อตแห่งนี้ดีกว่าและน่าเล่นกว่า สล็อตเครดิตฟรี เพราะมีโอกาสชนะและได้รับรางวัลไปได้เลย ดังนั้นการเลือกใช้งานที่นี่โอกาสชนะสูงที่สุด

bkkslotรวมเกมค่ายดัง ปั่นยังไงก็แตก

รวมเกมน่าสนใจไว้ในที่เดียว เล่นสล็อตครบวงจรได้อย่างครบถ้วน ทุกเกมตลอดปั่นยังไงก็ได้กำไรตลอด 24 ชั่วโมง เนื่องจากมีอัตราแตกหนักและจ่ายเงินจริง SPIN ทุกยอดยังไงก็แตกไม่อั้น สล็อตเว็บตรง ฝาก-ถอน true wallet ไม่มี ธนาคาร ไม่มี ขั้น ต่ํา เบทสูงหรือเบทต่ำก็ทำกำไรได้หลายเท่าตัว หากสนใจการเล่นสล็อตที่มีครบทุกค่ายดัง พร้อมรางวัลที่จัดหนักและจัดเต็มไม่ควรพลาด ถ้าไม่อยากพลาดสล็อตที่สนับสนุนจากค่ายดังๆที่นี่คือคำตอบ ปั่นยังไงก็แตกอย่างสม่ำเสมอ

bkkslotโบนัสเข้าง่ายด้วยสูตรสล็อตระบบ AI

โบนัสในการเข้าใช้งานง่ายดายมากๆ เพราะมีสูตรการเล่นด้วยระบบ AI ที่การันตีถึงความแม่นยำ ถ้าอยากได้รับรางวัลเน้นๆ พร้อมอัตราชนะที่เพิ่มขึ้นหลายเท่า ควรใช้งานสูตรสล็อตที่นี่ได้เลย ซึ่งมีการอัปเดตให้ใช้งานอย่างต่อเนื่อง เรื่องภาพรวมและการใช้งานต่างๆที่นี่คือคำตอบ สล็อต เว็บตรงไม่ผ่านเอเย่นต์ไม่มีขั้นต่ำ เล่นทุกยอดแตกดีและอัตราแตกจากสูตรเยอะที่สุด หากเป็นมือใหม่ที่อยากได้รับรางวัลเน้นๆ การเข้ามาเล่นด้วยโบนัสจากสูตรที่นี่ก็มีให้บริการ

 
Read more...

from CClaude

Des ballons dans le ciel Ça me fait toujours un drôle d'effet lorsque je vois des photos de ballons s'élevant dans le ciel, alors qu'il n'y a plus une main pour les retenir.
À une période de ma vie, ma chérie et moi avions pris la décision de tout recommencer, de partir dans une autre région sans garantie aucune. Le jour où enfin nous avons été prêts, j'ai eu cette image dans la tête, des ballons qui étaient lâchés et qui montaient dans le ciel à la dérive.
L'angoisse de notre devenir s'était illustrée ainsi.
Depuis cette image est pour moi synonyme d'incertitude, d'angoisse et d'insécurité.

 
Lire la suite...

from magda

Part I Part II Part III/I

After Devuan gave me a massive headache, there was one last distribution left to install. And it gave me a different kind of headache.

Salix 15.0

Salix is a Slackware-based distribution for “lazy Slackers”. Unlike its parent distribution, which is famous for lacking a modern package manager resolving dependencies AND official package repositories, Salix ships with the APT-inspired slapt-get CLI package manager and Gslapt, which strongly resembles Synaptic but lacks the category column.

While Salix offers its own repositories, it is backwards-compatible with Slackware. It offers two ISO's, one a regular ncurses-based minimal installer and the other is labelled “SalixLive”, which ships with a pre-configured Xfce4 desktop and “one application per task”. Because SalixLive provided the second-lightest Live-ISO but a much saner desktop experience than antiX, I decided to try my luck with it.

Installation

Previous reviews from other people highlighted certain aspects of the graphical installer that no longer hold up in version 15.0. The installer, while sparse and boring, now offers the option to install GRUB for those not wanting to use LILO. It also includes a button to run GParted, as partitioning still needs to be done manually for the most part.

During the VM test, I ran the installer as expected and assumed that it inherited locale and keyboard settings from boot. It turned out that I could not log in afterwards because Salix defaults to the Swiss German keyboard when selecting “German” during boot of the Live-ISO. (Nothing against Swiss German but fuck Swiss Germans and their superiority complex over their alphabet lacking “ß”. And if you cannot read this weird letter that's exclusive to the German language, it's the “sharp s” that looks like a cursive “b”.)

This time I set the locale but initially didn't notice that it did not include “de.DE-utf8” (it did include “de” but past experiences with this one on Arch left me traumatized), so I chose “de-latin1”. Before letting the installer do its job, however, I had to resize the toolbar because it blocked the installer's progress bar. I chose the full installation.

The installation process took 20 minutes, just a minute longer than Devuan.

First Impressions

Just like Devuan, os-prober is disabled by default but can be enabled manually. The root user also is disabled and my user is granted full superuser access via sudo. Booting Salix was minimally faster and the log spam caused by the missing b43-firmware was more tolerable. The ISO, however, was so old that Xscreensaver complained about it.

Running htop, I noticed that the installed system was on par with the Live-ISO in terms of demands. CPU and RAM usage were nearly identical. After a while, the netbook started to get warm, yet temperatures largely remained at 26°C, according to the systray's battery icon. I double-checked this value during the course of this test because this value wouldn't change at all, even during noticeable increases – it tuned out htop was closer to the actual temperature once again, reporting temperatures between 33 and 37°C under higher load and after running Salix for two hours. Just like on Devuan, moving the mouse cursor makes the CPU jump to 10%, any other application to at least 48%. Adjusting cpufreg and changing “ondemand” to “conservative” was necessary to stop the machine from suddenly jumping between “max fan activity” to “no activity, gotta shut the hard drive down”.

At this time I noticed that the clock did not display the correct time, indicating that the installer ignored its timezone setting. The language set during install only affects the command-line, meaning that the graphical desktop was set to English. The keyboard, surprisingly, was indeed set to de-latin1.

Of course, Salix also does not offer the missing b43 driver, however its Slackware roots now came in handy due to a SLACKBUILDS being available for both b43-firmware and b43-fwcutter. Although it took me a few minutes to navigate through the process, I noticed that's it not all too different from the Arch build system and its PKGBUILD scripts. Once done, I was provided a working driver for my Wifi card and not only did the log spam disappear but boot times improved noticeably. Switching my default shell to zsh also improved the RAM usage of Salix.

First Annoyances

In the middle of “ricing”, the de-latin1 locale turned out to be a poor choice because it caused Fluxbox to crash instantly and inxi (via Perl) to generate “missing locale” errors. Manually setting the locale to de.DE-utf8 solved both issues. Unfortunately, LightDM does not automatically detect other sessions, so I had to write a .desktop file first and tell startx to default to Fluxbox as fallback. Oddly enough, starting Fluxbox via LightDM renders the systray unusable, whereas executing Fluxbox via startx loads the systray and all autostart applets but nm-applet. The same issue applies to setting a wallpaper with feh: Running Fluxbox via startx will load the .fehbg as intended but stating Fluxbox via LightDM will overwrite the background with its own. We'll get back to this later.

Downloading PCManFM also required lxappearances, though executing the latter will draw the window with blurry text just like it already was the case in Xscreensaver. PCManFM also was unable to detect my USB drive, forcing me to manually mount and unmount it, and lacked a “trash” shortcut (but listed shortcuts for three root sub-directories). Shutdown and reboot via Fluxbox's menu are not possible without superuser privileges but because Salix ships with LightDM, instead of SLIM like Devuan, I wasn't tied to the Xfce session to do both.

(Mom, I'm scared.)

A reboot after enabling os-prober revealed not only the missing Windows 7 Starter entry but an additional set of entries for Salix 15.0 and its advanced options hosting a whopping four kernels, all of the “huge” kind. Strangely enough, trying to download the generic kernel via Gslapt is not possible due to the generic kernel being set to “excluded”. Hey, at least the description for the “huge” kernels include some humor!

But my half-assed Fluxbox session was beginning to piss me off, so I switched to Openbox, which was instantly detected by LightDM. Now being confronted with the same “shutdown” issues as before, I downloaded obshutdown, yet upon closer look, it turned out that this package hasn't been properly configured in a long time, as it attempts to suspend and poweroff the machine by calling ConsoleKit via D-Bus – neither does Salix ship with ConsoleKit (or ConsoleKit2 for that matter), nor has it seen any kind of “standalone” development since it was merged with systemd a decade ago. To break shutdown and reboot out of the silly root prison, one logically needs to mess with sudoers. An it only made it possible for my user to see those commands, yet not execute them without sudo. Because editing this file caused vim to nag me about this being a protected file and thus requiring to force-save any changes to it, I gave up trying.

At the same time, I noticed xscreenlocker-command not suspending the machine when invoked, instead it simply locks it.

(I don't know who came up with this configuration and why distributions managed by old “Unix fans” decided to make this the default setting for their flavors targeting mortals that are mere “home users” but still shipping such a default config in 2024 should be a crime, especially if it intentionally ships a partially-broken XScreensaver.)

Documentation

(NOTE: Yes, the screenshot above was taken on my Acer Aspire and the white border is just one of scrot's rare glitches. This netbook is just to weak for graphical browsers and its screen too tiny to read wiki pages even via Links/Lynx comfortably... and I already reached the point where I stopped typing this post on the Salix machine because vim spammed my USB drive with temporary files.)

Before letting my urge to customize Salix distract me further, I checked the documentation until the weather improved for the first outdoor test.

Because Salix is a much smaller project, documentation is sparse and noticeably hasn't gotten much attention since version 14.1, which was released in 2014, because the b43 driver no longer is being distributed by Salix. All articles are kept in a HOWTO-style that don't provide brief explanations or links to the used tools. This is counter-intuitive as Salix advises to stick to the tools and package repositories provided by Salix to prevent breakages. So while Salix is backwards-compatible with Slackware, you better not try to install packages from Slackware repos such as Alienbob. SLACKBUILD packages, however, don't have an effect on Salix and it generally is safe to use them; the official documentation ignores them entirely.

Speaking of “ignoring it entirely”: The docs do mention that Fluxbox does not ship with a configuration for GDM. Users thus have to manually create a .desktop file to select the window manager in LightDM. I don't buy this justification that Fluxbox doesn't ship it because any other bare-bone distribution is capable of shipping its own file – when I installed Fluxbox on Arch Linux, I didn't have to manually tell LightDM that Fluxbox exists, in fact the necessary file is part of the Fluxbox package.

In defense of Salix, the Arch Wiki provides a faulty example configuration that sets Fluxbox's type – Openbox in Arch's example – to Application, rather than Xsession. This may explain why starting Fluxbox via startx went smoothly but starting it via LightDM borked the entire startup script. Salix at least provides a correct example config in their docs.

Of course, I could have used the desktop shortcut to the IRC channel of Salix but I already moved to Openbox by the time I noticed the Arch Wiki being wrong once again. Relying on man pages was pointless, as packages such as Glapt lack such things and LightDM and Fluxbox being shipped with unedited upstream man pages. The forum is similarly useless.

(Listen, you just can't go “RTFM” when your wiki looks like a bootleg WikiHow that hasn't been updated since 2014 and your half-hearted Synaptic ripoff not even offering a man page.)

The Outdoor Experience

Once I reached this point, I was getting extremely frustrated and refused to even touch my netbook until the outdoor test.

I was sticking to the default Xfce session but relied on xterm, instead of Xfce Terminal, and Vim, instead of NeoVim, to get my stuff done. The weather wasn't entirely suited for this due to moderate winds and clouds but it sufficed, as I didn't feel ready to take this setup with me during actual field trips.

To my surprise, the machine's temperatures remained quite low during the first ten minutes. While the battery applet in the systray appears to be stuck at 26°C regardless of anything, htop reports the system varying between a very comfortable 20 and 24°C (as long as I don't accidentally cover the CPU with my leg but that's just shitty hardware design). After 20 minutes, temperatures rise to 30°C and the netbook gets noticeably warm even when making sure that the CPU can “breathe”. The battery, while its health being reported being 92%, did not run out as fast as initially suspected, even with increased screen brightness. However, the panel tracking the battery does not change until reaching a drop of either 2 or 3%. 20 minutes claim approximately 17% of battery power, meaning that the battery loses 1% per minute on average.

Simulating the field experience, I tweaked XScreensaver to lock the netbook before suspending and gave it a run. Shockingly, while the system does suspend instantly, it locks it after unsuspending it and takes a few seconds to do so, leaving my logged-in desktop accessible. Before suspending, the machine resided at 71% and 30°C; I unsuspended the netbook after six minutes and the battery applet dropped from 71 to 69% within five seconds, while htop reports a CPU temperature of 23°C (the battery applet remained at 26%).

After a while, the automatic update reminder popped up on the panel, despite lacking an internet connection. I assume that its script to always report software updates, regardless of whether there are any pending.

At 66%, I decided to switch to my half-assed Openbox session. Right away I noticed temporary save files generated by Vim automatically being stored on my USB drive, cluttering all directories that have been touched by any file I save. The battery, at the start stating 64% via PowerKit, dropped to 63% after not even a minute and further dropped to 60% after five minutes since the start of the session – a negligible difference when compared to the Xfce session. The temperature at least did not exceed 32°C but that also is a fairly minor improvement that only becomes apparent when the wind is blowing and thus provides some external cooling.

The field trip

One day before the field trip, I noticed that the reason why PCManFM cannot access trash and mount my USB when running Openbox. LightDM lacked D-Bus activation – as much as I do not want to curse at this point but FOR FUCKS SAKE this is just plain bad. Who the fuck ties D-Bus to a specific DE?!

After manually editing LightDM.conf, trash became accessible but mounting not. Turns out this required Polkit. I wrote a a set of general rules and ended up making mounting impossible on both my customized Openbox and the default Xfce session. My file, very “boilerplate” but only required one different group name for one rule, conflicted with more than one rules file by Salix and I can't tell which one because not only are all rules located in /usr/share/polkit-1/rules.d/ (its /etc equivalent is empty, which becomes problematic when enabling the root user because root inherits the restrictive regular user configs!) but Salix tied lower-level stuff such as shutdown to Polkit, whereas the file for default rules is empty.

This prompted me to not take my netbook with me and instead rely on my iPhone to take quick notes. The rest of this was typed on my Acer Aspire running Arch Linux.

TL;DR (about time)

Good grief, I am jaded. I get that Salix is a much smaller project targeting “lazy Slackers” but attempting to do stuff outside the pre-configured desktop is a nightmare. Hell, even the pre-configured desktop experience becomes painful once attempting to customize things like XScreensaver.

I also get that this particular netbook is not the pinnacle of computer technology. Even running a lightweight DE such as Xfce drives this weak CPU crazy, yet switching to a very simple window manager usually should solve this issue. Just like in the case of Devuan, not even that is enough.

Overall, my biggest issue with Salix is that it claims to be “Slackware for lazy Slackers” whilst simultaneously discouraging users to use it like Slackware. Slackware leaves it to the user whether they want the root user to be enabled or not, Salix disables it automatically during install; Slackware doesn't handle dependencies at all but at least encourages the usage of third-party repositories and Slack Builds; Salix does resolve dependencies but discourages the usage of both Slackware packages and third-party repositories whilst entirely ignoring Slack Builds BUT for some reason subtly pointing towards flatpak. While Slackware comes with an insane amount of bloat, Salix does not but still will install a lot of unneeded X tools even when selecting a basic install.

But while we're at this topic and this will apply to Slackware, as well: How can you claim security benefits by restricting shutdown to root when LightDM constantly runs in the background with root privileges? And why does Slackware still not offer HTTPS downloads at the very least? Why does Salix cripple the root user and leave the regular user with highly-restricted privileges forcing Vim to demand any change to files such as Polkit rules to be force-saved, whereas Slackware ships none of that by default? Why does Salix claim “one tool per task” but ships both nano and NeoVim, alongside Parole Media Player and another separate music player? Why does it also pull every damn language module for LibreWolf and crap dozens of authorization dialogs in various languages in Polkit actions while the desktop ends up being a weird mix of your chosen language and English?

What now?

As I was frustrated, I gave three other distributions, two of which are systemd-based, a live spin. BunsenLabs, while responsive, was unusually heavy and still made the CPU spike whenever the mouse cursor was moved. It also doesn't even appear to support MBR partition tables properly anymore and refuses to mount the desired root partition. Crunchbang++ performed even worse, starting with a loud beep prior to boot and loading its post-install welcome screen in live mode. The only noticeable difference I managed to witness was antiX's htop reporting the CPU to be at a scaringly-low temperature of 12°C whilst still making it spike during sheer cursor movements and the fan behaving just as oddly as it did on Devuan (mostly not at all). antiX also ships with Conky and monitoring applets enabled that are as misleading as they are wasting resources.

Maybe I'm being unfair to the remaining distributions for plain x86 machines. This device sucks in most aspects and it's pure crap in contrast to my Hyrican tower with its lower-end NVIDIA GPU but the latter certainly would cause a different set of issues that would make any distribution targeting x86 look worse than they might when running on a close-to-ideal machine.

On the other hand, this series of tests gave me a glimpse into the past. Back in the days, it was common to first acquire approriate hardware to run most Linux distributions without having to waste hours on the hunt for drivers. The kernel, alongside everything on top of it, still are rather slow to keep up with hardware fresh out of the factory that sadly is also more tailored to the (at that time) latest version of Windows. Machines tailored to offer a pure Linux experience still are quite rare and more often not just plain overpriced. There hardly are any budget devices that aren't a train wreck like those sold by Dell and some Lenovo models (that may ship with a decent Linux but may be traumatic to repair shop workers).

Now that Salix failed my use-case miserably, I'm back where I started. I may give antiX a proper test. I already installed it, yet I'm just so tired of testing now that this endeavor will be put on pause for a while.


Hardware:

eMachines eM250

Motherboard: Acer eM250 V1.25

Processor: Intel Atom N270 @ 1.600 GHz

Display: Intel Mobile 945GSE Express Integrated Graphics

Memory: 1 GB RAM (987.9 MiB)

Storage: 150 GB Seagate ST9160314AS HDD (149.05 GiB)

Network: Qualcomm Atheros AR8132 Fast Ethernet & Broadcom BCM4312 802.11b/g LP-PHY

 
Read more...

from Spirit Bear Dreaming

Shamanic practice involves both personal and inner efforts, and a broader approach of working for and with others. The traditional role of shamanic practitioner is to act as intermediary between the community and their adjacent supernatural realms.

It is certainly possible to bootstrap yourself into shamanic techniques with some helpful books and media, but you will eventually and probably, in order to get deeper into the experience, need to make it about more than just your own experience. My path was to start on my own and eventually to travel to nearby places to study with good teachers. I eventually found a local group, seeded around a local shamanic teacher, which met regularly and worked to common purposes.

First, just a bit about the term shamanism. There is the academic study of shamanism, there is the practice of shamanism in native cultures, and there is the use of shamanic techniques by modern western people. The first is fascinating and worth study, especially so if you have the desire to become an academic. The second is worthy of respect and honor, but is not appropriate for others to push their way into that world, nor is it correct to try to wear such a mantle and propose oneself as a representative for people who have their own voices.

The third use, however, is where we can find a place for study and practice as it has been recreated from the fundamental shamanic techniques of all people. Shamanic techniques are the oldest spiritual technology we know about, and we find it at the roots of all great traditions. The spirits want us to participate in this great adventure which is accessible to most people.

A primary notion of shamanic practice is that through the use of shamanic techniques we can send part of our selves to other realms. While there we can interact with spirits to find balance, healing, and help with problems for oneself and others surrounding us in our day-to-day lives. Shamanic practice is not a replacement for day-to-day life, but is for augmenting that life and expanding one's capability and capacity for growth and development.

The basic shamanic technique is to use repetitive sound to put the mind into a state where some part of the mind, a part other than the self-focused chattering voice, seeks into the other worlds. The shamanic universe takes different forms based upon the culture, the traditions, and personal idiosyncrasies, but the basic form divides the world into three broad “worlds”.

First, the lower world, often found “below” us and commonly the source of Animal Helpers. The “above” world is often the place to find Teachers. And the “middle” world includes the day-to-day world and surrounding “planes” that shade off into other related realms. Generally a beginner should avoid the middle world and focus the lower world and perhaps the upper world if desired. Traveling to these worlds is called journeying.

There are many ways to enter a shamanic journey trance, the most popular being a frame drum played at a steady number of beats per second. After sufficient practice one can enter a light trance while playing the drum, but to go deeper, or when first learning, one needs someone else to drum. Many people use a recording of drumming with headphones. More on this later, but the recordings you need to use are explicitly NOT musical, they are always labeled something like Drumming For Journeying. Music with a non-repetitive rhythm or melody will usually engage your music-listening self, but what you actually want is something somewhat boring and loud enough to shut out the inner monologue and let your inner vision journey on. This sound is the vehicle that you will ride on. Once you are journeying the drumming shifts to the background.

Aside from a sonic vehicle, you need to focus your intent. Especially when first starting out, you need to avoid drifting and need to have something to lead you on. Think of your intent as a light that will illuminate the path to the place you need to visit. As your skill matures you may find other modes of using your awareness, but at first you need to focus and your intent should lead you to your goal.

Without a teacher to start you on specific attainable and useful goals and offer technical advice, you will have to be disciplined to stay on track. But if you study up on shamanic practice and work with your experiences you should be able to find a set of worthwhile goals to lead you forward.

If you're reading this and feeling that journeying is “just” fantasy, then you need to learn to shift your critical thinking so that it doesn't block or filter your experiences while you are having them. Beginners need good critical thinking to help them develop discernment, but the critical thinking needs to stand to the side and observe well while journeying, without interference.

The potential problem here is that the critical thinking part wants to define experience to have it conform with expectations while it is occurring. This will sometimes lead you into boring and meaningless areas, and you may miss important things as you prejudge your experience. If you tell your critical thinking part that it can comment all that it wants AFTER the journey is done and recorded, then your experience will lead you to more interesting places, and you will have more fun and learn more.

You should keep a journal of all your journeys. This is critical! I prefer something with a stiff cover to make writing easy no matter where I am, and some people use big blank page books so that they can draw important images. No matter what, you need to keep a journal and write it all down. You will eventually have too much material to recall, so you must write it down. Eventually your journals will reveal new aspects of your path that you might otherwise have overlooked. I keep one big journal with journeys and dreams and notes from my study and relevant courses I might take. It pays over and over as you go on. I cannot overstate this, write it all down!

The first journeys should be to the underworld. Very often the initial journeys for beginners will be to start with the image of a place in the natural world that can lead underground. Pick a place you feel strongly about or find beautiful or attractive. A place like a cave or opening in the earth, a waterfall, or a tree base with an entrance is common. If you think of a place or first see an inner image as you read this, then that is a good place to start. You will journey to this place and somehow enter, open, or dig into the earth. If you have no success, consider alternative places and try a new one next time. I know some practitioners who have used the same place on every journey, and others who have multiple points of entry or who have shifted their entry point over time.

You start by listening to the drumming and relaxing. You will eventually develop a routine to get you going, but what I commonly see people doing is to take some relaxing breaths until they feel calm and centered. Many people cover their eyes, some like to lie on their backs, some sit in a comfortable chair or sit on a meditation pad or blankets. I prefer to sit cross-legged on a few cushions on the floor. Sometimes I like back support, and I ofter wear a sleep mask if light is bothering me. Many people have a blanket to keep warm to compensate for lowered body temperature while you are “away”.

Some people have a little pre-flight checklist in mind and I like to check out my body then review my plans until I am sure I have them in mind. Initially, many people “dig in” to feel comfortable and then focus on the drumming while keeping their intent in mind. As you sit and just let the drumming take over, your inner “vision” will activate. You may feel your attention start to move or flow. Then, when you feel ready, you journey to your destination. Remember, use your intent to help you navigate. If you have trouble, just “ask” for help using your inner voice. You can use it to state your intent.

The first journey is often about getting acclimatized and just “looking” around. Some people see with inner sight, some hear things, some have other sensory experiences or use some inner form of knowing. You can try this journey a number of times until you feel that you have traveled into the ground or sense that you are “under” the earth.

Some people have vivid experiences right off the bat, other require a number of tries until it starts to make sense. Perhaps you will see something definite or meet someone. If so, mentally ask them who they are and what they have to tell you. Perhaps it will seem realistic, or not. It is all OK, let it be what it is. It is like learning to play the harmonica, nobody can directly show you the inside part, you have to learn how to trust and verify what you experience and work from there by doing it. Allow yourself the luxury of trying again as much as you need or like.

The underworld is definitely not the traditional religious view of hell or a place like that. It is a place, and it is “below,” and you don't need to add much more to it than that. In my personal spiritual cosmology I tend to assign it a certain place and purpose, but you should grow you own understanding through experience, study and contemplation.

Once you have a bit of experience entering the underworld you can go to the next step. This second intent is to seek out an Animal Helper. Some teachers tell you to travel around until you see the same Animal three times. Some are not so strict. Go by feeling and need and maybe by what you lack.

When you meet an Animal Helper, and it may take time so don't stress about it, understand that this is a relationship, so it might not be just sweetness and light. In my first journey I met a large and intense Animal that was confrontational and who tested me in some unpleasant ways, but who also immediately changed me in a positive way. But many of my day-to-day relationships are like this, too, they come with conflict and great energy and are sometime a bit too intense, so it is no surprise that this happened to me while journeying. Many others that I know have large and powerful helpers full of sweetness and support and power. It is impossible to predict specifics, but I think we tend to get what we need at that moment.

Some people have mythological Animal Helpers, or creatures they cannot identify or which don't seem like they should be living beings. That's quite all right, I find that the reasons become clear over time, so don't stress or try to make journeying conform to expectations. See what it brings you.

Many shamanic practitioners meet and work with many Animal Helpers over time, so don't automatically buy into the notion that you have one Animal Helper or are locked in somehow. Some folks call them Power Animals, but I prefer Helper as it is a more accurate description, in my experience. Once you have met an Animal Helper you can ask them to show you what you need to know and ask them for help any time you need it. This is important: ask for help when needed. Ask them what they need and what they can do. If you want to develop deeper skills, you have someone who can help you, so build a relationship.

Once you have an Animal Helper you can more easily explore the underworld or focus in on learning specific things you need to help you in your life. Some teachers will have you journey to the upper world to meet a Teacher or a Higher Self to ask advice. You should ask your Animal Helper to lead you to the upper world. They should be able to lead you there but might not come with you, or only come part way with you. Teachers generally offer help and advice, but my feeling is you should not bother them with trite questions. Shamanic practice should lead to improvements in other areas of your life, so don't be afraid to ask for help about jobs or mundane subjects or fixing problems. The spirits want you to succeed!

I do suggest avoiding travel in the middle world until you have experience, and you have one or more strong Helpers. It is a good policy to always be accompanied by at least one Animal Helper on every journey. They will be able to help you understand things when you are unsure and will warn you when appropriate. More than once I've had a helper jump out in front of me and become powerful when they see a problem that I missed. It is important to develop some close relationships with Helpers and to have fun and play when possible. Spend some time running or flying or swimming with them, as fits them. Relationships in the spirit realms require discernment as they do in the day-to-day world, so don't take them for granted.

Beyond these things, you are only limited by imagination and your goals. One of my favorite journeys is to revisit dreams that have given me a strong feeling and which I feel need some deeper understanding. I learned this technique from Robert Moss and have used it hundreds of time to get more information and to query a dream for more help.

I have had marked success reentering nightmares, which from my perspective are dreams that frighten you to get your attention about something important. I've also had great success journeying into tarot cards, runes, the lives of my ancestors, stories from great mythologies and travel throughout time and space. There really is no limit, and it can open you to vast areas of knowledge of which you have been unaware. And it also requires lots of study and research as a result!

If there are no teachers in your area, and you have made some journeys and feel a calling to this practice, then seek out teachers who do workshops in reachable locales. Making an effort pays off, I find. I work with a local teachers and my circle of peers now, but when I first started out I had to travel many hundreds of miles to attend the odd weekend workshop to learn more and share with other kindred souls. I've also participated in a few online groups and have even done some journeys with friends on the other side of the globe over the internet. Working with others greatly increases your learning as it gives you confirmation about what is working, and that really opens up things in a nice way.

This piece has gone on quite enough, so here are a few resources. I first learned to journey on my own as I was studying deeper into dreaming and discovered the “Dreamgates” audiobook by Robert Moss, which included a good introduction to journeying as a way to revisit dreams. I've attended a number of his workshops that mix dreaming and shamanism and have read most of his books and have learned much from Robert.

For something a bit more focused on shamanic practices, per se, I think that “Awakening To The Spirit World: The Shamanic Path Of Direct Revelation” by Sandra Ingerman and Hank Wesselman covers a lot of territory and includes a drumming CD that you can use. Both are well-known practitioners who have written a lot and are worth some attention and study, I've read many of both of their books. This book was published around 2010, so there are possibly many used copies around if price is an issue.

I've also found books by Tom Cowan to be worth reading. Michael Harner's “Way Of The Shaman” is the foundation book for a lot of the modern efforts and most serious practitioners have read it. He also has produced a series of journeying recordings of drums and of rattles that are very good. His Foundation for Shamanic Studies is worth checking out and includes links to classes and teachers all over the world.

If you just want an inexpensive drumming track to start out you can locate Frauke Rotwein's “Shamanic Journey Drumming 3” album on Amazon and download track 2, “Multiple Drumming” for 99 cents. It is 30 minutes long, which is plenty long for a beginner.

As a recording to use for journeying I prefer “Shamanic Journey Drumming: Spirit Passages” by Evelyn Rysdyk and C. Allie Knowlton, which is includes a callback that you can trigger with a button press, to skip forward, when you are journeying. A callback is a nice thing to lead you back from a journey. (I have a friend who always keeps a bit of chocolate around to nibble on while they are writing up their journey on return. Fun and grounding!)

Just these few people are a good start and will naturally lead you to others. Best of luck!

 
Read more...

from Memory

Memory FAQ

Memory: Frequently Asked Questions (FAQ)

About ActivityPods

Q: What is ActivityPods, and how does it differ from ActivityPub?
A: ActivityPods is a framework designed to enhance the decentralisation and user sovereignty of digital interactions on the web. It integrates the principles of ActivityPub, the protocol behind decentralised social networks like Mastodon, and combines it with Solid, a standard developed by Sir Tim Berners-Lee and the W3C for personal data storage and secure access in personal data stores (Pods). While ActivityPub facilitates decentralised social networking by allowing different platforms to communicate, ActivityPods takes this a step further bringing powerful capabilities to the realm of communication and social interaction. From your own space online, you can decide who to connect to, who to share with, and which parts of the Web point back to the things you own. Instead of having your data stored in someone else's database, it's all there in your Pod.. This means users have complete control over their data.

Q: What different experiences can be had via the adoption of ActivityPods?
A: Adopting ActivityPods offers a range of enhanced experiences for users, developers, and platform administrators: – For Users: Enjoy a more personalised and secure online experience with full control over your data. – For Developers: Leverage a robust set of tools for creating applications that are inherently more flexible, interoperable, and user-centric. Eliminate the guesswork when it comes to digital sovereignty, decentralised communication protocols, and user autonomy. – For Platform Administrators: Benefit from a platform architecture that reduces server load and storage requirements, as user data is stored in personal Pods. This leads to lower operational costs and a focus on enhancing user experience and engagement.

General Questions

Q: What is Memory?
A: Memory is an Open Social Web platform that prioritises user autonomy, consent, and experiences. It integrates seamlessly with the current Fediverse ecosystem, offering enhanced customisation and personalisation through features like a recommendation engine, encrypted messaging, custom feeds, groups, and encrypted video & voice calling. Memory is available natively on Android and iOS, serving both as a client compatible with Mastodon API-powered platforms and as a standalone platform built on the ActivityPods framework. With Memory, you are given control of your social experience online. See what you want to see, sort it any way you want to, talk to the people you want to.

Q: Is Memory like Threads? It is a part of Mastodon? A: There are similarities in that they're all microblogging formats and share a common protocol which allows them to all communicate, thus meaning you can follow and connect with users that have accounts on Mastodon and Threads. How Memory differs is that users own and control their data and identity.

Q: How does Memory respect user autonomy and consent?
A: Memory is designed with user autonomy at its core. User data is housed inside of their own POD. Every piece of Memory, every part of the user experience is designed around what your preferences are. We give you the power to decide what data Memory has access to, and whether to process it to make recommendations. All personal data is processed locally on the user's device whenever possible, ensuring privacy and consent are respected.

For Users

Q: Can I use Memory with my existing Fediverse account?
A: Yes, Memory can be used as a standard Mastodon client. Any platform that supports Mastodon's API will allow you to log in and supplement your experience with Memory's extra features.

Q: What are some of the standout features of Memory?
A: Memory offers several unique features, including: – Algorithmic Choice: Sort your timeline however you like, with a variety of options and adjustable recommendation engine settings. – Encrypted Direct Messaging: Communicate securely with messaging protected by the Signal protocol. – Custom Feeds: Personalise your feed and interact with content that matters to you. Custom feeds are shareable and able to be subscribed to. – Circles: Create, join, and interact with communities that share your passions, your causes, and your interests. – Encrypted Video & Voice Calling: Chat securely in real-time with family, friends, and colleagues with messaging secured by the same technology that Signal uses.

For Developers and Admins

Q: How can developers contribute to or build upon Memory?
A: Developers can leverage the ActivityPods framework upon which Memory is built to create custom applications or features. The open nature of Memory and its foundation on ActivityPods offer a flexible environment for innovation, respecting user data sovereignty and interoperability standards.

Q: What benefits does Memory offer to platform administrators?
A: Memory provides admins with a robust, user-centric platform that emphasises privacy and customisation. Its mobile-first approach, coupled with advanced features like encrypted communication and on-device data processing, We believe that these provisions significantly reduce the load and overhead for admins, while also reducing friction and headaches for users.

Conclusion

Memory represents a significant step forward in the evolution of social web platforms, offering a blend of privacy, customisation, and user-centric features. Our platform balances privacy with flexibility, all while providing a design that's easy to use. Whether you're a user looking to make a move to a more personal and secure social network, a developer looking to build a next-generation experience, or an admin seeking to provide a robust platform for your community, Memory offers something unique for everyone.

 
Read more...