0%

bow键盘控制mac快捷键

存在的问题:该键盘的方向键没有被识别,但是打字并不影响。但是如何尽可能少的使用鼠标,多使用键盘。那么就需要设置和熟悉相应的快捷键。

1、切换程序或窗口
command(win)+tab:切换程序,然后鼠标选择相应的程序

2、切换窗口、或者切换到桌面
ctrl+向上方向键:然后鼠标选择也可以切换窗口或者切换到桌面

command(win)+W:关闭窗口

3、利用触发角切换
ALT+向上箭头:向左移动窗口
WIN+向上箭头:向右移动窗口

左上角:mission control 相当于切换到桌面
左下角:lanch pad 切换到程序面板
右上角:Dash pad 切换到任务面板

一、数据的格式

DATA

KEY  1111111111111111111111111111111111111111111111111111111111111111111   
NOT                                                                        
40001 1 011111011111111111011111011                                        
45137 1 011011111111011000001001100                                        
60001 2                     111111101101000111011110111                    
60002 2                     110011100000001001100110111                    
82913 3                                         111111011111000111000001111
82914 3                                         111111001110100000000101111

注释:
第一列是答案。第二列是NOT。第三列开始都是数据。

二、命令文件

EXAMPL05.BLM - VERTICAL EQUATING OF TEST FORMS OVER THREE GRADE LEVELS
>COMMENT
Science test equating
>GLOBAL DFName = 'data.DAT', 
        NPArm = 2, 
        SAVe;
>SAVE PARm = 'data.PAR', 
      SCOre = 'data.SCO', 
      TSTat = 'data.TST';
>LENGTH NITems = (67);
>INPUT NTOtal = 67, 
       NIDchar = 5, 
       NGRoup = 3, 
       KFName = 'data.DAT', 
       NFName = 'data.DAT';
>ITEMS INAmes = (M01(1)M67);
>TEST1 TNAme = 'SCIT', 
       INUmber = (1(1)67);
>GROUP1 GNAme = 'GRADE 4', 
        LENgth = 27, 
        INUmbers = (1(1)27);
>GROUP2 GNAme = 'GRADE 6', 
        LENgth = 27, 
        INUmbers = (21(1)47);
>GROUP3 GNAme = 'GRADE 8', 
        LENgth = 27, 
        INUmbers = (41(1)67);
(5A1,1X,I1,1X,67A1)
>CALIB NQPt = 51, CYCles = 30, REFerence = 2, TPRior;
>SCORE IDIst = 3, RSCtype = 3, NOPrint;

三、输出文件
data.PAR–>试题参数文件。
data.SCO–>学生成绩文件。
data.PH1–>经典测量理论参数,如原始分,正答率,相关系数等。
data.PH2–>模型和试题参数。
data.PH3–>rescaled 试题参数。

案例2

混合数据
即有三卷共有题目,也有两卷共有题目,当然也包括一卷独有题目。

40001 1 1110111111011011111111011111011                                        
40002 1 0110110111111001111111101111101                                        
60001 2 0111                    111111100110011001111110111                    
60002 2 1101                    110011101000000010100110111                    
80001 3 1001                                        110110010000001000000000000
80002 3 0101                                        111000000100001000000000110

BLM文件

EXAMPL05.BLM - VERTICAL EQUATING OF TEST FORMS OVER THREE GRADE LEVELS

>COMMENT
Science test equating
>GLOBAL DFName = 'data.DAT', 
        NPArm = 2, 
        SAVe;
>SAVE PARm = 'data.PAR', 
      SCOre = 'data.SCO', 
      TSTat = 'data.TST';
>LENGTH NITems = (71);
>INPUT NTOtal = 71, 
       NIDchar = 5, 
       NGRoup = 3, 
       KFName = 'data.DAT', 
       NFName = 'data.DAT';
>ITEMS INAmes = (M01(1)M71);
>TEST1 TNAme = 'SCIT', 
       INUmber = (1(1)71);
>GROUP1 GNAme = 'GRADE 4', 
        LENgth = 31, 
        INUmbers = (1(1)31);
>GROUP2 GNAme = 'GRADE 6', 
        LENgth = 31, 
        INUmbers = (1(1)4,25(1)51);
>GROUP3 GNAme = 'GRADE 8', 
        LENgth = 31, 
        INUmbers = (1(1)4,45(1)71);
(5A1,1X,I1,1X,71A1)
>CALIB NQPt = 71, 
       CYCles = 30, 
       REFerence = 2, 
       TPRior;
>SCORE IDIst = 3, 
       RSCtype = 3, 
       NOPrint;

