我是誰?
我是一個怎樣的人?
我和別人有什麼不同?
Emanon 分享給我一個看理想製作的「大五人格」心理測試,做完感覺蠻準的,一共 20 個單選題。前往:大五人格測試試試看吧~
教程什么的
我是誰?
我是一個怎樣的人?
我和別人有什麼不同?
Emanon 分享給我一個看理想製作的「大五人格」心理測試,做完感覺蠻準的,一共 20 個單選題。前往:大五人格測試試試看吧~
這裡使用Django+Gunicorn+Nginx的方式簡單運行一個小型webserver,實現一個簡單的上傳文件到服務器的功能(並不生成下載鏈接)。
啟動虛擬環境,安裝django和gunicorn:
pip install Django==2.0 pip install gunicorn #進入要放置代碼的目錄並新建項目 django-admin startproject mysite ##或者在當前目錄建立項目 #django-admin startproject mysite . cd mysite #新建app python manage.py startapp polls
先建立一個表格:
#polls/forms.py from django import forms class UploadFileForm(forms.Form): title = forms.CharField(label='密碼',max_length=20,widget=forms.PasswordInput) file = forms.FileField(label='文件',)
修改view:
#polls/views.py import os import subprocess from django.core.files.storage import FileSystemStorage from django.conf import settings from django.shortcuts import render from django.http import HttpResponse from .forms import UploadFileForm #handle file example with file def handle_uploaded_file(f): with open('/file/should/be/saved/here/target.odt', 'wb+') as destination: for chunk in f.chunks(): destination.write(chunk) #another handle file example with filename def handle_uploaded_file2(filename): msg='' try: targetZipFilePath = os.path.join(settings.BASE_DIR, filename) cmd1=subprocess.check_call(["unzip", "-o", targetZipFilePath, "-d", "/home/fred/workspace/"]) if cmd1==0 : cmd2=subprocess.check_call(["cp", "-Rf", "/home/fred/workspace/dist", "/home/fred/"]) if cmd2==0 : msg="deployed successfully" else: msg="error 2" else: msg="error 1" except: msg = 'error 0' return msg def upload_file(request): if request.method == 'POST': form = UploadFileForm(request.POST, request.FILES) if form.is_valid() and request.POST['title']=='Secret': # handle_uploaded_file(request.FILES['file']) # return HttpResponse("上傳成功") myfile = request.FILES['file'] fs = FileSystemStorage() filename = fs.save(myfile.name, myfile) uploaded_file_url = fs.url(filename) print(uploaded_file_url) res = handle_uploaded_file2(uploaded_file_url) return HttpResponse(res) else: form = UploadFileForm() return render(request, 'upload.html', {'form': form})
新建一個表格的模板:
#polls/templates/upload.html <form enctype="multipart/form-data" action="/polls/upload/" method="post"> {% csrf_token %} {{ form }} <input type="submit" value="上傳" /> </form>
新建一個url路由表:
#polls/urls.py from django.urls import path from . import views urlpatterns = [ path('upload/', views.upload_file, name='upload_file'), ]
修改項目路由:
#mysite/urls.py from django.contrib import admin from django.urls import include,path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]
修改項目設置:
#mysite/settings.py INSTALLED_APPS = [ 'polls.apps.PollsConfig', # 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', # 'django.contrib.messages', # 'django.contrib.staticfiles', ] LANGUAGE_CODE = 'zh-Hant' TIME_ZONE = 'Asia/Taipei'
然後在項目目錄(最上層)運行gunicorn就可以訪問了:
gunicorn mysite.wsgi --bind 127.0.0.1:3040
nginx中增加如下server即可在外網訪問了(鏈接應該是http://YourPublicIP:8081/polls/upload/):
server { listen 8081; server_name 127.0.0.1; charset utf-8; keepalive_timeout 60s; #access_log logs/django2a.access.log combined if=$loggable; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://127.0.0.1:3040; break; } } }
yum install MySQL-python pip install mysqlclient #如果import MySQLdb提示無libmysqlclient.so.18 #則建立軟連接如下 ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
[kəmˈplaɪəns] noun
[U] ~ (with sth) action in accordance with a request or command; obedience 服從; 聽從; 遵從; 順從: Compliance (with the rules) is expected of all members. 要求全體人員都遵守(制度). In compliance with your wishes (ie As you have requested) we have cut off the Internet. 遵照你的要求我們已經切斷了互聯網.
(usu derog 通常作貶義) tendency to agree (too readily) to do what others want 百依百順; 承顏候色
很長一段時間以來,我一直受沒有農曆可用的困擾。安卓原生的日曆不支持農曆,谷歌日曆也是到了安卓 8 才開始有農曆,等我用到安卓 8 的時候我已經開始去谷歌化了。轉用開源日曆應用(Etar)後也沒有發現很好的辦法來解決農曆的問題,主要是曆法這東西真的很複雜。終於在最近找到了一個方案,通過 ICS 文件把計算好的農曆導入日曆就可以了。我這裏提供了從 2017 年 01 月 01 日到 2049 年 12 月 31 日的農曆和節氣與公曆對應關係的 ICS 文件,只要選擇需要的年份導入日曆即可。 這些 ICS 文件是基於 infinet 開發的 lunar-calendar 項目生成的,其原始日期數據來自於香港天文台的公曆與農曆日期對照表。我在使用的時候將節氣和生肖做了繁體中文的轉換,並且刪減了一些不展示在日曆中的文本以減小文件大小。我修改後的腳本也可以在上面的分享文件夾中找到。
順便說下我這邊具體是怎麼導入的:我一直在用 Disroot 提供的 Nextcloud 實例,其中有日曆的功能,而我之前就已經在安卓上通過 DAVx⁵ 來同步日曆和聯繫人了。所以我是在電腦上通過瀏覽器來操作的,理論上在手機上也是類似的。日曆網頁的左側點「新日曆」選擇「新日曆」輸入名稱就創建好了新日曆了,如「農曆」。然後點擊左下角的「設定及匯入」-「匯入日曆」,選擇 ICS 文件然後選擇要匯入的日曆即「農曆」。最後耐心等待一番,因爲我通過網絡請求看到農曆竟然是一條一天這樣傳的,我的文件都是三年三年的,所以要耐心等它傳完,傳完後點擊一下「農曆」左側的開關就可以看到農曆了。手機上同步前先從菜單中「刷新日曆列表」就會出現「農曆」,再來同步就可以在日曆裏看到農曆和節氣了。
當然你也可以通過 Calendar Import-Export 將 ICS 文件導入本地日曆。
本文更新於 2023/03/06。
Send Reduced 雖然只有區區 52 KB,但是卻有兩個非常好用的功能——壓縮照片和清理 Exif 數據。現在安卓手機照片越來越大,動輒一張照片就八九 MB,但是選擇 85% 的壓縮比壓縮後,圖片大小就只剩下六百多KB,肉眼也沒有可見的畫質損失,很適合發送給聯繫人和社交媒體。
不過也有一個小小缺陷,就是壓縮後的最大尺寸是個選項列表,最大的選擇是 2560,如果你一定要選擇大於此尺寸的圖片,就不能用它不行了。
截图瓷贴 Screenshot tile(NoRoot)是一個方便的截圖軟件,它可以在快速設置面板(從屏幕頂端下滑即出現)中添加一個截圖的按鈕。我的手機用電源鍵和音量鍵截圖會有咔嚓一聲快門音,但是用這個軟件就不會。還可以設置爲先選截圖區域再執行截圖動作,這樣只截取重點區域而防止頂部狀態欄泄露隱私。看介紹還可以和一些自動化軟件聯動實現連續截圖,這個我就沒試過了。截图瓷贴要求安卓 7 以上的系統。
Ecosia 是一個總部位於德國柏林的搜索引擎,他們將至少80%的利潤捐贈給非營利組織,用於在全球範圍內種植當地原生樹木。Ecosia 是 B Lab 認證的公益企業。他們宣稱實踐了碳吸收,使用再生能源為伺服器供能,保持財務透明,還保護用戶的隱私。
我試用了兩天,感覺還不錯,也安裝了他們的火狐插件,打算繼續使用。它的結果是從 Bing 返回的,一般資訊也都能順利找到,由於 Bing 很懂中國,所以它不會把維基百科的鏈接放在前面。順帶一提,同是使用 Bing 搜索結果的 DuckDuckGo 最近又可以直接訪問了。
searx 是一款元搜索引擎(對其他搜索引擎的結果進行處理後返回結果),這樣其他搜索引擎便不易獲得搜索者的個人隱私。如果不想自己搭建,也有很多在線實例可供選擇。
在沒有遇到 Ecosia 之前,有用過一段時間 searx,搜索結果質量不是很穩定,但還是可以作爲一個不錯的備選的。它有兩個特點挺好的,一個是如果搜索到的頁面已經被互聯網檔案館所保存,則可以去看存檔的網頁;另一個是對於維基百科詞條可以在搜索頁就展示概覽。
Startpage 在過去很長一段時間裏都是我的首選搜索引擎,它最大的特定就是保護用戶隱私。由於它的搜索結果來自谷歌,所以搜索質量幾乎等同谷歌。但是後來它不能從中國直接訪問了。
如果有興趣,可以讀下這篇關於搜索引擎的文章:A look at search engines with their own indexes