月份:2017年6月

东台寺街琐忆(转载)

原作者:(东台)王大庆
原文链接:http://www.xici.net/d120558897.htm

  东台老城九龙港畔,曾有一条闻名苏北的小街——寺街。寺街长不过300米,宽不过3米,街面中间用一米麻石铺设,两侧为小砖辅佐。寺街因东台名寺三昧寺而得名。据史料记载,其寺始建于唐代,原名圣果院,当年唐太宗李世民征东到此,陷马于淤泥河中,敌帅盖苏文欲斩之,唐皇呼救,正逢尉迟敬德于附近池中洗马闻之而赤身跳上光背马急驰救驾,唐皇避其难后,遂建庙还愿,赐匾额“圣果院”。
  清顺治初年,东台高僧印白重建圣果院,建前后殿楼、塔院、僧寮、方丈室、厨房、库房等100多间,前后花银万余两之多。康熙四十四年(1705年)院僧赵杰在镇江金山寺恭迎康熙帝出巡,奏请赐寺匾额,康熙帝应允,册封圣果院为“慈济寺”,同时又在一幅黄绫上书写对联:“孤云自往心同远,皓月当空性本园。”赵杰和尚返东台后,将对联挂于寺内大雄宝殿上,“圣果院”从此易名“慈济寺”。
  清乾隆年间,慈济寺不幸遭火灾,和尚可达化缘至镇江金山寺,恰逢乾隆帝南巡至此,可达为其导游,尽其才能,以言奉承,恰到好处。龙颜大悦,问其原主持,乃告之系东台慈济寺,因化缘重建庙宇到此,并玄吹东台名胜,乾隆喜之,欲游。可达恐圣上识破其吹嘘遭欺君之罪,乃以“龙不能游海”巧言阻之。乾隆方罢游,乃赠金敕扩建慈济寺,并亲笔题写“三昧禅寺”,令当时扬州、镇江知府援建三昧寺。扩建后的三昧寺,东自古三昧寺巷,西至吕祖宫巷,北至大月塘,大小四十九个天井,占地六十亩,规模宏伟,为苏北众多寺庙之首。
  寺街得名虽缘于三昧寺,而闻名却得力于沿街众多古迹相助。街头便是唐代遗迹淤泥河与洗马池,街尾便是成L形的九龙桥和关帝桥,街中庙宇甚多,有红土地庙、祠山庙、三宫殿、财神庙、吕祖宫……每一古迹都有一个美丽而动人的传说。
  清末民初时,寺街两侧店铺渐渐增多,其中负有盛名的百年老店就有20多家,如刘万顺南货店、王恒茂木行、张洪兴碗店、唐记碗店、钱记碗店、陆仁和粮行、朱记米店、陈胖子米店、五福堂澡堂、菊花台澡堂、丁永康剃头店、姚二小剃头店、苏记剃头店、戴记五洋店、周玉珠五洋店、王五寿饭店、向阳居茶社、腾记老虎灶、丁公桥老虎灶、王记烧饼店、戴驼子铁匠店、张十炭店、杜记八鲜行、梁记酱园、胡宝发机面店、徐石清儿科诊所、孙家龙牙科诊所等,更有众多流动摊点、五匠百工走街串巷、肩挑叫卖。最具特色的是丁公桥口向阳居茶馆,每天高朋满座,喝茶品茗,吃面尝饺,说事道闻,谈笑风生,好不热闹。而桥口亦有烧饼店、老虎灶、苗瘸子炒货摊、苏家文熏烧摊等助兴,人来人往,川流不息,自成风景。
  解放以后对私有制改造,寺街老店多数不复存在,唯有澡堂、剃头店、老虎灶、烧饼店、铁匠店、炭店、酱园、机面店、诊所依然开张,其中张十炭店公私合营后归属东台煤炭厂改名寺街炭店,梁记酱园归属东台酱厂改名寺街酱园,王记烧饼店归属东台饮服公司改名丁公桥烧饼店,五福堂澡堂、菊花台澡堂归属东台饮服公司后名称不变,其它一些没有雇佣人员关系的小店铺、诊所,仍由个人经营。而三昧寺却由东台粮管所接管,衍生出当时台城最大的寺街粮店,车来车往,人流如织。陆仁和粮行则成了航道站,站外九龙港里海船渔船停泊不断,夜间渔火与星星交相辉映,别具一番情趣。寺街风韵不减当年。
  文革期间,三昧寺及寺街其它庙宇都不复存在;旧城改造后,古老的寺街也从人们的视野中消失。值得庆幸的是原寺街的街头上孵化出了一条民清街,寺街的麻石、小砖尽铺其中,两侧的店铺也基本仿照原貌,当年寺街的神韵仍可领略一二。
  我家祖祖辈辈生于寺街长于寺街,见证了寺街的兴衰,至我这一代又亲眼目睹了寺街化为一条明清街,甚感欣慰。闲时散步,我总喜欢走走明清街,寻觅寻觅当年寺街的身影,感悟感悟“新寺街”的韵味。