解释说明:
Group2中INUmbers = (1(1)4,25(1)51);#表示一部分共有题目是1(1)4,另外一部分共有题目是25(1)51,中间用“,”间隔。
操作技巧:
1、BILOG输出文件可以使用双空格置换为单空格,最后将所有空格置换为分隔符,然后粘贴到EXCEL中即可。

2、构建数据文件时,首先需要在EXCEL中构建数据结构,原始数据不要有空值,如有有空值提前用0或者9填充空值。填充空值时,先选择编辑-查找-定位,选择空值,即可选择所有空值。然后在输入值区域输入要填充的值比如0,按CTRL+Enter即可全部填充。数据按照试题关系粘贴好之后,会产生很多空白区域,可以用半角空格替换空白区域。然后将所有数据拷贝到文本编辑器中,用空值替换所有分隔符。然后把所有数据作为文本粘贴到EXCEL中添加学生编号和组别即可,再略微编辑即可。

AI stands for Artificial Intelligence.
IA stands for Intellectual Assistant.

We don’t need AI. We need IA.

AI sounds amazing but hard to understand for common computer users. Even for programers it take time and effort to fully understand and make use of AI power.

AI includes many sub-feilds, such as machine learning, natural language processing, expert system and so on. As an amateur programer, what I really need is not AI but an assisstant to help me learn and work. I call it intellectural assisstant (IA).

IA make use of AI power to recognize friends’ faces, remember ceremony days, record your life experiences and predict your personal needs and action. IA is not a technology method, it is your personal smart accompany.

这个时代变化太快。技术、产业革新周期越来越短,短到可怕。行业竞争正在从数量竞争转向质量竞争。谁还在按照惯性而行,谁就注定被惯性束缚,被体制牵绊。这是个最好的时代,因为万事皆可能。这也是一个最坏的的时代,因为你面临选择,面临无限多个选择,选择的机会成本无限飙升,时间成为最后稀缺资源和最昂贵的成本。未来是个超级岔路口,你是否能掌握住自己的命运,关键在于你现在的选择,关键在于你如何花费你的时间。时间就生命。

在短暂的研究生学习期间,你可以集中精力尝试按照下面的进阶路径发展自己的科研能力,也能为你节约宝贵的时间。5个水平具有先后顺序,你一定要从1到5,不要轻易越级,每个水平中有3项任务,建议全部完成后再挑战下一个水平的任务。当然你还可以利用这个水平等级任务估计自己所处的水平,然后再次出发。

Level 1:在详细指导下参与项目工作
* 按照给定要求收集数据
* 按照给定格式录入数据
* 对给定资料进行翻译

Level 2:在指定任务要求下开展工作
* 就给定主题收集、整理资料或者独立做一次访谈
* 就给定文献库撰写文章概要
* 按照APA要求完善论文格式

Level 3:独立进行信息加工和概括
* 撰写文献综述
* 撰写读书报告
* 撰写数据分析报告

Level 4:在具体提示下开展研究工作
* 提出研究问题,并制订研究计划
* 尝试编制研究工具,并修改完善
* 撰写研究计划书

Level 5:在方向性提示下完成研究工作
* 结合文献、研究结果、现状撰写论文(标题 摘要 关键词 前言 
  研究基础 研究方法 研究结果 结论和讨论 研究建议 参考文献 附录 致谢)
* 在公共场合独立介绍和展示自己的研究工作并交流讨论
* 在答辩会上有理有据的陈述研究工作,并针对提问作出合理的辩护

首先在网页上新建项目:new Repository

然后在本地:

    git clone https://github.com/lukezhg/space-craft.git
    cd space-craft
    git add .
    git commit  -m "save space craft"
    git push -u origin master #需要输入用户名和密码

首先,做一件具体而简单的事

然后,做一件明确但是有挑战的事

再然后,做一件不明确但是简单的事

再然后,做一件不明确而且复杂的事

最后,做一件明确而简单的事

做事就好像我们吃三明治一样,容易拿在手上的面包放在两边,难拿的肉馅蔬菜放在里边。

这样做的好处是,容易形成积极的成功经验,有适当的缓冲,不容易望而生畏。

当然,最好的做事原则仍然是:要事第一。

生命是一种形式的传承。一旦无法传承,就意味着生命的终结。而决定其命运的就是其核心算法。

生物如此,人也是如此。作为种族如此,作为个体也是如此。

1、做正确的事。
有人把成功的秘诀归结为一句话:做正确的事。找工作也好,找女朋友也好,创业也罢,要想成功就要能够在正确的时间、正确的地点、做正确的事。

