博客

  • ueditor编辑器加入链接添加后多出来引号

    如图所示,查看HTML源码就会多出&quot字符,可视编辑下点在链接上,会有一对引号,重新修改链接后保存,但重新打开仍然如此。

    网上找了一圈,大概就是这几种方法:

    • 修改ueditor.all.min.js或者ueditor.all.js文件,看你调用的是哪个,修改过并没有效果
    • 下载最新版ueditor,但16年以来好像没有更新了,下载了最新的1.4.3.3,还是无效

    因为有多个网站使用了ueditor编辑器,所以就翻了多个站的源码,对比并测试后搞定了。

    官方demo中调用编辑器是这样的:

    <script id="ueditor" type="text/plain" style="width:1024px;height:500px;">内容</script>
    <script type="text/javascript">
        var ue = UE.getEditor('ueditor');
    </script>

    只要将第一行script标签修改为textarea即可。

    <textarea name="Content" id="myEditor" style="width:1024px;height:500px;">内容</textarea>
    <script type="text/javascript">
        var UE.getEditor('myEditor')
    </script>

    再次进入,不需要任何修改,引号自动消失了。

    不过这种情况好像并没有影响前台的链接效果,但对于强迫症来说,还是特别不舒服的。

  • wordpress数据库完美导入合并

    wordpress数据库完美导入合并

    这个源于历史遗留问题,几年前就在本地搭建了博客,并写了一段时间,去年又在线上重新来过写了一段时间,内容本身不重要一开始没打算合并的,但觉得这个知识点还是有必要学习一下,特别是尝试了wordpress自带的导入导出工具插件后,实在忍不住要解决这个问题。

    通过官方的导入导出工具,媒体部分总是导入失败,于是直接将wp-content\uploads文件夹传到服务器,可是媒体页面不显示,即时导入成功好像也不显示,真是让人难受,必须拿下。

    特别强调:数据备份,操作前一定要备份。

    首先要了解wordpress数据库及各表的结构,可参照官方文档:

    https://codex.wordpress.org/zh-cn:%E6%95%B0%E6%8D%AE%E5%BA%93%E6%8F%8F%E8%BF%B0

    因为现在访问官网及其不稳定,可以自行搜索。而且官方文档好像没怎么更新一样,截个图如下:

    再截图现在的数据库对比一下,大概一致有一些小出入,如下:

    可以一一打开看一下,我觉得涉及到重要数据的几个表就是posts、postmeta、terms、term_taxonomy、term_relationships,省略了表前缀,这几个表直接都是互相依赖的,根据名字就可以看个大概。post是文章及媒体相关的,term是文章分类、标签等,必须一一对应。

    然后就是分析这几个表,如何将他们合二为一,新数据库里面已经存在一部分数据,所以不能直接导入进去,直接导入要么被完全覆盖,要么追加更新。

    • 完全覆盖肯定是不行,失去意义了。
    • 追加更新为什么也不行,是因为追加是随机的,数据是进去了,但之前说过几个表直接是依赖的,如果id不对应,就会乱套,照样不会解决问题。

    大概思路就是这样,首先导入文章及媒体库,post两个表。

    • 首先posts表中的id是关键,由它关联到postmeta表,形成对应;
    • 将posts表通过navicat导出向导导出excel数据;
    • 默认选择全部字段,下一步(不截图了)
    • 选中“包含列的标题”和“追加”
    • “遇到错误时继续”可以默认选中,我一般不选,没有出错才是最完整的数据。
    • 然后打开这个表,将第一列id号统一加一个数字,这个数字必须大于新数据库(被导入)中posts表中的id,并且请记住这个数字,后面还有用的哦。
    • 通过同样的方法,导出数据表postmeta,这个表中的meta_id不需要删除掉,导出时可以不选中,或者导出后删除excel文件中的对应列,同样的,文件中的pos_id列统一加入之前的数字,必须一样才能对应。
    • 将导出并修改好的wp_posts.xlsx及wp_postmeta.xlsx两个文件导入到新数据库。
    • 新数据库选中对应表,执行导入向导,导入类型excel文件;
    • 选中对应的excel文件源,全选表,默认四个下一步,导入模式默认追加,下一步,开始,完成。
    • 同样的方法执行两次导入,两个表的数据就被合并到新的数据库了。

    此时,在新的网站后台打开媒体页面及所有文章页面就可以看到媒体及文章都显示出来了,特别是媒体页面显示正常了最为直观。这算是最重要的两个数据表。

    接下来同样的方法,导出及导入term相关三个表,只是三个表中的依赖关系也一定要正确了。

    • terms表中的id最为关键,也是统一增加一个数字,同样这个数字同样大于新数据库中terms的id。
    • terms表中增加后的id与term_taxonomy中增加后的term_id一样,才能一一对应;
    • term_relationships表中的term_taxonomy_id与前表中的term_id及id对应。
    • term_relationships表中的第一列object_id与posts中的id不一定对应,但修改时增加的数字必须一样。

    归纳一下关键,旧数据库导出的数据要修改的部分:

    • _posts.xlsx文件中的id += 1000(假设的固定数字,新表中的id最大值,可以大不能小)
    • _postmeta.xlsx文件中的post_id += 1000,删掉meta_id列。
    • _terms.xlsx文件中的term_id += 88(假设的第二个固定数字,同样与新表对应,只能大不能小)
    • _term_taxonomy.xlsx中的term_taxonomy_id = (term_id += 88)
    • _term_relationships.xlsx文件中term_taxonomy_id += 88;object_id += 1000

    大概就是这样了,完美导入所有数据。对于数据只要仔细一点,还是很容易解决的。


    扩展,在数据中直接批量修改id语句:

    UPDATE table_name SET id = id +1000

    补充:

    1、04-30,发现老文章特色图片有问题,匹配不上,大概看了下可能与postmeta表有关,因为当时正好也忽略了meta_ID,但因为过了一段时间了,不想再测试了,手动修改一下好了。

  • 解决:可选的模组zip未被安装或已被禁用

    解决:可选的模组zip未被安装或已被禁用

    wordpress升级到5.4版本发现加入了站点健康提示,可以直观的发现一些问题,看到了就想去解决掉。

    缺少一个或多个推荐的模组

    ……
    警告 可选的模组imagick未被安装或已被禁用。
    警告 可选的模组zip未被安装或已被禁用。

    第一个警告很好解决,yum安装后重启一下php-fpm就可以了,刷新页面就只有一个缺少模组ZIP提示了。命令如下:

    # yum install php-imagick

    主要是第二个zip扩展,有点麻烦,需要自己下载编译安装,主要存在依赖包的问题及一些未知麻烦,咱一步步来。

    # wget http://pecl.php.net/get/zip-1.18.2.tgz
    # tar -zxvf zip-1.18.2.tgz
    # cd zip-1.18.2
    # /usr/bin/phpize
    # ./configure --with-php-config=/usr/bin/php-config
    # make
    # make install
    # make test
    # vim /etc/php.ini //zip安装成功后在php.ini中加入一行:
    extension=zip.so

    备注:以上目录可能会不一样,根据php安装路径来的,而且/usr/bin/phpize要在刚才解压的目录下运行,所以它的上一步是切换到解压的目录。后面这几个命令如果没有任何错误,算人品极好了。

    错误1:

    ./configure的时候可能会出现错误:configure: error: Please reinstall the libzip distribution

    这个错误是因为系统中的libzip版本太低,或者根本不存在。

    # yum remove libzip
    # wget https://libzip.org/download/libzip-1.6.1.tar.gz
    # tar -zxvf libzip-1.6.1.tar.gz
    # cd libzip-1.6.1
    # mkdir build && cd build && cmake .. && make && make install

    错误2:

    cmake: command not found或者cmake版本太低。

    首先通过yum安装一下看是否满足版本需求,不行就卸载后继续下载编译安装。这一步除了下载很慢没有出现其它的未知错误。

    # yum install cmake
    # yum remove cmake
    # wget https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0.tar.gz
    # tar -zxvf cmake-3.17.0.tar.gz
    # cd cmake-3.17.0
    # ./bootstrap
    # make && make install
    # cmake --version
    make && make install
    cmake –version

    cmake安装好后,回过头去再装libzip,再装ZIP,依赖关系都解决了,中途没再出现什么问题,最后make test完成,修改/etc/php.ini文件,加入一句extension=zip.so保存重启php-fpm,理论上到此结束,如果还是不行大概率是下面错误3中的问题,zip.so没有加载成。

    错误3:

    -have your system administrator add LIBDIR to `/etc/ld.so.conf’
    ……
    Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ (tried: /root/zip-1.18.2/modules/zip.so (libzip.so.5: cannot open shared object file: No such file or directory), /root/zip-1.18.2/modules/zip.so.so (/root/zip-1.18.2/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

    make test 中的错误提示

    Bug #72434: ZipArchive class Use After Free Vulnerability in PHP’s GC algorithm and unserialize [tests/bug72434.phpt]

    make test中的错误提示

    PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ (tried: /usr/lib64/php/modules/zip.so

    执行php -v的错误提示

    通过错误提示可大概知道虽然ZIP已经安装了,但配置还是有问题,php加载zip不成功,通过phpinfo页面也看不到zip扩展,wordpress中的提示依旧在。

    # vim /etc/ld.so.conf //添加以下四行保存:
    /usr/lib64
    /usr/lib
    /usr/local/lib
    /usr/local/lib64
    # ldconfig -v //同步动态库
    # systemctl restart php-fpm nginx
    # php -v //再无错误
    # php -m //最下面出现ZIP,也可以看phpinfo页面出现zip模块

    补充:

    虽然安装好了,但回想起来,要是yum能直接安装就方便多了,搜索了一下,原来也可以:

    根据版本先查找一下是否带了zip包

    yum search php73|grep zip

    其实一般都能搜索到,如果有就直接安装

    yum -y install php73-php-pecl-zip.x86_64

  • navicat运行SQL文件1577、1153、1292错误

    错误提示 1577:

    [DTF] Data Transfer start
    [DTF] Getting tables
    [DTF] Getting views
    [DTF] Getting functions
    [DTF] Getting events
    [ERR] 1577 - Cannot proceed because system tables used by Event Scheduler were found damaged at server start
    [DTF] Finished unsuccessfully

    官方:https://help.navicat.com/hc/en-us/articles/218283617-1577-Cannot-proceed-because-system-tables-used-by-Event-Scheduler-where-found-damaged-at-server-start

    因为是回过头来总结,这个官方文档我是打开过,但history好像没有相关的操作记录,印象中就是修改了max_allowed_packet=64M后没有的。

    补充:1577错误又出现了,原来是本地的数据库报的这个错误。


    错误提示 1153:

    [ERR] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    MySQL默认限制了运行SQL数据库的大小,修改/etc/my.cnf,加入下面的语句,64M根据数据库文件大小相应修改即可。

    max_allowed_packet=64M

    直接修改配置文件相比运行一些命令来得简单,修改后重启mysqld就能正常导入了。php、nginx都有类似的限制,php中将/etc/php.ini文件加入post_max_size = 64M和upload_max_filesize = 64M两句重启即可,nginx中将/etc/nginx/nginx.conf文件http区块中加入client_max_body_size 64m;重启即可。


    错误提示 1292 :

    [ERR] 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'post_date_gmt' at row 1 [ERR]

    参考地址:

    https://www.prestashop.com/forums/topic/493398-mysql-57-causes-error-when-ps-try-to-insert-date-as-0000-00-00-000000/

    MySQL 的设置问题,打开/etc/my.cnf配置文件,加入(如果没有)或者修改(如果有)为:

    sql-mode="NO_ENGINE_SUBSTITUTION,ERROR_FOR_DIVISION_BY_ZERO"

    重启MySQL服务再次导入成功完成。

    但不知道这样修改是否有什么安全影响,所以有必要了解一下这几个参数具体什么意思:

    sql_mode常用值

    ONLY_FULL_GROUP_BY:

    对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

    NO_AUTO_VALUE_ON_ZERO:

    该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

    STRICT_TRANS_TABLES:

    在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

    NO_ZERO_IN_DATE:

    在严格模式下,不允许日期和月份为零

    NO_ZERO_DATE:

    设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

    ERROR_FOR_DIVISION_BY_ZERO:

    在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL

    NO_AUTO_CREATE_USER:

    禁止GRANT创建密码为空的用户

    NO_ENGINE_SUBSTITUTION:

    如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

    PIPES_AS_CONCAT:

    将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

    ANSI_QUOTES:

    启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

    参考地址:http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html

    根据以上说明就很容易理解了,再通过navicat进入数据库表中看一眼,确实存在日期为“0000-00-00 00:00:00”的数据,如图,来源一些未发表自动保存的草稿缓存。

  • 【笨办法学Python3】习题2 注释和#号

    【笨办法学Python3】习题2 注释和#号

    Windows部分:

    Linux部分:

    学习小结:

    1、这部分很简单,按照要求抄写即可。了解反向查错,一般错误提示行往前找才是真正错误的地方。

    2、练习完后才记起每个练习都有小视频,英语中字的,看看与自己操作有什么区别,也相当于练习了一遍英语。

    3、朗读时发现#字符,英语朗读的是Number,比书中octothorpe、pound character简单,不知道具体区别,不过octothorpe写了几遍也好记了。

    视频地址:

    http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003615&verified=true

    # A comment, this is so you can read your program later.
    # Anything after the # is ignored by python.
    
    print("I could have code like this.") # and the comment after is ignored
    
    # You can also use a comment to "disable" or comment out code:
    # print("This won't run.")
    
    print("This will run.")
    
    print()
    print("Study Drills(巩固练习):")
    # 弄清楚#字符的作用,而且记住它的英文名字octothorpe / pound character
    print("1、octothorpe单词不好记啊,分开读oc tothor pe,不明白记的意义,就\
    当记英文单词了。\n2、从后往前逐行反向检查应该是有用的吧,目前还体会不到,也\
    当学英语了。\n3、确实会发现一些错误,因为注释掉了所以没有报错。\n4、朗读代\
    码也当学英语吧,越来越喜欢这个课程了,英语也一并学习了,一箭多雕。")
  • 【笨办法学Python3】习题1 第一个程序

    【笨办法学Python3】习题1 第一个程序

    Windows部分

    Linux部分:

    学习小结:

    1、5-7行说明单引号与双引号好像并没有区别,成对使用即可。

    2、不需要每行后加换行符,自动换行。

    3、巩固练习2书中翻译应该是错误的,不是“让你的脚本只打印其中一行”而意思应该是“用一行打印出来”,就是不要让它自动换行。书中“其中”二字意思明显就不对了,搜索解决方法过程中才发现大概率是我按书中意思理解错误了。

    4、记住前言中所说“ 不要复制粘贴 ”,认真一字一字的打出来,我三个环境打了三遍希望效果更好,分析过程主要还是在虚拟机Windows中进行的,Atom用着确实挺舒服的。

    5、Windows中和Linux中有些许区别,最后一行如果加end=‘ ’,Linux中不会换行,Windows结束后会换行,不过这里最后一行实在没必要加了。

    视频地址:

    Windows:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003608&verified=true

    Linux:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003609&verified=true

    macOS: http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003605&verified=true

    print("Hello World!")
    #print("Hello Again")
    print("I like typing this.")
    print("This is fun.")
    print('Yay! Printing.')
    print("I'd much rather you 'not'.")
    print('I "said" do not touch this.\n')
    
    print("巩固练习:")
    # 巩固练习1,让你的脚本再打印一行。
    print("1、第7行.后加一个换行符或者第8行加“print()”即可多打印一个空行。")
    # 巩固练习2,让你的脚本只打印其中某一行。
    print("2、难道用“#”把其他行注释掉?肯定不是。“如果做不出来可以暂时跳过”")
    # 巩固练习3,在一行的起始位置放置一个"#"字符。它的作用是什么,自己研究一下。
    print("3、很显然是“注释”掉此行的作用。")
    
    print("\n学习小结:")
    print("1、5-7行说明单引号与双引号好像并没有区别,成对使用即可。\n2、不需\
    要每行后加换行符,自动换行。\n3、巩固练习2书中翻译应该是错误的,不是其中\
    一行而是用一行打印出来,就是不要让它自动换行。\n")
    
    print("Hello World!", end = ' ')
    print("Hello Again", end = ' ')
    print("I like typing this.", end = ' ')
    print("This is fun.", end = ' ')
    print("Yay! Printing.", end = ' ')
    print("I'd much rather you 'not'.", end = ' ')
    print("I 'said' do not touch this.", end = ' ')
  • 【笨办法学Python3】习题0 准备工作

    【笨办法学Python3】习题0 准备工作

    准备了三个学习环境(Windows+Linux):

    1、宿主机:Windows 10 x64 + python3.8.0(目前最新版);

    2、虚拟机:Windows 10 x64 + python3.6.0(特意下载了与书本中一致的版本,学习过程中可以类比);

    3、虚拟机:CentOS 8 x64 + python3.6.8(系统自带,CentOS7自带还是python2,所以特意安装了CentOS8,还是比较喜欢新)。

    4、本来还想在虚拟机装macOS环境的,可惜没装成功,就算了,这不是重点。

    Windows部分:

    1、Atom官网打开很慢,下载很慢,网页还被重置等问题,还好复制下载链接在迅雷中下载很快解决。

    2、Python安装完成提示“setup was successful”页面有一个提示“ Disable path length limit…… Changes your machine configuration to allow programs including Python to bypass the 260 character “MAX_PATH” limitation ”,解除260字符的限制,一般都说点击一下就好了,不过书中未提及,我就没点,到时候出现这类相关错误了再说呗。

    3、PowerShell比老的cmd好用多了,ls命令就可以直接使用了,不严格区分大小写。

    Linux部分:

    1、系统自带Python,不用安装,也不想麻烦去装Atom(我是来学Python的),自带vim就可以了,直接可以进入学习。

    书中节选:

    “这里再次向你说明,只要是一台能用的计算机就可以了。你需要的只有3样东西:一个文本编辑器,一个命令行终端,还有Python。……其它的事情只会让你更困惑,所以还是坚持按计划进行吧。

    “如果你坚持尝试,坚持录入习题,坚持弄懂习题的话,你最终一定会明白里面的内容的。如果你通读了本书,却还是不懂怎样写代码,你的努力也不会白费。”

    视频地址:

    Windows:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003606&verified=true

    macOS:http://ewm.ptpress.com.cn:8085/preview?qrCode=qr2018003610&verified=true


    这就是所谓的“笨办法”吧,足够简单才更容易上手,所有的学习任务都已经计划好了,不用“操心”其它的,坚决执行就可以了。本来这只是一本凑单的书,大致翻了一下就让我下定决心来学习,其实主要就是为了锻炼自己的自律能力、执行力,改变一下自己以前失败的学习方法。

    没有自律,学什么都难成啊。加油。

  • VMware安装macOS.Catalina.10.15.1

    VMware安装macOS.Catalina.10.15.1

    首先说一下结果:没成功。操作截至到如下图所示错误,总结记录一下,待以后有时间再尝试解决。

    No compatible bootloader found.
    Boot Manager

    操作步骤:

    1、使VMware新建虚拟机支持macOS,使用到“Unlocker MacOS 解锁补丁 ”,这一步很顺利,没有什么错误出现。

    https://www.52pojie.cn/thread-1032336-1-1.html

    2、下载macOS镜像文件,文件接近8G,能找到的很多都是网盘链接,很难找到官方原版的,如果度娘不限速就好了,多下载几个可以比较一下MD5。

    3、VMware不支持直接使用.dmg文件,使用UltraISO转换ISO格式,结果证明这方法肯定不行。另外UltraISO如果提示“不是ISO文件或不能识别的格式”大概率是因为.dmg文件问题。

    原因解析:

    1、问题很明显是引导程序不正确,如果有U盘可用可以试一下将.dmg文件用UltraISO写入硬盘映像再试一下,暂且不试了。


    对黑苹果本来也不太感冒,第一次尝试,这是跑偏了才想试一试的,本来只是想多一个学习环境,还是用Windows10+CentOS吧,接下来的学习主目标是攻克python.

    没想到这就成了开篇文章,挺好的,随意一点,多记一点。关键是行动起来,加油。

  • 地道发音【闭营致辞】10分钟建立终生受用的英语学习理念

    地道发音【闭营致辞】10分钟建立终生受用的英语学习理念

    音频版(开车、坐地铁听)

    Day 14 闭营致辞

    文字版:

    14天地道发音训练营,结束了。

    有同学说意犹未尽,有同学说受益匪浅,甚至有同学交了第二次钱,把训练营又参加了一遍。

    但是,天下没有不散的宴席,14天到了,是时候说再见了。临别之际,再送给大家最后一篇文章吧。

    我们来聊一聊英语学习这件事。

    1

    每当训练营临近结束时,我都会收到这样的信息:

    “老师,这几天有点忙,课程没有听,我把课存起来,以后再听行吗?”

    唉,以后再听…以后再听…我知道,他们以后是不会听的。仔细想想,这是一件挺搞笑的事。当初他们主动花了钱,报了名,历经种种复杂步骤,加入这个群。结果,连课都不听。那他们当初为什么要花钱报名呢?

    就这个问题,我专门问了几个同学。他们的回答大都是:当时买的时候,就是觉得练好发音挺重要的,价格也不贵,就买了。但是等真的开始学习时,自己又被各种工作琐事纠缠,抽不出或者懒得抽出时间学习。在和他们聊天的过程中,我能明显感到一种学习焦虑:

    • 一边知道学习的重要性,一边又抽不出时间学习;
    • 一边为自己的拖延找理由,一边又感到深深的自责。

    我相信,这种学习焦虑,困扰着大多数人。

    而在解决这个焦虑之前,我们必须先弄清一个问题…

    2

    你为什么要学习?

    不学习能行吗?现在的职场,你要是不持续学习,就别想生存。你养活自己的技能,有几个是大学老师教的?不都是在工作的时候现学的吗?

    我手下就有个员工,负责的是流利说的配音课功能。她的本科专业是家具设计,你可以理解成做木匠活的。刚来的时候,她除了英语好,真的是啥都不会。有一次,我看她把手指放到电脑屏幕上,挨个查一个word文档的字数。我问她为啥要用手查,她说不用手查还能怎么查?我让她看一下屏幕的左下方。她这才“哦”地一下:原来word文档有自动统计字数的功能。

    就是这么一个电脑小白,后来因为工作需要,愣是学会了剪辑,消音,压制,拉轴,特效字幕,数据分析等多项技能。现在,她能运用自如电脑上装着的十几个软件。有没有觉得很厉害?

    其实,她只能算合格罢了。

    想要升职加薪,想有更长远的发展,你必须学习更多的东西。这些东西,你当下的工作不会立即用到,但是如果你学会了这些东西,你的事业会立即到一个不一样的高度。

    我之前的一个学生,工科女,机械专业毕业。在一个三线城市的研究所工作,每月4K工资,过着朝九晚五的悠闲生活。终于有一天,她受够了,决定学点新技能。因为她看到自己在大城市发展的同学,个个都混得比自己好。但是,她也不知道自己该学点什么好,就是无意间看到我们流利说“懂你英语”的广告,才开始利用下班时间学英语。她当时就是抱着“把英语学好肯定没坏处”的心理,狠狠地学了6个月。

    后来,一家上海外企招人,就两点要求:英语好+机械专业背景,因为这个岗位需要和外国工程师用英文交流。她抱着试试看的心理,就去面试了。结果,她凭借自己半年来练好的口语和听力,完爆其他所有面试者。

    想想看也是,机械专业的典型工作,不需要你有多好的英语。能看懂图纸上简单的单词就行了,谁没事儿会去进修口语啊。但是我这个学生就做到了,她额外的学习,让她成为了更稀缺的人才。工资涨到原来的三倍,也就不足为奇了。

    只有学习,你才能生存;只有学习,你才能成长。这个道理,越来越多的人已经意识到。

    但现实是:走出校园后的学习,并不容易。

    3

    你的学习焦虑

    有一个事实很残酷,但你必须得接受:你以后的所有时间,都会是碎片化的。不比大学的时候,你有整天的空闲时间。现在的你不得不把大部分时间,花在工作上。

    在忙完一天后:

    • 你只能在下班的路上学习。戴上耳机,听一些音频课程,还得时刻留意着当下的情况,生怕坐过站。断断续续听了一路,也不知道自己学了点啥。
    • 或者在回家后的床上学习。读两页书,看几个教学视频,还没学多久,就忍不住去刷两下社交媒体,打两把游戏。转眼间到了深夜,你才疲惫地睡去。

    就这样,你所谓的“学习”,进行了一天又一天,但你能记住的,只是一些不系统的碎片,也不知道这些知识有什么用。这也不奇怪,你的学习时间就是碎片的,怎么可能学到系统的知识?

    学到碎片的知识,还不是最差的情况。

    最差的情况是你被浩如烟海的知识砸晕了,要么不知道要学什么东西,要么去乱学一些东西。

    就拿学英语来说,市面上的培训机构多如牛毛,教你学英语的秘籍更是数不胜数,还有大量的免费学习资料在网上流传,塞满了你的网盘。

    到底信谁?到底学哪个?你不知所措。

    于是,很多人会先尝试自学。比如我之前在线下教过的学生,在上我的课之前,基本都尝试过自学:

    • 先买本单词书背单词;
    • 微博微信上“先码后看”了一堆学习资料;
    • 手机上下载了一堆英语类APP;

    但结果呢?

    • 单词书背到abandon就放弃了;
    • “先码后看”其实根本不看;
    • 一堆APP装了又卸,卸了又装;

    几年过去了,他们的英语还是没有任何提高。为什么会这样呢?大部分人这时会把原因归结为自己的无能,自己的没有毅力,自己的无法坚持。但是我想说,你并没有看到问题的本质。你无法坚持,你拖延学习,本质上并不是因为你自己的毅力不足,而是你要做的事,本身就是一件不可能完成的事!

    你自学英语,基本就是在从零开始探索最高效的英语学习方式。可能吗?肯定不可能啊。全世界最聪明的人思考了几十年,都没有完全想明白的东西,怎么可能被你一下子弄清楚!

    那我们就只能放弃了吗?

    当然不是。

    4

    黑箱

    思考太大的问题,脑子不够用,但我们可以把问题简化啊。这就要引入一个重要的概念了:黑箱。

    黑箱,指一个只知道输入输出关系,而不知道内部结构的系统或设备。这是一个IT行业的专业术语,主要应用在软件测试领域。这个概念最大的贡献,就是把复杂的问题大大简化:不管电路多么复杂,只需要把输入口输出口之间的所有东西,看成一个整体,然后通过结果,评价好坏。

    刚才我们说,英语学习方法的思考,实在是太复杂了。但是市面上已经有现成的方法了,为什么不把别人思考好的有用结果,当成一个黑箱,拿过来直接用呢?为什么你还要辛辛苦苦,去探索一条别人已经发现的路呢?

    那些去网上找各种免费资料的同学,表面上没花钱,实际上是浪费了更宝贵的时间,因为那些资料不系统,不全面,根本称不上一个黑箱。我反而觉得,那些基础不好,愿意付费学习的人,其实是占便宜的。因为他们用金钱筛选出了最靠谱的「黑箱」,不需要思考其中复杂的原理,只需要照着做,然后收获结果就行了。

    当你掌握了黑箱的思考方式,你就不需要考虑黑箱里的复杂结构,只需要思考选择哪个黑箱。

    我们刚刚结束的“14天地道发音训练营”,就是一个黑箱。

    • 你不需要纠结怎么打好发音基础。我们的地道发音 [人机课]给你总结了43组音标,还有配套练习,每天乖乖练它三组,就没问题了。
    • 你不需要阅读无聊的发音教材。我已经把教材中最精华的部分总结出来,用最接地气的语言,录成音频,讲给你听了。
    • 你甚至连笔记都不用记。老师们都给你总结好了,啥时候想复习,打开文章,看一眼就能想起来了。

    你只需要做一件事:选择。

    14天前,你无意间选择了流利说的“地道发音”课程。这个“选择”本身的重要性,要超过你辛辛苦苦学几年英语的重要性。

    有一个道理值得反复强调:

    方向比努力更重要!

    只要方向选择对了,即使你没那么努力,也会跌跌撞撞到达终点。

    5

    什么是正确的方向?

    在当下的社会环境学英语,什么样的方向是正确的方向?

    在我看来,只需要满足以下三点:

    一. 碎片化

    “你以后的所有时间,都会是碎片化的。”这是一个无法改变的事实。谁不想有大块的时间去学系统的知识?但现实是:你永远不会有大块的时间了。

    不过我们也有好消息,和其他知识的学习不同,语言的学习,碎片化效果反而更好!脑科学研究显示:“每天30分钟,每周5天”的英语学习效果,要远好于一次突击3个小时。

    正是基于这种“高频多次”的英语学习理念,流利说的“懂你英语”在设计之初,就是想让你每天学习30-60分钟。中午吃完饭,晚上睡觉前,掏出手机读一会儿,一天的任务就完成了。虽然每天只有几十分钟,但这几十分钟,都是有效的!实验证明,懂你英语的学习效率是普通英语学习方式的3倍!

    二. 有监督

    “自控力少数学霸才有,普通人就得拿小鞭抽”。大家可以回想一下,过去的14天,如果没有发音老师催你学习,如果没看到群里其他同学在学习,你能坚持下来吗?大部分同学是不能的。因为偷懒拖延是你的本能,想战胜这个本能,就得依靠外部的力量。

    这也是为什么我们的“懂你英语”推出了班主任督学服务:鸡汤鼓励,撒娇卖萌,逼你完成任务才罢休,解答完你问题才会停。

    三. 黑箱化

    不需要你思考复杂的原理,几个简单步骤照着做,就能拿到结果。我们的“懂你英语”课程,就是这样一个黑箱。美国教育学泰斗Lance Knowles的毕生思考,英语流利说教研团队历时两年,斥资千万的心血,全凝结在这套课程中。

    • 你不需要思考先背单词还是先练听说。因为我们已经研究出了结果:从听说入手,在全英文的浸泡下记忆单词。
    • 你不需要思考一句话读几遍最能提高口语。因为我们已经研究出了结果:先听一遍,再复述跟读一遍,然后听一下自己发音,最后再听一遍原声。
    • 你不需要下载一大堆APP,买一摞参考书。你只需要拿出手机,打开流利说app,动动手指,学习开始。

    这一切,每天不到三块钱

    One more thing…

    为了进一步激励大家学习,我们还推出了专属福利:

    一年999包升3级

    未提升还有机会免费学哦

    训练营可花呗/白条分期,并自选开课时间(近期忙可推迟)。针对不同基础,赶快私信发音老师了解适合自己的专属福利课程吧。

    此外,所有购买训练营专属课程的同学,还可以再获得一门由我,Ray老师,萌C老师主讲的一套“看美剧学英语”课程。这门课你花钱是买不到的,只送给我们14天地道发音训练营的学员,鼓励那些在训练营结束后,继续坚持把英语学下去的同学。课程包含两大部分:

    1.《只看美剧,干翻英语》方法论课,扫清所有看剧学英语误区,给出高效看剧套路干货。

    2.十三节《看老友记学英语》独家大课,精美视频+配套练习,实战演练看剧套路。

    反正学完这套看美剧学英语课程,你以后看美剧电影的时候,就会不知不觉学到英语了。

    3倍效率+督学服务+美剧课程,我只能帮你到这儿了~

    好了,我们的闭营致辞也接近尾声了,不管你之后是否要继续学习懂你英语,我今天提到的“碎片化,有监督,黑箱化”三个理念,也许会对你有所启发。

    当然,如果你只是听听,是没有任何价值的。听完之后的思考,思考过后的选择,选择过后的行动,才有价值。

    OK, 我们14天地道发音训练营到此结束,我是统一,再见~

  • 地道发音【Day 13】大总结:必听!

    地道发音【Day 13】大总结:必听!

    学习《大总结》课程

    音频版课程(开车、坐地铁听):

    Day13:大总结课程

    最后送给大家的话:

    15岁觉得游泳难,放弃游泳,到18岁遇到一个你喜欢的人约你去游泳,你只好说“我不会耶”。18岁觉得英文难,放弃英文,28岁出现一个很棒但要会英文的工作,你只好说“我不会耶”。人生前期越嫌麻烦,越懒得学,后来就越可能错过让你动心的人和事,错过新风景。 

    【音标小课堂】最后一节音标小课堂啦,给大家详细讲解了s和th和咬舌音,一定认真听!

    7.grass-thank-with.mp3