google的blockly发布1.0正式版

https://developers.googleblog.com/2017/06/introducing-blockly-10-for-android-and.html (需梯子)

面向儿童的积木式可视化编程框架blockly发布了1.0正式版,可基于ios和android平台创建app,也对基于移动web的版本和跨平台兼容性进行了优化。

已经看到有朋友圈发布类似的小孩玩编程的东西,看来未来IT工程师也可以多一条出路了——编程,从起跑线开始。

strcpy和strcpy_s函数

最近有同学在编写作业时,用了字符串拷贝库函数strcpy,被编译器提示不安全,要求用strcpy_s代替。

一个典型的自定义strcpy函数代码可能如下:


char * mystrcpy(char *des , const char *src)
{
    char *t = des;
    while(*des++ = *src++)
        ;
    return t;
}

这个代码的问题在于如果des指向的空间不足以存放字符串src的内容,就可能会导致数据冲突或程序崩溃。

在高版本的vs当中,微软推出了更安全的strcpy_s函数。其函数声明为:

三个参数版本
errno_t strcpy_s(
    char *strDestination,
    size_t numberOfElements,
    const char *strSource
);
两个参数版本
template <size_t size>
errno_t strcpy_s(
    char (&strDestination)[size],
   const char *strSource
); // C++ only

其中三个参数的版本可以为c/c++通用,需要程序员主动指明可接受赋值的空间大小,这样避免只传递指针而无法控制复制长度的问题,通用性较强;而两个参数的版本使用了模板和对数组的引用技术,只能对c++使用,而且第一个参数要求必须是字符数组(不能是字符指针),否则无法运行。

不过这两个函数不是c++标准库函数,在linux环境下需要进行移植或者用strncpy函数(该函数也可以指定拷贝的数量)代替。

含有类、动态分配内存、插入和提取运算符重载、文件读写的程序示例

程序说明

  1. 在类当中定义提取和插入运算符重载,并对参数分别进行检测,如果是输入或输出对象则进行额外处理。
  2. 在写文件时需要写入字符串的长度,但输出不需要。读文件时需要读取字符串的长度,但输入不需要。
  3. 为了简化步骤,输入时控制了字符串的长度,否则可以用链表等不定长的容器来获取输入。
  4. 出于简化问题的角度,本程序把保存数据用的文件名固定了,因此如果创建需要多个对象(包括复制构造函数和赋值运算符等)时可能会出现问题(会导致数据的覆盖等)。
#include <iostream>
#include <fstream>
using namespace std;

class rect;
istream& operator >>(istream & is , rect & r);
ostream& operator <<(ostream & os , const rect & r);

class rect
{
    int left , top , right , bottom;
    char *info;
public:
    rect()
    {
        ifstream infile("rect.txt");
        if(infile)
        {
            infile >> *this;
            infile.close();
        }
        else
            cin >> *this;
    }
    ~rect()
    {
        ofstream outfile("rect.txt");
        outfile << *this;
        outfile.close();
        delete []info;
    }
    friend istream& operator >>(istream & is , rect & r)
    {
        int len;
        if(&is == &cin)
        {
            char c[20];
            cout << "请输入矩形的四个坐标:";
            cin >> r.left >> r.top >> r.right >> r.bottom;
            cin.get();
            cout << "请输入矩形的描述(20字符以内):";
            cin.getline(c , 20);
            len = strlen(c);
            r.info = new char[len + 1];
            strcpy(r.info , c);
        }
        else
        {
            is >> r.left >> r.top >> r.right >> r.bottom >> len;
            r.info = new char[len + 1];
            is.get();
            is.getline(r.info , len + 1);
        }
        return is;
    }
    friend ostream& operator <<(ostream & os , rect & r)
    {
        os << r.left << ' ' << r.top << ' ' << r.right << ' ' << r.bottom << endl;
        if(&os != &cout)
            os << strlen(r.info) << endl;
        return os << r.info << endl;
    }
};
int main()
{
    rect r;
    cout << r;
    return 0;
}

编写灵活、稳定、高质量的 HTML 和 CSS 代码的规范

编码规范 by @mdo

开发灵活,稳定,可持续 HTML 和 CSS 代码的规范(中文版)

值得学习和推荐。

非常棒的JavaScript在线教程

javascript.info

引自:网路冷眼@weibo

http://javascript.info/是一个现代化风格设计的JavaScript在线教程网站,目前仍处于Beta阶段。

从内容上,基本上涵盖了JS的所有基础内容。作为入门教材,应该是足够了。