现实是我们经常做错事儿,更糟糕的是做错了事还不自知。它就像一个牢笼,让你与成功失之交臂。

如何改变这种状态呢?这就需要改良你的人生算法。

2、人生算法
如果生命的本质是形式的传承,那么决定传承规律的就是生命的核心算法,它相当于你的DNA。实际上犯错并不可怕,世上没有人不犯错,关键是犯错能改。

因此能改和不能改才是关键。人的生命活动就是不断与外界环境交互的过程中迭代。有些算法会让你不断自我升级,有些算法则会让你沉入死循环。

那么,什么东西决定你自我迭代中能改还是不能改呢?答案是有目的行动。

3、有目的的行动
你可能会说,我做任何事情都是有目的的。事实可能的确如此,你追剧是为了娱乐和打发时间,你游泳是为了锻炼身体,你熬夜是为了赶工作,你查看朋友圈是为了增进友谊,但是你发现没有你做的诸多事情的目的是各不相同的,它们各自为政,甚至相互矛盾。在如今事情总是赶不完的情况下,如果你不会计划和选择,那么你将杂事缠身、迷失自我,更是达不到你自己的人生目标。因此,有目的的行动,统领自己的行为,并监控自己执行是一个非常关键而有挑战性任务。因为,你可能会随时被打扰、被中断、被牵绊、被拐骗,因此最重要不是管理时间,而是管理你自己,不是认识世界,而是认识你自己。

人人都以为这些都是自己能做主的,只要自己有决心就一定能行。但实际上,并不是如此简单。比如减肥就是一个最好的例子,有多少人能真正减肥成功的呢?但是不是我们就无所作为了呢,也不是,问题在于我们要找到自己的核心算法,找到算法的bug,然后再加以修正和完善,就好比基因治疗。

4、人生算法的套路
核心算法包含:目标选择、任务计划、执行策略、检验反馈。
APAF(Aim Plan Action Feedback)

目标:认识自我,找到真正想要的,才能做出正确的目标选择,活出自己的人生。

计划:设计可行的任务路径和计划,才能逼近目标直到目标达成。任务的可行性和灵活性是关键。

行动:在执行任务的时候,需要采用合理的策略应对自身和环境的变化。比如合适的自我监控机制和环境变化应对策略等。

反馈:明确目标达成的检验方法和反馈机制才能激励自己实现目标。

升级导致的问题。

octopress用了很长时间了,最进粘贴代码时遇到了一些问题,以为升级可以解决,但是升级却带了新的麻烦。

找到的一篇貌似实用的讨论:https://stackoverflow.com/questions/5286117/incompatible-character-encodings-ascii-8bit-and-utf-8

但是试过了对我无效。

回顾一下问题出现的原因,首先出现错误代码是:

Liquid Exception: Unknown tag 'static' in

原因是我潜入了html代码,rake以为我要render这些代码,结果误认为有一些非法tag,所以提示上面的错误。

解决的方式是: 利用 raw 和 endraw标记。如下:


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html lang="en">
    <head>
        <title>{% block title %}{% endblock %}</title>
    </head>
    <body>
        <h1>My helpful timestamp site</h1>
        {% block content %}{% endblock %}
        {% block footer %}
        <hr>
        <p>Thanks for visiting my site.</p>
        {% endblock %}
    </body>
    </html>

如果没有这个标记,系统就会渲染这些代码的效果,结果就是有未知tag错误。

我以为可以通过升级gem或者rake来解决这个问题,于是升级gem,升级时提示rake版本不够高。这时octopress还能正常工作。于是又安装了rvm和rake结果悲剧了。提示错误:

Liquid error: incompatible character encodings: UTF-8 and ASCII-8BIT

这个错误很严重,直接rake generate吹产生错误的页面。

网上查的各种方法都没用,最后看自己的博客,发现一招删除rake:

sudo gem uninstall rake  

之后选择要删除的版本,我直接是删除所有高级版本,原因是我的octopress是5年前的,肯定和高级版本不合拍。于是试了一下,问题解决了!!

1、通过创建一个新的 virtualenv 为部署 Django 应用程序设置环境:

mkvirtualenv DjangoApp

要退出新的 virtualenv,请使用 deactivate。您可以使用 workon 在环境之间切换。要加载或在 virtualenv 之间切换,请使用 workon 命令:

workon DjangoApp

在您的当前环境中安装 Django

pip install Django

2、使用 django-admin 命令创建项目

django-admin startproject demoproject

3、进入demo project文件夹,使用python manage.py startapp 创建应用.

