Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
sishen committed Apr 17, 2014
1 parent 8416cda commit c90d6c9
Show file tree
Hide file tree
Showing 165 changed files with 3,670 additions and 2,668 deletions.
47 changes: 25 additions & 22 deletions 158983791/index.html
Expand Up @@ -40,18 +40,21 @@
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<link href="/blog/stylesheets/application.css?1392193221" media="screen" rel="stylesheet" type="text/css" />
<script src="/blog/javascripts/application.js?1392188988" type="text/javascript"></script>
<link href="/stylesheets/application.css?1392193221" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/application.js?1392188988" type="text/javascript"></script>



<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js"></script>
<script type="text/javascript">var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-4054156-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();</script>

<!-- start Mixpanel -->
<script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"===e.location.protocol?"https:":"http:")+'//cdn.mxpnl.com/libs/mixpanel-2.2.min.js';f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f);b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==
typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" ");for(g=0;g<i.length;g++)f(c,i[g]);
b._i.push([a,e,d])};b.__SV=1.2}})(document,window.mixpanel||[]);
mixpanel.init("43a596021773ee49e7b13713d89c9875");</script>
<!-- end Mixpanel -->


</head>

Expand Down Expand Up @@ -96,15 +99,15 @@ <h1 class="blog-name">「风车协作」官方博客</h1>

<header>
<h2 class="title">
<a href="/blog/158983791">Released Features of Pragmatic.ly</a>
<a href="/158983791">Released Features of Pragmatic.ly</a>
</h2>
</header>

<aside>
<ul class="meta">
<li class="author-photo">
<a href="http://terrytai.com">
<img alt="" width="120" height="120" src="/blog/images/terry-tai.png?1379005285" />
<img alt="" width="120" height="120" src="/images/terry-tai.png?1379005285" />
</a>
</li>
<li class="author">
Expand All @@ -115,13 +118,13 @@ <h2 class="title">
</li>
<li class="tags">

<a href="/blog/tags/announcement">Announcement</a>
<a href="/tags/announcement">Announcement</a>

<a href="/blog/tags/changelog">ChangeLog</a>
<a href="/tags/changelog">ChangeLog</a>

</li>
<li class="back-link">
<a href="/blog">&lsaquo; 返回博客主页</a>
<a href="/">&lsaquo; 返回博客主页</a>
</li>
</ul>
</aside>
Expand All @@ -135,49 +138,49 @@ <h3>Clear Pricing Policy</h3>

<p>We&rsquo;re landing a dedicated pricing page now. It&rsquo;s simple and vibrant. Please don&rsquo;t hestigate to contacting us if you have anything more that you want to know.</p>

<p><img title="Clear Pricing Policy" alt="Clear Pricing Policy" width="240" height="160" src="/blog/images/158983791/pricing.png?1364632825" /></p>
<p><img title="Clear Pricing Policy" alt="Clear Pricing Policy" width="240" height="160" src="/images/158983791/pricing.png?1364632825" /></p>

<h3>Organization Panel</h3>

<p>We created a brief panel to list organization information which allows you to create an admin account that can handle the status of the organization easily. You can view Billing Time, All Projects Info and Team Members Information there and further it also allows you to add or remove members from your organization with this unique feature.</p>

<p><img title="Organization Panel" alt="Organization Panel" width="454" height="495" src="/blog/images/158983791/organization.png?1364632998" /></p>
<p><img title="Organization Panel" alt="Organization Panel" width="454" height="495" src="/images/158983791/organization.png?1364632998" /></p>

<h3>Manage Iterations &amp; Manage Team</h3>

<p>We added two simple panels for admin to see iterations and team information. Admin could also remove members from a project and delete an iteration of a project with this feature.</p>

<p><img title="Manage Iterations &amp; Manage Team" alt="Management Iterations &amp; Team" width="174" height="127" src="/blog/images/158983791/management.png?1364632905" /></p>
<p><img title="Manage Iterations &amp; Manage Team" alt="Management Iterations &amp; Team" width="174" height="127" src="/images/158983791/management.png?1364632905" /></p>

<h3>Archive Iteration</h3>

<p>The iterations gradually increase as time goes on. So we have created archiving iteration function for the users to archive old iterations to make users focus on the recent working iterations. And also you could toggle to view or hide the archived iterations when you needed.</p>

<p><img title="Archive Iteration" alt="Archive Iteration" width="244" height="160" src="/blog/images/158983791/archive.png?1364632875" /></p>
<p><img title="Archive Iteration" alt="Archive Iteration" width="244" height="160" src="/images/158983791/archive.png?1364632875" /></p>