cd demoproject
python manage.py startapp demoapp

4、测试项目服务器,Ctrl+C退出服务器。

python manage.py runserver

或者指定服务器ip和端口。

python manage.py runserver 0.0.0.0:8000

5、创建超级用户用于登陆django admin后台管理平台。

python manage.py createsuperuser admin

6、编辑设置文件和项目相关文件。
settings.py 控制项目参数。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'clips',
    ]

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',#mysql.connector.django
            'USER': 'root',
            'PASSWORD': '123456',
            'NAME': 'demoproject',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }

urls.py 控制访问请求路径

from django.conf.urls import url
from django.contrib import admin
from demoproject.views import hello
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/$', hello),
]

views.py 控制访问请求的应答

from django.http import HttpResponse
def hello(request):
    return HttpResponse("Hello world")

demoapp/models.py 控制数据结构(表格、变量、变量属性)

    from __future__ import unicode_literals
    from django.db import models

    class User(models.Model):
        user_name = models.CharField(max_length=30)
        password = models.CharField(max_length=40)
        email = models.EmailField()
        headshot = models.ImageField(upload_to='headshot',null=True,blank=True)
        brief = models.CharField(max_length=100)
        join_date = models.DateField()
        user_star = models.CharField(max_length=30)
        def __unicode__(self):
            return self.user_name
    ......

demoapp/admin.py 控制后台注册和数据呈现

    from __future__ import unicode_literals
    from django.contrib import admin
    from .models import User, Clip, Link
    import sys;  
    reload(sys);  
    sys.setdefaultencoding("utf8")

    class UserAdmin(admin.ModelAdmin):
        list_display = ('user_name', 'password', 'email')
        search_fields = ('user_name', 'email')
    ......
    admin.site.register(User,UserAdmin)
    ......

7、当你修改models.py时,需要通过makemigrations将修改反应到数据库中去。

python manage.py makemigrations
python manage.py migrate

8、利用template来呈现页面。

首先要修改settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            # ...

接下来建文件夹templates

\demoproject
    \demoproject
    \demoapp
    \templates
    manage.py

修改demoproject\views.py

from django.shortcuts import render
import datetime
def current_datetime(request):
    now = datetime.datetime.now()
    return render(request, 'current_datetime.html', {'current_date': now})

在templates文件夹,新建html模版文件current_datetime.html。

\mysite_project\mysite\templates\current_datetime.html



    
        It is now {{ current_date }}
    

It is now {{ current_date }}.

模版的继承,比如我们建一个地层模版,然后在这个模版的基础上加载子模版,这样就可以避免重复。
参考:https://djangobook.com/templates-in-views/

base.html


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <h1>My helpful timestamp site</h1>
    {% block content %}{% endblock %}
    {% block footer %}
    <hr>
    <p>Thanks for visiting my site.</p>
    {% endblock %}
</body>
</html>

current_datetime.html


{% extends "base.html" %}
{% block title %}The current time{% endblock %}
{% block content %}
    <p>It is now {{ current_date }}.</p>
{% endblock %}

hours_ahead.html


{% extends "base.html" %}
{% block title %}Future time{% endblock %}
{% block content %}
<p>
    In {{ hour_offset }} hour(s), it will be {{ next_time }}.
</p>
{% endblock %}

9、利用form来获取用户数据。

mysite_project\mysite\books\templates\books\search_form.html


<html>
<head>
    <title>Search</title>
</head>
<body>
    <form action="/search/" method="get">
        <input type="text" name="q">
        <input type="submit" value="Search">
    </form>
</body>
</html>

mysite\books\urls.py

    from django.conf.urls import url
    from books import views
    urlpatterns = [
        url(r'^search-form/$', views.search_form),
        url(r'^search/$', views.search),
    ]

mysite\urls.py

    from django.conf.urls import include, url
    urlpatterns = [
    # ...
        url(r'^', include('books.urls')),
    ]

books\views.py

from django.shortcuts import render
def search_form(request):
    return render(request, 'books/search_form.html')
def search(request):
    if 'q' in request.GET:
        message = 'You searched for: %r' % request.GET['q']
    else:
        message = 'You submitted an empty form.'
    return HttpResponse(message)

参考:https://djangobook.com/django-forms/

定义表单类,更简洁的获取用户数据的方法。

mysite_project\mysite\mysite\forms.py

    from django import forms
    class ContactForm(forms.Form):
        subject = forms.CharField()
        email = forms.EmailField(required=False)
        message = forms.CharField()

mysite_project\mysite\mysite\views.py

    from django.http import Http404, HttpResponse, HttpResponseRedirect
    from django.shortcuts import render
    import datetime
    from mysite.forms import ContactForm    
    from django.core.mail import send_mail, get_connection


    def contact(request):
        if request.method == 'POST':
            form = ContactForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                con = get_connection('django.core.mail.backends.console.EmailBackend')
                send_mail(
                    cd['subject'],
                    cd['message'],
                    cd.get('email', 'noreply@example.com'),
                    ['siteowner@example.com'],
                    connection=con
                )
                return HttpResponseRedirect('/contact/thanks/')
        else:
            form = ContactForm()
        return render(request, 'contact_form.html', &#123;'form': form&#125;)

mysite_project\mysite\templates\contact_form.html


<html>
<head>
    <title>Contact us</title>
    <style type="text/css">
        ul.errorlist {
            margin: 0;
            padding: 0;
        }
        .errorlist li {
            background-color: red;
            color: white;
            display: block;
            font-size: 1.2em;
            margin: 0 0 3px;
            padding: 4px 5px;
        }
    </style>
</head>
<body>
    <h1>Contact us</h1>
    {% if form.errors %}
        <p style="color: red;">
            Please correct the error{{ form.errors|pluralize }} below.
        </p>
    {% endif %}
    <form action="" method="post" novalidate>
        <table>
            {{ form.as_table }}
        </table>
        {% csrf_token %}
        <input type="submit" value="Submit">
    </form>
</body>
</html>

10、urls进阶

\urls.py

from django.conf.urls import include, url
from . import views
urlpatterns = [
    url(r'^hello/$', views.hello),
    url(r'^time/$', views.current_datetime),
          url(r'^time/plus/(d{1,2})/$', views.hours_ahead),
]

\urls.py

from django.conf import settings
from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.homepage),
    url(r'^(\d{4})/([a-z]{3})/$', views.archive_month),
]
if settings.DEBUG:
    urlpatterns += [url(r'^debuginfo/$', views.debug),]

\urls.py

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^reviews/2003/$', views.special_case_2003),
    url(r'^reviews/([0-9]{4})/$', views.year_archive),
    url(r'^reviews/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^reviews/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.review_detail),
]

更多参考: https://djangobook.com/advanced-views-urlconfs/

中文乱码永远是程序猿的痛!!

今天使用django-admin就遇到了乱码问题,是仿照django book的model用法,做一个资源管理平台出现的问题。

代码提示:mysql不能正确处理中文字符,于是一路google找到几个可能的解决措施:

1、修改admin.py

import sys;   
reload(sys);  
sys.setdefaultencoding("utf8") 

这个办法曾经帮助我解决了chatbot项目的乱码问题。

2、修改mysql的配置文件/etc/my.cnf
方案一:

[mysqld]
character-set-server=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

方案二:utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8字符集的超集。所以现在一些新的业务,比如ISO等,会将MySQL数据库的字符集设置为utf8mb4。

[client]  
default-character-set=utf8mb4  

[mysqld]  
character-set-server = utf8mb4  
collation-server = utf8mb4_unicode_ci  
init_connect='SET NAMES utf8mb4'  
skip-character-set-client-handshake = true  

[mysql]  
default-character-set = utf8mb4  

3、关键还是要会使用命令诊断问题所在。
我的问题出在新建的数据库中表单变量的字符码设置不是utf8,后来把数据库drop掉,重新配置my.cnf文件,然后重建mysql数据库就没问题了。

4、常用的mysql命令和django命令。

mysql -u db_user -p
SHOW DATABASES;
CREATE DATABASE blog_data;
drop database mydb;
SHOW DATABASES;

CTRL + D退出mysql。

通过show variables 命令查看字符编码,发现部分变量的编码果然不是utf8,难怪乱码。

show variables like '%char%’;

尝试重制响应的字符编码设置。

set character_set_server=utf8;
set character_set_database=utf8;
show variables like '%char%’;

结果无效,于是进一步查看响应的数据库及其表单:

use my_db;
show tables;
show full columns from table1; //这条命令可以看到table1中的变量情况,发现果然编码有问题。 

尝试修改这个表单中的变量设置,也就是my_db.table1表单中的my_var变量字符编码。

ALTER TABLE my_db.table1 MODIFY COLUMN my_var VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

错误代码位置发生了改变,这说明改动有效,于是重新建立数据库(见3)。

5、Django的一些命令。

python manage.py createsuperuser #生成admin登陆的超级用户和密码
python manage.py makemigrations #当更改model时,通过此命令把变动反应到数据库中
python manage.py migrate