<h3>Relative timestamp in Notifications</h3>

<p>Now it&rsquo;s possible for you to get up to the speed of your project with Notifications and Activity Feed. It&rsquo;s simpler now! We have modified the notifications design to show the comparative timestamp which can give a quick peek to gear up. We also opened source the library on github.</p>

<p><img title="Relative timestamp in Notification" alt="Notifications" width="240" height="155" src="/blog/images/158983791/notification.png?1364632825" /></p>
<p><img title="Relative timestamp in Notification" alt="Notifications" width="240" height="155" src="/images/158983791/notification.png?1364632825" /></p>

<h3>Clickable Web Notification</h3>

<p>Web notification is one of the best ways to improve the communication! It allows you to focus on the project by the same time you can receive instant notifications when anything is changed and updated. And now we move one step further, when you click these bubble notifications, it directs you to the iteration/ticket/comment where the notification is changed and updated.</p>

<p><img title="Clickable Web Notification" alt="Web Notification" width="240" height="80" src="/blog/images/158983791/webnotification.png?1364632825" /></p>
<p><img title="Clickable Web Notification" alt="Web Notification" width="240" height="80" src="/images/158983791/webnotification.png?1364632825" /></p>

<h3>Mention @somebody to bring people into the discussion</h3>

<p>Want to bring somebody into the discussion? Why to think how? When you mention ‘@’followed by the person’s name in the comment by the user; particular person will be notified instantly and will be subscribed for the future updates regarding the same discussion. Still we&rsquo;re working on betterment of notification controls that can let the users receive the relevant events updates only.</p>

<p><img title="Mention" alt="Mention" width="240" height="117" src="/blog/images/158983791/mention.png?1364632825" /></p>
<p><img title="Mention" alt="Mention" width="240" height="117" src="/images/158983791/mention.png?1364632825" /></p>

<h3>Internal Connections among tickets</h3>

<p>Tickets are connected! Just by adding &lsquo;#&rsquo; with ticket ID into any descriptions or comments you can auto link the ticket. By connecting the tickets, you can easily see the dependencies, duplications and related tickets at a glance. It&rsquo;s just a start and more is on its way.</p>

<p><img title="Internal Connections among tickets" alt="Connection among tickets" width="240" height="88" src="/blog/images/158983791/ticket-link.png?1364632825" /></p>
<p><img title="Internal Connections among tickets" alt="Connection among tickets" width="240" height="88" src="/images/158983791/ticket-link.png?1364632825" /></p>

<p><br/></p>

Expand Down
Binary file modified 158983791/index.html.gz
Binary file not shown.
35 changes: 19 additions & 16 deletions a-practical-guide-to-use-spinejs-in-real-worl/index.html
Expand Up @@ -40,18 +40,21 @@
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<link href="/blog/stylesheets/application.css?1392193221" media="screen" rel="stylesheet" type="text/css" />
<script src="/blog/javascripts/application.js?1392188988" type="text/javascript"></script>
<link href="/stylesheets/application.css?1392193221" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/application.js?1392188988" type="text/javascript"></script>



<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js"></script>
<script type="text/javascript">var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-4054156-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();</script>

<!-- start Mixpanel -->
<script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"===e.location.protocol?"https:":"http:")+'//cdn.mxpnl.com/libs/mixpanel-2.2.min.js';f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f);b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==
typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" ");for(g=0;g<i.length;g++)f(c,i[g]);
b._i.push([a,e,d])};b.__SV=1.2}})(document,window.mixpanel||[]);
mixpanel.init("43a596021773ee49e7b13713d89c9875");</script>
<!-- end Mixpanel -->


</head>

Expand Down Expand Up @@ -96,15 +99,15 @@ <h1 class="blog-name">「风车协作」官方博客</h1>

<header>
<h2 class="title">
<a href="/blog/a-practical-guide-to-use-spinejs-in-real-worl">A Practical Guide to Use Spine.JS in Real World App</a>
<a href="/a-practical-guide-to-use-spinejs-in-real-worl">A Practical Guide to Use Spine.JS in Real World App</a>
</h2>
</header>

<aside>
<ul class="meta">
<li class="author-photo">
<a href="http://yedingding.com">
<img alt="" width="120" height="120" src="/blog/images/dingding-ye.png?1379005285" />
<img alt="" width="120" height="120" src="/images/dingding-ye.png?1379005285" />
</a>
</li>
<li class="author">
Expand All @@ -115,17 +118,17 @@ <h2 class="title">
</li>
<li class="tags">

<a href="/blog/tags/spinejs">SpineJS</a>
<a href="/tags/spinejs">SpineJS</a>

<a href="/blog/tags/javascript-mvc">JavaScript MVC</a>
<a href="/tags/javascript-mvc">JavaScript MVC</a>

<a href="/blog/tags/javascript">JavaScript</a>
<a href="/tags/javascript">JavaScript</a>

<a href="/blog/tags/spine">Spine</a>
<a href="/tags/spine">Spine</a>

</li>
<li class="back-link">
<a href="/blog">&lsaquo; 返回博客主页</a>
<a href="/">&lsaquo; 返回博客主页</a>
</li>
</ul>
</aside>
Expand Down
Binary file modified a-practical-guide-to-use-spinejs-in-real-worl/index.html.gz
Binary file not shown.
37 changes: 20 additions & 17 deletions announcing-mailsviewer-a-rails-engine-to-view/index.html
Expand Up @@ -40,18 +40,21 @@
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<link href="/blog/stylesheets/application.css?1392193221" media="screen" rel="stylesheet" type="text/css" />
<script src="/blog/javascripts/application.js?1392188988" type="text/javascript"></script>
<link href="/stylesheets/application.css?1392193221" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/application.js?1392188988" type="text/javascript"></script>



<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js"></script>
<script type="text/javascript">var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-4054156-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();</script>

<!-- start Mixpanel -->
<script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"===e.location.protocol?"https:":"http:")+'//cdn.mxpnl.com/libs/mixpanel-2.2.min.js';f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f);b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==
typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" ");for(g=0;g<i.length;g++)f(c,i[g]);
b._i.push([a,e,d])};b.__SV=1.2}})(document,window.mixpanel||[]);
mixpanel.init("43a596021773ee49e7b13713d89c9875");</script>
<!-- end Mixpanel -->


</head>

Expand Down Expand Up @@ -96,15 +99,15 @@ <h1 class="blog-name">「风车协作」官方博客</h1>

<header>
<h2 class="title">
<a href="/blog/announcing-mailsviewer-a-rails-engine-to-view">Announcing mails_viewer - easiest way to test mails in Rails app</a>
<a href="/announcing-mailsviewer-a-rails-engine-to-view">Announcing mails_viewer - easiest way to test mails in Rails app</a>
</h2>
</header>

<aside>
<ul class="meta">
<li class="author-photo">
<a href="http://yedingding.com">
<img alt="" width="120" height="120" src="/blog/images/dingding-ye.png?1379005285" />
<img alt="" width="120" height="120" src="/images/dingding-ye.png?1379005285" />
</a>
</li>
<li class="author">
Expand All @@ -115,17 +118,17 @@ <h2 class="title">
</li>
<li class="tags">

<a href="/blog/tags/open-source">open source</a>
<a href="/tags/open-source">open source</a>

<a href="/blog/tags/rails">rails</a>
<a href="/tags/rails">rails</a>

<a href="/blog/tags/mail">mail</a>
<a href="/tags/mail">mail</a>

<a href="/blog/tags/engine">engine</a>
<a href="/tags/engine">engine</a>

</li>
<li class="back-link">
<a href="/blog">&lsaquo; 返回博客主页</a>
<a href="/">&lsaquo; 返回博客主页</a>
</li>
</ul>
</aside>
Expand All @@ -147,7 +150,7 @@ <h2 class="title">

<p>We feel the same pain at <a href="https://fengche.co">Pragmatic.ly</a> and that&rsquo;s why we built <a href="https://github.com/pragmaticly/mails_viewer">mails_viewer</a>, a mails preview Engine which provides a table view for all mails under tmp/mails. It&rsquo;s a fork of tomlion&rsquo;s <a href="https://github.com/tomlion/mails_viewer">original code</a> and I&rsquo;m glad to be the maintainer. Thanks for tomlion for getting this thing started!</p>

<p><img title="Mails Viewer" alt="mails_viewer" width="680" height="30" src="/blog/images/announcing-mailsviewer-a-rails-engine-to-view/mails-viewer.png?1364633119" /></p>
<p><img title="Mails Viewer" alt="mails_viewer" width="680" height="30" src="/images/announcing-mailsviewer-a-rails-engine-to-view/mails-viewer.png?1364633119" /></p>

<p>Generally speaking, mails_viewer is a Rails engine. So it&rsquo;s very easy to integrate it into your rails apps. And it depends on the file delivery method of ActionMailer.</p>

Expand Down
Binary file modified announcing-mailsviewer-a-rails-engine-to-view/index.html.gz
Binary file not shown.

0 comments on commit c90d6c9

Please sign in to comment.